現(xiàn)今,完全放棄傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)并忙于使用新興的NoSQL數(shù)據(jù)庫(kù)可能還不是一個(gè)合理的選擇。相反改進(jìn)后的SQL(結(jié)構(gòu)化查詢(xún)語(yǔ)言)系統(tǒng)可能會(huì)對(duì)一些技術(shù)細(xì)節(jié)進(jìn)行調(diào)整。在8月23日加利福尼亞圣何塞市舉行的NoSQL 2011大會(huì)上分布式數(shù)據(jù)庫(kù)公司VoltDB的首席技術(shù)官M(fèi)ichael Stonebraker表達(dá)了上述的觀(guān)點(diǎn)。
Stonebraker所在公司本身提供的是基于NewSQL的數(shù)據(jù)庫(kù)軟件。他所倡導(dǎo)的新體系架構(gòu)比傳統(tǒng)供應(yīng)商提供的數(shù)據(jù)庫(kù)軟件可承受更大的負(fù)載。Stonebraker是Ingres和Postgres數(shù)據(jù)庫(kù)的總設(shè)計(jì)師。他還是Vertica(面向列數(shù)據(jù)庫(kù)公司)的共同創(chuàng)始人,惠普已在2月份對(duì)Vertica進(jìn)行了收購(gòu)。
相對(duì)于NoSQL蓬勃發(fā)展的情況基于SQL的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)確實(shí)顯得有些死氣沉沉。但這是數(shù)據(jù)庫(kù)廠(chǎng)商的錯(cuò),而不是SQL的錯(cuò)。
Stonebraker指出,當(dāng)今大多數(shù)商業(yè)數(shù)據(jù)庫(kù)軟件已經(jīng)在市場(chǎng)上存在30年或更長(zhǎng)時(shí)間。他們的設(shè)計(jì)并沒(méi)有圍繞自動(dòng)化、數(shù)據(jù)沉重性以及事務(wù)性環(huán)境。同時(shí)在這幾十年中不斷發(fā)展出的新功能并沒(méi)有想象中的那么好。
Stonebraker表示數(shù)據(jù)庫(kù)系統(tǒng)的滯后通常可歸結(jié)于多項(xiàng)因素。諸如以恢復(fù)日志為目的的數(shù)據(jù)庫(kù)系統(tǒng)維持的緩沖區(qū)池,以及管理鎖定和鎖定的數(shù)據(jù)字段。在VoltDB的測(cè)試中發(fā)現(xiàn)以上這些行為消耗系統(tǒng)96%的資源。
許多新興的NoSQL數(shù)據(jù)庫(kù)的普及,例如MongnDB和Cassandra。這很好的彌補(bǔ)了傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)的局限性。顧問(wèn)Dan McCreary表示關(guān)系數(shù)據(jù)庫(kù)的缺點(diǎn)刺激了開(kāi)發(fā)人員創(chuàng)建出NoSQL數(shù)據(jù)庫(kù)。關(guān)系數(shù)據(jù)庫(kù)不是很靈活,其基本架構(gòu)設(shè)計(jì)還是穿孔卡片時(shí)代,這反映了嚴(yán)格的數(shù)據(jù)建模方式。如果一個(gè)組織需要添加另一列的數(shù)據(jù),他們必須改變架構(gòu),這可能相當(dāng)棘手。建模過(guò)程中創(chuàng)建的關(guān)系表(實(shí)體模型)也并不總是能夠準(zhǔn)確的反應(yīng)數(shù)據(jù)在現(xiàn)實(shí)世界中是如何存在的。
McCreary同時(shí)指出SQL數(shù)據(jù)庫(kù)的另一個(gè)問(wèn)題是其不具備很好的伸縮性。當(dāng)數(shù)據(jù)增長(zhǎng)超過(guò)一臺(tái)服務(wù)器所能承受的極限時(shí),就必須分享或分割數(shù)據(jù)到多臺(tái)服務(wù)器上,跨越多臺(tái)服務(wù)器是一個(gè)復(fù)雜的過(guò)程。此外如外部鏈接帶來(lái)的問(wèn)題。例如多個(gè)表中數(shù)據(jù)的融合,跨越服務(wù)器執(zhí)行一些操作可能會(huì)產(chǎn)生一些問(wèn)題。
Stonebraker認(rèn)為NoSQL數(shù)據(jù)庫(kù)可提供良好的擴(kuò)展性和靈活性,但他們也有自己的不足。由于不使用SQL,NoSQL數(shù)據(jù)庫(kù)系統(tǒng)不具備高度結(jié)構(gòu)化查詢(xún)等特性。NoSQL其他的問(wèn)題還包括不能提供ACID(原子性、一致性、隔離性和耐久性)的操作。另外不同的NoSQL數(shù)據(jù)庫(kù)都有自己的查詢(xún)語(yǔ)言,這使得很難規(guī)范應(yīng)用程序接口。
Stonebraker表示NewSQL可提供SQL獨(dú)有的一些特性,同時(shí)還具備N(xiāo)oSQL的擴(kuò)展性。NewSQL具備一個(gè)新的架構(gòu)設(shè)計(jì),他釋放了主內(nèi)存運(yùn)行的數(shù)據(jù)庫(kù)中消耗系統(tǒng)資源的緩沖池。VoltDB系統(tǒng)使用了NewSQL創(chuàng)新的體系架構(gòu),在執(zhí)行交易時(shí)可比傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)快45倍。VoltDB可擴(kuò)展服務(wù)器數(shù)量為39個(gè),并可以每秒處理160萬(wàn)個(gè)交易(300個(gè)CPU核心)。而具備同樣處理能力的Hadoop則需要更多的服務(wù)器。例如做相同的任務(wù),VoltDB需要20個(gè)節(jié)點(diǎn)的任務(wù),Hadoop執(zhí)行起來(lái)則需要1000個(gè)節(jié)點(diǎn)。
DoubleClick創(chuàng)始人和MongoDB創(chuàng)始人之一Dwight Merriman與Stonebraker一致認(rèn)為SQL本身并不是導(dǎo)致可擴(kuò)展性和低性能的根源。但Dwight Merriman同時(shí)表示在未來(lái)的歲月里,可能不是所有人都愿意使用SQL分析和查詢(xún)他們的數(shù)據(jù)。因?yàn)閷?duì)于程序員來(lái)說(shuō),基于SQL的存儲(chǔ)過(guò)程是特別困難的工作。
最后McCreary也同意Stonebraker的看法,NoSQL沒(méi)有一個(gè)統(tǒng)一的查詢(xún)語(yǔ)言,這將拖慢NoSQL的發(fā)展。但他建議在新的數(shù)據(jù)庫(kù)系統(tǒng)統(tǒng)一查詢(xún)工具使用一個(gè)SQL以外的語(yǔ)言。如XQuery,一個(gè)XML文檔查詢(xún)語(yǔ)言。