<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開發(fā),互相交流 http://iunbug.appspot.com/

    [推薦]數(shù)據(jù)庫已死

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


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

      隨著用戶的爆發(fā)量增長,在某個凌晨醒來時,你發(fā)現(xiàn):數(shù)據(jù)庫已死。

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

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

      著名的社區(qū)網(wǎng)站MySpace就是因為一個好的idea,用戶瘋狂增長,但是系統(tǒng)卻不能平滑承受增長的用戶訪問,這些用戶訪問網(wǎng)站緩慢、無法訪問甚至丟失數(shù)據(jù),他們經(jīng)過幾次傷筋動骨的架構(gòu)升級,在微軟SQLServer直接技術(shù)支持下, 好容易才勉強(qiáng)應(yīng)付過去??纯此麄兺纯嘟?jīng)歷,你是否也愿意再來一次呢?詳細(xì)情況: http://www.jdon.com/jivejdon/thread/34601.html

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

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

      Java社區(qū)早在本世紀(jì)初就提出中間件概念,用以取代數(shù)據(jù)庫地位,實則就是將軟件系統(tǒng)主要負(fù)載從數(shù)據(jù)庫上轉(zhuǎn)移到中間件服務(wù)器上,分擔(dān)負(fù)載。 也就是說:Java社區(qū)提出:既然數(shù)據(jù)庫已經(jīng)成為瓶頸,修修補(bǔ)補(bǔ)也無濟(jì)于事,不如放棄它,不再依賴它。

      也就是說:Java不再做SQL的運(yùn)輸工,不再是跑龍?zhí)椎牧耍侵鹘牵敲慈绾巫孞ava成為主角呢?那必須依賴對象這個概念,對象是生活在中間件服務(wù)器內(nèi)存中,它又是數(shù)據(jù)庫數(shù)據(jù)的業(yè)務(wù)封裝,它和數(shù)據(jù)庫有著 千絲萬縷的關(guān)系,但是它又和關(guān)系數(shù)據(jù)庫存在天然矛盾,兩者水火不容。

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

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

      分析建模 細(xì)化設(shè)計(通過Evans DDD) 架構(gòu)設(shè)計 代碼實現(xiàn) 調(diào)試測試 部署運(yùn)行。

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

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

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

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

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

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

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

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


    評論

    # re: [推薦]數(shù)據(jù)庫已死  回復(fù)  更多評論   

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

    # re: [推薦]數(shù)據(jù)庫已死  回復(fù)  更多評論   

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

    # re: [推薦]數(shù)據(jù)庫已死  回復(fù)  更多評論   

    2008-09-29 16:21 by sitinspring
    板橋的作品總是那么振聾發(fā)聵。
    主站蜘蛛池模板: 亚洲AV成人一区二区三区观看 | 久久99精品免费视频| 亚洲一区二区观看播放| 日本亚洲视频在线| 国产成人无码区免费A∨视频网站| 无码A级毛片免费视频内谢| 337p日本欧洲亚洲大胆人人| 亚洲精品国产第1页| 亚洲综合另类小说色区| 国产视频精品免费| 美女视频黄的全免费视频网站| a毛看片免费观看视频| 免费人人潮人人爽一区二区 | 国产成人无码免费视频97| 中文字幕av无码无卡免费| 91av视频免费在线观看| 曰批全过程免费视频在线观看无码| 青娱乐在线免费观看视频| 亚洲精品无码久久久久YW| 亚洲一级毛片在线观| 亚洲视频免费在线播放| 久久精品7亚洲午夜a| 亚洲午夜久久久久妓女影院| 免费在线观看黄色毛片| 国产精品久久久久影院免费| 啦啦啦手机完整免费高清观看| 久久精品无码一区二区三区免费| 真实国产乱子伦精品免费| 免费无码一区二区三区| 久久成人免费电影| 九九热久久免费视频| 色老头综合免费视频| 亚洲乱亚洲乱妇24p| 亚洲大码熟女在线观看| 亚洲国产91在线| 亚洲激情视频图片| 亚洲特级aaaaaa毛片| 久久精品国产亚洲AV麻豆~| 亚洲国产精品无码久久久秋霞2| 亚洲国产主播精品极品网红 | 亚洲成AV人片在线观看WWW|