<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
    板橋的作品總是那么振聾發聵。
    主站蜘蛛池模板: 国产免费资源高清小视频在线观看| 免费在线看黄的网站| 成人AV免费网址在线观看| 亚洲视频一区二区三区| 国产精品视频白浆免费视频| 亚洲中文字幕日产乱码高清app| 全部一级一级毛片免费看| 国产乱人免费视频| 黄网站色成年片大免费高清| 亚洲高清偷拍一区二区三区| 成人一级免费视频| 亚洲综合国产一区二区三区| 久青草视频在线观看免费| 亚洲国产另类久久久精品| 男的把j放进女人下面视频免费| 亚洲AV无码码潮喷在线观看| 99久久精品免费视频| 18gay台湾男同亚洲男同| 真人做A免费观看| 亚洲精品无码日韩国产不卡av| 国产老女人精品免费视频| 一区二区三区免费在线视频| 久久亚洲中文字幕精品一区四| 国产精品网站在线观看免费传媒| 亚洲今日精彩视频| 成人毛片免费观看视频在线| 欧洲亚洲综合一区二区三区| 亚洲一区二区三区无码中文字幕 | 成人一a毛片免费视频| 国产精品亚洲精品爽爽| 国产精品V亚洲精品V日韩精品| 曰批全过程免费视频在线观看无码| 亚洲最大的成网4438| 性感美女视频在线观看免费精品| 国产成人亚洲综合a∨| 亚洲VA中文字幕无码一二三区 | 精品国产成人亚洲午夜福利| 免费一级毛片不卡不收费| 久久99免费视频| 亚洲国产AV无码一区二区三区| 色噜噜亚洲精品中文字幕|