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