<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ∪∩deniable Design

    個人JAVA版GAE(google app engine),struts2+jpa+jQuery開發,互相交流 http://iunbug.appspot.com/
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    [推薦]數據庫已死

    Posted on 2008-09-28 22:50 ∪∩BUG 閱讀(410) 評論(3)  編輯  收藏 所屬分類: Database學習筆記
    這些天都在學習,上J道突然發現了這篇文章,當時心里咯噔一下.......


    現代軟件和以往傳統軟件主要區別在于:現代軟件基于internet互聯網技術,運行于開放的網絡環境,不象傳統軟件只是運行在封閉的局域網,運行環境的區別就決定了軟件操作用戶的多少,在一個開放互聯網環境, 你的軟件系統用戶是不斷增長,特別是那些對所有人群開放的社區網站系統,更是承受前所未有的訪問負載。那么,這些軟件系統承受的壓力主要會集中在軟件的哪個環節呢?如果你使用傳統軟件的設計思路,那么無疑壓力都集中在數據庫上。

      隨著用戶的爆發量增長,在某個凌晨醒來時,你發現:數據庫已死。

      傳統軟件系統實則應該叫數據庫軟件系統,是一個數據庫系統,開發這樣的系統非常簡單,成本 也非常低廉,只要根據需求先設計好數據表結構,然后,就找一些大學畢業生寫大量SQL語句,雖然還使用 JAVA/PHP/.NET等語言,但實際上這些語言只是將SQL送往數據庫執行的運輸工,沒有什么價值和地位。

      所以,這樣的系統運行在互聯網環境下以后,主要負載就集中在數據庫的SQL運行上,也就是說:整個軟件系統性能關鍵點就集中在數據庫上了,數據庫是性能主角,是王者;雖然你購置了昂貴的Websphere/weblogic等應用服務器,但是由于Java只是運輸工,根本起不到性能上負載分擔的作用。

      著名的社區網站MySpace就是因為一個好的idea,用戶瘋狂增長,但是系統卻不能平滑承受增長的用戶訪問,這些用戶訪問網站緩慢、無法訪問甚至丟失數據,他們經過幾次傷筋動骨的架構升級,在微軟SQLServer直接技術支持下, 好容易才勉強應付過去。看看他們痛苦經歷,你是否也愿意再來一次呢?詳細情況: http://www.jdon.com/jivejdon/thread/34601.html

      從中可以看出,數據庫性能微調和挖潛總是有限度的,對數據庫性能優化提高性能的步伐永遠趕不上用戶增長量, 有人也提出數據庫集群的概念,其實數據庫集群是一個騙人概念,一般只是備份,在集群數量和failover上有制約, 否則,數據庫巨頭Oracle不會跑到JavaEE陣營搖旗吶喊,還最早推出EJB3服務器,并揚言要收購JavaEE過去老大 Bea Weblogic。

      很顯然,數據庫成已經為軟件系統的主要性能瓶頸了,單純依靠數據庫自救的方式已經行不通,是宣布數據庫退出主角時候了,那么由誰來宣布:教皇數據庫已死?無疑是Java。

      Java社區早在本世紀初就提出中間件概念,用以取代數據庫地位,實則就是將軟件系統主要負載從數據庫上轉移到中間件服務器上,分擔負載。 也就是說:Java社區提出:既然數據庫已經成為瓶頸,修修補補也無濟于事,不如放棄它,不再依賴它。

      也就是說:Java不再做SQL的運輸工,不再是跑龍套的了,而是主角,那么如何讓Java成為主角呢?那必須依賴對象這個概念,對象是生活在中間件服務器內存中,它又是數據庫數據的業務封裝,它和數據庫有著 千絲萬縷的關系,但是它又和關系數據庫存在天然矛盾,兩者水火不容。

      過去,我們是將業務邏輯寫成SQL送往數據庫執行,導致數據庫成為業務邏輯主要運行瓶頸,那么,如果我們將 業務邏輯用對象概念表達,而不是SQL,那么我們的業務邏輯就圍繞內存中的對象反復計算,這樣,負載不是集中在 對象運行的中間件服務器上(也就是應用服務器Weblogic/websphere/JBoss/Tomcat)?而對象/中間件都是用Java 語言表達的,無疑,這樣的架構,Java才成為主角。

      再進一步想想:如果我們從軟件系統開始之初,就使用對象分析設計,不與數據庫沾邊,整個流程就完全OO,分析設計直至代碼都擺脫了數據庫影響,這個流程如下:

      分析建模 細化設計(通過Evans DDD) 架構設計 代碼實現 調試測試 部署運行。

      那么數據庫在什么時候建立呢?數據庫表結構的創建可以延緩到部署運行時,由Hibernate/EJB CMP/JPA等ORM技術自動實現。這樣, 整個上游環節就不涉及數據庫技術,而是使用更符合自然的表達OO方式,軟件質量就更高了。我在J道網站已經大量闡述了如何從OO分析 到OO實現的過程,包括我的Jdon框架也直接支持這樣一個自然方式。

      現在,很多人已經理解,分析設計要用OO,但是數據庫是運行階段缺少不了的,確實,這是正確觀點,我們奪取數據庫的王位,不是將它打倒,只是理性和平移交權力重心而已,數據庫退出主角地位,讓位于Java中間件,也預示著過去數據庫為王的時代的結束, 但是數據庫會和操作系統一樣,成為我們現代軟件系統一個不可缺少重要的基礎環節。

      正是基于這樣事實,雖然我早在2005年喊出“數據庫時代的終結一文,回帖長達幾百貼, 大部分是懷疑論,不信論,由此可見,由于傳統觀點影響和不及時與國際新思想同步,國內數據庫保皇派還是有相當人數的。我BanQ人微言輕,拋出這些觀點被保皇派譏諷為所瘋話,那么看看,著名ORM框架Hibernate和SEAM框架創始人Gavin King的一段觀點:

      In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. 數據庫成為了大多數企業應用的主要瓶頸,也成為了運行環境中最不具伸縮性的層。... PHP/Ruby的用戶會說什么都不共享(share nothing)的架構照樣具有很好的伸縮性,.... 這些傻瓜真正想的是“除了數據庫以外什么都不共享(Share nothing except for the database)”的架構。更多參看這里

      所謂伸縮性,就是彈性,整個軟件架構既支持小負載運行,也支持大負載支持,只要增加服務器即可; 由于軟件系統負載已經從SQL轉移到內存中的對象上,那么我們就可以通過增加這些應用服務器數量,通過分布式計算甚至云計算,達到業務對象在多臺應用服務器之間傳遞共享,而不必通過數據庫這個環節,既減輕數據庫負載,又能輕松擴充性能,不必走 集中試大型主機之路,只要添置低廉PC服務器即可。經過權威測試:websphere/weblogic的20臺PC服務器集群性能不亞于一臺SUN/IBM的中型機,性價比已經一目了然了。

      JavaEE的服務器的集群相對于Linux等操作系統集群的好處在于:JavaEE集群能夠針對某個繁忙負載大的具體業務功能進行集群,換句話說: 就是做到精確制導,精確解決問題,而顯然,Linux操作系統的集群則無法直至業務核心的。

      從另外一個方面看:雖然現在PHP號稱走上對象路線,Ruby的鐵軌開始鋪進企業,但是他們的運行環境實則依賴數據庫的, 特別是Ruby On Rails還是最適合Evans DDD對象建模路線,但是目前來講還是"披著羊皮的狼",批著DDD,實則是以數據庫中心。當然相信 ROR等將來會提供分布式計算環境,但是JavaEE在2002年時就通過EJB以及分布式緩存成熟穩定地提供分布式計算的中間件,并且已經大量成熟應用。

      本文結束以前,我相信大家明白,在眾多語言平臺競爭中,為什么Java能夠擊敗過去拳王數據庫,奪得新的拳王冠軍,以及他的特點所在。有人可能會說:你忘記談.NET了,這個不用我回答你,用微軟中國董事長張亞勤的話回答:8年前.NET戰略很天真, 你會將你的重要業務企業計算依賴一個很天真不成熟的技術嗎?除非你自己也很天真:)。
    進入原文:http://www.jdon.com/artichect/dbdead.htm


    評論

    # re: [推薦]數據庫已死  回復  更多評論   

    2008-09-28 23:11 by trace
    嚇人啊.不過中間件是趨勢

    # re: [推薦]數據庫已死  回復  更多評論   

    2008-09-29 11:24 by ∪∩BUG
    @trace
    其實我倒是覺得很合理,終于可以用JAVA實現了,速度得到解決.

    # re: [推薦]數據庫已死  回復  更多評論   

    2008-09-29 16:21 by sitinspring
    板橋的作品總是那么振聾發聵。
    主站蜘蛛池模板: 免费夜色污私人影院网站电影| 亚洲最大成人网色香蕉| 特级毛片A级毛片100免费播放 | 免费在线观看的网站| 亚洲国产精品乱码在线观看97| 亚洲免费视频网站| 久久久久亚洲av无码专区| 最近的中文字幕大全免费8| 91亚洲一区二区在线观看不卡| 中文字幕视频免费| 91亚洲自偷在线观看国产馆| 人成午夜免费视频在线观看| 亚洲欧洲无码一区二区三区| 国产福利免费观看| www免费插插视频| 亚洲图片一区二区| 免费精品国产自产拍在线观看图片| 99999久久久久久亚洲| 日韩在线免费看网站| 国产精品99爱免费视频| 久久亚洲国产中v天仙www | 毛片a级毛片免费观看品善网| 中文字幕乱码亚洲无线三区| 国产免费变态视频网址网站| 一级毛片免费不卡直观看| 亚洲av女电影网| 国内外成人免费视频| 国产免费久久精品丫丫| 亚洲黄色在线观看视频| 日韩电影免费在线观看视频| 国产va免费观看| 亚洲国产精品日韩在线观看| 浮力影院第一页小视频国产在线观看免费| 污污免费在线观看| 亚洲黄色免费网址| 中文字幕亚洲色图| 国产91在线免费| 丁香花在线视频观看免费| 久久亚洲精品无码aⅴ大香| 精品久久免费视频| 99视频在线免费观看|