導(dǎo)讀:MoreSQL(之前的NewSQL)旨在將SQL和NoSQL的優(yōu)勢(shì)結(jié)合起來(lái)。通過(guò)技術(shù)整合,MoreSQL完全可以在SQL(Structured Query Language)的基礎(chǔ)上吸收NoSQL的靈活性、可擴(kuò)展性等優(yōu)點(diǎn),迎來(lái)關(guān)系型數(shù)據(jù)庫(kù)的黃金時(shí)代。
NoSQL運(yùn)動(dòng)的興起
長(zhǎng)期以來(lái),業(yè)界一直認(rèn)為關(guān)系數(shù)據(jù)庫(kù)查詢中的JOIN命令會(huì)對(duì)性能造成不良影響。
雖然MySQL中的ISAM存儲(chǔ)引擎不支持事務(wù)處理和容錯(cuò),是一個(gè)不可信存儲(chǔ)引擎,但是由于ISAM存儲(chǔ)引擎訪問(wèn)速度極快,加之MySQL的價(jià)格優(yōu)勢(shì),因此備受青睞。然而,CAP定理證明了大家心中的疑慮,關(guān)系型數(shù)據(jù)庫(kù)缺乏擴(kuò)展性。
關(guān)于MapReduce、分布式數(shù)據(jù)存儲(chǔ)以及擴(kuò)展性問(wèn)題,Google發(fā)布了一系列論文。隨后,Amazon也加入了討論。不久之后,大家都參與進(jìn)來(lái),一時(shí)間沸沸揚(yáng)揚(yáng)。
NoSQL運(yùn)動(dòng)的正是源于以Google、Amazon為代表的互聯(lián)網(wǎng)公司。
Tenzing SQL:Google在MapReduce框架上的SQL實(shí)現(xiàn)
Tenzing是一個(gè)構(gòu)建在MapReduce框架之上的查詢引擎,被Google用于特定的數(shù)據(jù)分析。Tenzing通過(guò)擴(kuò)展支持近乎完整的SQL實(shí)現(xiàn),并整合了一系列關(guān)鍵特性,如高性能、可擴(kuò)展性、可靠性、低延遲、分列存儲(chǔ)、結(jié)構(gòu)化數(shù)據(jù)支持等等。
Google在自己的分布式數(shù)據(jù)存儲(chǔ)上運(yùn)行SQL,并使用特殊的方式處理棘手的問(wèn)題(如JOIN)。現(xiàn)在Google內(nèi)部有1000名以上的員工在使用Tenzing,每天在超過(guò)1.5PB的壓縮數(shù)據(jù)之上處理10000多次查詢請(qǐng)求。
為何選擇MoreSQL
Google引領(lǐng)了網(wǎng)絡(luò)分布式計(jì)算發(fā)展潮流。主流開(kāi)發(fā)者關(guān)注Tenzing SQL,并涉足基于Hadoop之上的SQL層面,只是時(shí)間問(wèn)題。
與此同時(shí),PostgreSQL仍在高速發(fā)展,大家往往忽略了它的Key-value存儲(chǔ)設(shè)計(jì)。
Google的一個(gè)獨(dú)立開(kāi)發(fā)團(tuán)隊(duì),也許就是Chrome開(kāi)發(fā)團(tuán)隊(duì),將一個(gè)名為L(zhǎng)evelDB的Key-value存儲(chǔ)實(shí)現(xiàn)開(kāi)放了源代碼。LevelDB是一種高效的Key-value存儲(chǔ)實(shí)現(xiàn),并提供有序的字符串鍵值映射關(guān)系??梢韵胂?,一個(gè)全新的開(kāi)源分布式SQL數(shù)據(jù)存儲(chǔ)將會(huì)使用LevelDB存儲(chǔ)引擎。
最令人振奮的是Fractal Tree數(shù)據(jù)庫(kù)。大家都在數(shù)據(jù)庫(kù)中使用B和B+樹(shù),甚至在文件系統(tǒng)中也有它們的身影。學(xué)術(shù)界中有一些人在Fractal Tree技術(shù)的基礎(chǔ)上開(kāi)發(fā)了商業(yè)化的TokuDB,據(jù)說(shuō)其性能可提高20到80倍。
根據(jù)我個(gè)人的性能評(píng)測(cè),開(kāi)啟任意一種可靠性設(shè)置之后,每個(gè)數(shù)據(jù)存儲(chǔ)區(qū)的插入速度大致在每秒5K左右。如果在同樣的情況下,可以將插入速度提高到20K甚至更快,那真是太令人振奮了!
關(guān)于性能問(wèn)題,我們?cè)賮?lái)談?wù)凮RM(對(duì)象關(guān)系映射)。從情感上講,我并不信任ORM。據(jù)我所知,PostgreSQL的異步驅(qū)動(dòng)可以在處理復(fù)雜查詢的同時(shí),對(duì)其進(jìn)行重新排序和合并,但我依然懷疑其編譯器是否足夠智能。
通過(guò)實(shí)驗(yàn),我發(fā)現(xiàn)即使增加更多負(fù)荷,使用自己的代碼緩存數(shù)據(jù)庫(kù)交互,并進(jìn)行重排序和合并操作的效率也是各種方式中最高的。ORM做不到這些。為了獲得更好的性能,我們可能會(huì)去除不必要的抽象層,自己編寫(xiě)查詢語(yǔ)句,因?yàn)橹挥形覀冎罃?shù)據(jù)庫(kù)端的架構(gòu)。也只有我們自己,才是最智能的編譯器。
雖然NOSQL具備更好的靈活性和可擴(kuò)展性,但它也有自己的局限性。不使用SQL,NoSQL缺少了與數(shù)學(xué)緊密結(jié)合的高度機(jī)構(gòu)化查詢能力,而且,NoSQL也不支持ACID(原子性,一致性,隔離性,持久性)。
MoreSQL(之前的NewSQL)旨在將SQL和NoSQL的優(yōu)勢(shì)結(jié)合起來(lái)。通過(guò)技術(shù)整合,MoreSQL完全可以在SQL(Structured Query Language)的基礎(chǔ)上吸收NoSQL的靈活性、可擴(kuò)展性等優(yōu)點(diǎn),迎來(lái)關(guān)系型數(shù)據(jù)庫(kù)的黃金時(shí)代。
未來(lái)十年:MoreSQL的黃金時(shí)代
我認(rèn)為,下一個(gè)十年當(dāng)然是網(wǎng)絡(luò)的十年,但也是我們?cè)跀U(kuò)展性問(wèn)題上重新認(rèn)識(shí)JOIN的十年。未來(lái)十年,我們會(huì)重新加入到SQL的復(fù)興(MoreSQL運(yùn)動(dòng))中來(lái)!
當(dāng)然,Google在這期間肯定會(huì)發(fā)布新的論文,那時(shí)也許會(huì)為我們指引不同的方向。這是風(fēng)險(xiǎn),但也值得期待?。◤堉酒?編譯)
原文鏈接:http://williamedwardscoder.tumblr.com/post/16399069781/google-moresql-is-real
Tenzing SQL:http://research.google.com/pubs/pub37200.html