徐述 汪彥 曾海洋 王吉祥
摘要:本文綜述了大數(shù)據(jù)應(yīng)用下的分布式數(shù)據(jù)庫現(xiàn)狀;介紹了基于大數(shù)據(jù)的新型分布式數(shù)據(jù)庫NewSQL的定義,特點與分類;提出了NewSQL以及分布式數(shù)據(jù)庫的發(fā)展趨勢是HTAP NewSQL。
關(guān)鍵詞:大數(shù)據(jù);分布式數(shù)據(jù)庫;NewSQL;OLTP;HTAP
中圖分類號:TP311.138 文獻標(biāo)識碼:A 文章編號:1007-9416(2018)08-0051-02
隨著Internet和大數(shù)據(jù)的發(fā)展,分布式數(shù)據(jù)庫的數(shù)據(jù)管理和處理面臨新的挑戰(zhàn)。分布式數(shù)據(jù)庫進入了大數(shù)據(jù)應(yīng)用下的大規(guī)模分布處理階段。
1 大數(shù)據(jù)應(yīng)用下的分布式數(shù)據(jù)庫
1.1 大數(shù)據(jù)
大數(shù)據(jù)是指PB或更高數(shù)量級的數(shù)據(jù),包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),其規(guī)?;驈?fù)雜程度超出了傳統(tǒng)數(shù)據(jù)庫和軟件技術(shù)所能管理和處理的數(shù)據(jù)集范圍[1]。大數(shù)據(jù)具有巨量(Volume)、多樣(Variety)、快變(Velocity)和價值(Value)4V特征[2]。
大數(shù)據(jù)的應(yīng)用主要集中在兩個領(lǐng)域,一是大數(shù)據(jù)分析,是對傳統(tǒng)數(shù)據(jù)倉庫的延展,將更多的數(shù)據(jù)挖掘、更復(fù)雜的分析算法通過大數(shù)據(jù)技術(shù)來實現(xiàn);二是在線大數(shù)據(jù)訪問,將更長期的數(shù)據(jù)做到在線化、將所有大量相對靜態(tài)的數(shù)據(jù)從昂貴的存儲設(shè)備下放到大數(shù)據(jù)平臺,提供給更多的渠道進行并發(fā)實時訪問[3]。許多實際的大數(shù)據(jù)應(yīng)用二者兼有。
1.2 分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫具有CAP理論,系統(tǒng)中數(shù)據(jù)一致性C(consist-ency)、系統(tǒng)可用性A(availability)、網(wǎng)絡(luò)分區(qū)容錯性P(partition tolerance)三者不可兼得,滿足其中任意兩項便會損害第三項[2]。例如,大多數(shù)網(wǎng)站分布式數(shù)據(jù)庫架構(gòu)選擇(如京東)滿足A P,對C要求低一些。
但是,無法放棄強事務(wù)和一致性需求的應(yīng)用不能使用NoSQL,例如財務(wù)、訂單系統(tǒng)等處理復(fù)雜關(guān)聯(lián)性數(shù)據(jù)的企業(yè)級應(yīng)用。采用NoSQL會迫使程序員在應(yīng)用開發(fā)過程中花費大量精力來處理一致性以提高執(zhí)行效率。要解決這個問題,要么使用更強大的單節(jié)點機器來垂直擴展,要么開發(fā)數(shù)據(jù)分片中間件來支持事務(wù)。兩種方案都代價大,在此類應(yīng)用環(huán)境下NewSQL出現(xiàn)了。
2 NEWSQL
NewSQL[4]一詞是由451 Group分析師Matthew Aslett提出的,代指對傳統(tǒng)數(shù)據(jù)庫做出挑戰(zhàn)的一類新型分布式數(shù)據(jù)庫系統(tǒng)。
2.1 NEWSQL定義
NewSQL是一類現(xiàn)代關(guān)系型的分布式數(shù)據(jù)庫,旨在為OLTP讀寫負(fù)載提供NoSQL系統(tǒng)下相同的擴展性能,同時提供事務(wù)的ACID保證[4]。NewSQL是融合了NoSQL系統(tǒng)和傳統(tǒng)數(shù)據(jù)庫事務(wù)管理功能的新型分布式數(shù)據(jù)庫系統(tǒng),具有與NoSQL相同的可擴展性、支持關(guān)系模型和大規(guī)模并發(fā)事務(wù)、使用SQL而非API修改數(shù)據(jù)庫狀態(tài)。
2.2 NEWSQL特征
(1)主內(nèi)存存儲。使用內(nèi)存作為主存儲的好處是執(zhí)行時間短,系統(tǒng)不必假設(shè)事務(wù)需要訪問的數(shù)據(jù)不在內(nèi)存中,系統(tǒng)的性能更好。
(2)分區(qū)/分片無共享分布式架構(gòu)。分布式NewSQL水平擴展方案都是將數(shù)據(jù)庫分割成不相交的數(shù)據(jù)集,這稱之為分區(qū)或者分片。
(3)并發(fā)控制多使用MVCC協(xié)議或組合方案。在NewSQL系統(tǒng)中使用最廣泛的協(xié)議是分散式的多版本并發(fā)控制(MVCC)協(xié)議,或者兩階段鎖(2PL)協(xié)議與MVCC的組合方案。多版本控制使事務(wù)在其他事務(wù)同時更新同一數(shù)據(jù)時也能成功完成,也避免了只讀長事務(wù)阻塞寫操作。
(4)次級索引支持快速查詢。次級索引是針對表中非主鍵的屬性集建立的索引,支持主鍵以外的快速查詢。
新架構(gòu)NewSQL系統(tǒng)(見3.1)都是分散式的,使用分區(qū)次級索引。每個節(jié)點存儲索引的一部分,而不是完整的索引。查詢可能需要跨越多個節(jié)點來查找數(shù)據(jù),但如果是更新索引,只需修改一個節(jié)點。不支持次級索引的NewSQL系統(tǒng),開發(fā)人員使用分布式緩存來間接實現(xiàn)次級索引。
3 NEWSQL分類
3.1 新型架構(gòu)NewSQL
這類NewSQL系統(tǒng)是全新架構(gòu)的,設(shè)計者擺脫原有系統(tǒng)的束縛從新開始設(shè)計。這個分類的NewSQL都采用分布式架構(gòu),對無共享資源進行操作,并包含多節(jié)點并發(fā)控制,復(fù)制容錯,流控制和分布式查詢處理等組件。
新型架構(gòu)NewSQL的優(yōu)點是:(1)系統(tǒng)的所有部分都可以針對多節(jié)點環(huán)境進行優(yōu)化,如查詢優(yōu)化、節(jié)點間通信優(yōu)化等。(2)自主管理主存儲。(3)NewSQL可以使用比HDFS基于塊的復(fù)制方案更為復(fù)雜靈活的復(fù)制方案。
此類NewSQL的代表有Clustrix, Cockroach,Google Spanner,H-Store,VoltDB等。
3.2 透明數(shù)據(jù)分片中間件NewSQL
這類NewSQL重新實現(xiàn)數(shù)據(jù)分片基礎(chǔ)架構(gòu),并在此基礎(chǔ)上開發(fā)數(shù)據(jù)庫中間件。中間件負(fù)責(zé)分配查詢、協(xié)調(diào)事務(wù)、管理數(shù)據(jù)位置、復(fù)制和跨節(jié)點數(shù)據(jù)分區(qū)。對應(yīng)用來說中間件就是一個邏輯上的數(shù)據(jù)庫。
這類NewSQL的優(yōu)點是應(yīng)用無需做任何修改。
其缺點是:(1)采用面向磁盤存儲架構(gòu),很難通過提升CPU核數(shù)和內(nèi)存容量向上擴展。(2)中間件方法會導(dǎo)致在分片節(jié)點上執(zhí)行復(fù)雜查詢的時候出現(xiàn)冗余查詢和優(yōu)化操作,這時查詢在中間件執(zhí)行一次,在各個單節(jié)點上會再執(zhí)行一次。
3.3 DBaaS NewSQL(數(shù)據(jù)庫即服務(wù)NewSQL)
即云服務(wù)提供商的NewSQL方案。用戶不需要在本身硬件設(shè)備或云端虛擬機上安裝和維護數(shù)據(jù)庫管理系統(tǒng)。DBaaS提供商負(fù)責(zé)維護所有的數(shù)據(jù)庫物理機及其配置,包括系統(tǒng)優(yōu)化、復(fù)制等。交付給用戶的只是一個連接DBaaS NewSQL URL,并且基于新型架構(gòu)的DBaaS才是DBaaS NewSQL。
4 NewSQL趨勢——HTAP NewSQL
4.1 HTAP
HTAP是新一代基于內(nèi)存的數(shù)據(jù)處理模式,可以在不需要數(shù)據(jù)復(fù)制的情況下同時執(zhí)行OLTP和OLAP。內(nèi)存技術(shù)的進步使得標(biāo)準(zhǔn)業(yè)務(wù)應(yīng)用采用HTAP成為可能[5]。HTAP通過分析新數(shù)據(jù)和歷史數(shù)據(jù)的組合來完成知識推斷,獲得決策信息。相較傳統(tǒng)商業(yè)智能只能基于歷史數(shù)據(jù)進行操作,HTAP要更為先進。
在數(shù)據(jù)庫應(yīng)用里有三個方法支持HTAP:
(1)部署兩個數(shù)據(jù)處理系統(tǒng),一個專門處理事務(wù),另一個處理分析查詢;
(2)λ架構(gòu)系統(tǒng)。使用單獨的批處理系統(tǒng)(如Hadoop)計算歷史數(shù)據(jù),使用流處理系統(tǒng)(如Storm)來提供輸入數(shù)據(jù)視圖;
(3)更好的方法是使用HTAP NewSQL。
4.2 HTAP NewSQL
HTAP NewSQL是一個單一的分布式數(shù)據(jù)庫系統(tǒng),既支持高吞吐、低延遲的OLTP工作負(fù)載,又允許在事務(wù)和歷史數(shù)據(jù)上運行復(fù)雜的OLAP查詢。HTAP NewSQL結(jié)合了近年來OLTP(如內(nèi)存存儲、無鎖執(zhí)行)和OLAP(如列式存儲)領(lǐng)域的技術(shù)。
5 結(jié)語
NewSQL數(shù)據(jù)庫系統(tǒng)并不是與現(xiàn)有的系統(tǒng)架構(gòu)完全不同,而是將以前獨立地在某些數(shù)據(jù)庫系統(tǒng)中得到實現(xiàn)的技術(shù)納入一個單一平臺的系統(tǒng)。伴隨著更廉價而豐富計算資源的出現(xiàn),NewSQL系統(tǒng)的應(yīng)用范圍和前景也會更為廣泛。
參考文獻
[1]申德榮,于戈,王習(xí)特,等.支持大數(shù)據(jù)管理的NoSQL系統(tǒng)研究綜述[J].軟件學(xué)報,2013,24(8):1786-1803.
[2]王珊,薩師煊.數(shù)據(jù)庫管理系統(tǒng)概論(第5版)[M].北京:高等教育出版社,2017.
[3]王濤.大數(shù)據(jù)技術(shù)下,分布式數(shù)據(jù)庫何去何從?[J].金融科技時代,2017,(4):26-31.
[4]M Aslett. What's Really New with NewSQL?[J].ACM,2016,45(2),45-55.
[5]H Plattner. A common database approach for OLTP and OLAP using an in-memory column database[C]. Acm Sigmod International Conference on Manageme of Data. Providence,Rhode Island,USA,2009 :1-2.