NewSQL的分類
NewSQL是指一類關(guān)系型數(shù)據(jù)庫溉浙,即有NoSQL的擴(kuò)展性,又支持ACID事務(wù)。
NewSQL分成三類:New Architecture蝌数、Transparent Sharding Middleware、Database-as-a-Service贷祈。
New Architecture
分布式設(shè)架構(gòu)設(shè)計趋急,一般是share-nothing的架構(gòu),支持mutli-node concurrency control势誊、fault tolerance through replication呜达、flow control、distributed query processing粟耻。因為針對分布式環(huán)境設(shè)計查近,所以可以做的優(yōu)化空間更多,比如查詢優(yōu)化挤忙、節(jié)點(diǎn)間通信(不必依賴中間件中心節(jié)點(diǎn))等霜威。該思路下一般(Spanner不是)要自己管理數(shù)據(jù)存儲和分布,以支持將請求發(fā)到數(shù)據(jù)而不是將數(shù)據(jù)帶到請求節(jié)點(diǎn)册烈。
因為是全新的架構(gòu)戈泼,兼容和系統(tǒng)生態(tài)會是一個大問題。以我看到的情況赏僧,坦白地說大猛,這些工作都是偏離core-tech之外的dirty work。
典型系統(tǒng):Clustrix淀零、Google Spanner挽绩、H-Store、HyPer驾中、MemSQL琼牧、NuoDB、Pivotal GemFire XD哀卫、SAP HANA巨坊、VoltDB。
Transparent Sharding Middleware
中間件思路下此改,有一個中心組件用來路由請求趾撵、協(xié)調(diào)事務(wù)(應(yīng)該是協(xié)調(diào)完成分布式事務(wù))、管理數(shù)據(jù)分布共啃、副本復(fù)制占调、數(shù)據(jù)在節(jié)點(diǎn)間分區(qū)。每個節(jié)點(diǎn)上都運(yùn)行一個單機(jī)版的數(shù)據(jù)庫實例移剪,上面有一個組件用于該實例與中心組件交互究珊。整個集群對外是一個邏輯實例。
優(yōu)勢:應(yīng)用往往已經(jīng)很適合這種架構(gòu)纵苛,所以不需要做什么改動剿涮。
劣勢:單節(jié)點(diǎn)上的傳統(tǒng)數(shù)據(jù)庫是面向磁盤設(shè)計的言津,針對大內(nèi)存和多核機(jī)器無法高效利用;另外就是復(fù)雜查詢的查詢計劃和優(yōu)化在中間件和各節(jié)點(diǎn)上會有重復(fù)工作取试。
典型系統(tǒng):dbShards悬槽、MariaDB MaxScale、ScaleArc瞬浓、ScaleBase初婆。
Database-as-a-Service
云數(shù)據(jù)庫
典型系統(tǒng):Amazon Aurora、ClearDB