關(guān)系數(shù)據(jù)庫的根本問題分析及數(shù)據(jù)庫革命之走向
關(guān)系數(shù)據(jù)庫相信大家都不陌生,而有關(guān)關(guān)系數(shù)據(jù)庫將落伍,數(shù)據(jù)庫革命即將來臨的預(yù)言,近日也傳出不少了。一說起數(shù)據(jù)庫,大多數(shù)情況下就等于在說關(guān)系型數(shù)據(jù)庫(RDBMS),關(guān)系數(shù)據(jù)庫都使用SQL查詢語言作為訪問數(shù)據(jù)庫,有些簡單的產(chǎn)品直接運(yùn)行在桌面機(jī)上,但如果你在服務(wù)器上部署用于重要的業(yè)務(wù)計(jì)算的數(shù)據(jù)庫,就必須要大型關(guān)系數(shù)據(jù)庫,如果有錢的話可以購買成熟的Oracle,SQL Server,DB2等商業(yè)產(chǎn)品,如果沒有預(yù)算或資金不足,可以使用開源的數(shù)據(jù)庫,如MySQL和PostgreSQL。
關(guān)系數(shù)據(jù)庫在多個(gè)表中存儲(chǔ)數(shù)據(jù),表與表之間使用外鍵進(jìn)行關(guān)聯(lián)。關(guān)系數(shù)據(jù)庫一詞源于在IBM工作的Edgar Codd在1970發(fā)表的一篇論文?;谶@個(gè)數(shù)據(jù)庫模型的產(chǎn)品很快就代替了許多層次型和其它技術(shù)種類的數(shù)據(jù)庫。雖然它的性能還比不上替代品,但在數(shù)據(jù)布局,添加和訪問方面卻更加靈活。
得益于計(jì)算機(jī)處理速度越來越快(RDBMS也在許多方面得到了增強(qiáng)),后臺(tái)進(jìn)程的性能得到了顯著提升,但關(guān)系數(shù)據(jù)庫的缺點(diǎn)暴露得越來越多,對(duì)象數(shù)據(jù)庫正欲取代關(guān)系數(shù)據(jù)庫,但在相當(dāng)長的一段內(nèi)它們將會(huì)并存。隨著真正大規(guī)模分布式計(jì)算基礎(chǔ)設(shè)施的完善,即使RDBMS不會(huì)被新興技術(shù)取代,但很多新興技術(shù)都會(huì)作為其一個(gè)補(bǔ)充。
關(guān)系數(shù)據(jù)庫的根本問題
RDBMS最根本的問題是它的處理架構(gòu)和存儲(chǔ),所有事務(wù)都是絕對(duì)可靠的(ACID,原子性,一致性,隔離和耐用性,它是一套用來描述性能要求的術(shù)語),這對(duì)于金融系統(tǒng)是絕好的解決方案,提款時(shí)要立即返回銀行存款余額,系統(tǒng)要防止同一時(shí)間偶然發(fā)生從同一余額提款多次。假設(shè)數(shù)據(jù)要保存很長一段時(shí)間,RDBMS及其關(guān)聯(lián)的基礎(chǔ)架構(gòu)也要支持才行,在傳統(tǒng)數(shù)據(jù)庫角色背景下它的意義非凡,不僅是商務(wù)上想保存幾年甚至更長時(shí)間,按照法律要求也要保存多年。
但我們在大型分布式系統(tǒng)中看到的是越來越多地使用替代方法,這些方法不要求嚴(yán)格的一致性或產(chǎn)生大量的不需要***保存的中間結(jié)果,它們也可以使用復(fù)制提高性能和可用性。
數(shù)據(jù)庫革命:SimpleDB?
亞馬遜CTO在一篇文章中談到,先容忍不一致以提高讀寫性能和高并發(fā)處理行為,然后采取一種方法實(shí)現(xiàn)最終一致性。
亞馬遜的SimpleDB就實(shí)現(xiàn)了這種模式,它保持每個(gè)域的多個(gè)副本,當(dāng)數(shù)據(jù)寫入或更新(使用PutAttributes,DeleteAttributes,CreateDomain或DeleteDomain)時(shí)如果返回成功,則所有數(shù)據(jù)的副本都會(huì)被更新,但要將更新傳播到所有存儲(chǔ)位置是需要時(shí)間的,數(shù)據(jù)最終將會(huì)一致,但立即的讀取操作可能看不到***的修改。
數(shù)據(jù)庫革命:Terracotta,Memcached
我們看到許多產(chǎn)品本質(zhì)上是通過增加RDBMS的數(shù)量來減少它們需要存儲(chǔ)的數(shù)據(jù)的容量,Terracotta是一款商業(yè)產(chǎn)品,它可以為Java應(yīng)用提供分布式緩存,Terracotta說它們一般可以卸下40-60%的事務(wù),性能自然提高了很多。
Memcached是一款類似的開源分布式內(nèi)存緩存系統(tǒng),它將數(shù)據(jù)(連同相關(guān)的結(jié)構(gòu))分布到多個(gè)系統(tǒng),以減少訪問數(shù)據(jù)存儲(chǔ),它廣泛用于大型網(wǎng)站,如Twitter,YouTube和Wikimedia。
但這些技術(shù)不能象RDBMS取代傳統(tǒng)層次數(shù)據(jù)庫那樣取代RDBMS,相反,它們會(huì)權(quán)衡那些在數(shù)據(jù)庫中不是非必需的特性,如完全一致性。
目前許多應(yīng)用比傳統(tǒng)業(yè)務(wù)應(yīng)用程序更多地使用異步和讀密集技術(shù),面需要跨多個(gè)系統(tǒng)實(shí)現(xiàn)高性能。要為組織實(shí)施這種應(yīng)用,配對(duì)的RDBMS和各種各樣的分布式數(shù)據(jù)存儲(chǔ),只有可伸縮的方法才是唯一出路,同時(shí)需要考慮一個(gè)價(jià)格平衡點(diǎn)才使業(yè)務(wù)發(fā)展具有重要意義。
【編輯推薦】