天天看點

NewSQL初了解

NewSQL一詞是由451 Group的分析師Matthew Aslett在研究論文中提出的。它代指對老牌資料庫廠商做出挑戰的一類新型資料庫系統。NewSQL 是對各種新的可擴充/高性能資料庫的簡稱,這類資料庫不僅具有NoSQL對海量資料的存儲管理能力,還保持了傳統資料庫支援ACID和SQL等特性。

分布式資料庫公司VoltDB的首席技術官Michael Stonebraker表示NoSQL資料庫可提供良好的擴充性和靈活性,但他們也有自己的不足。由于不使用SQL,NoSQL資料庫系統不具備高度結構化查詢等特性。NoSQL其他的問題還包括不能提供ACID(原子性、一緻性、隔離性和耐久性)的操作。另外不同的NoSQL資料庫都有自己的查詢語言,這使得很難規範應用程式接口。Stonebraker表示資料庫系統的滞後通常可歸結于多項因素。諸如以恢複日志為目的的資料庫系統維持的緩沖區池,以及管理鎖定和鎖定的資料字段。在VoltDB的測試中發現以上這些行為消耗系統96%的資源。

相對于NewSQL系統雖然在的内部結構變化很大,但是它們有兩個顯着的共同特點:(1)它們都支援關系資料模型,(2) 它們都使用SQL作為其主要的接口。已知的第一個NewSQL系統叫做H-Store,它是一個分布式并行記憶體資料庫系統。目前NewSQL系統大緻分三類:

新架構

所述第一類型的NewSQL系統是完全新的資料庫平台,它們均采取了不同的設計方法。它們大概分兩類:

(1) 這類資料庫工作在一個分布式叢集的節點上,其中每個節點擁有一個資料子集。 SQL查詢被分成查詢片段發送給自己所在的資料的節點上執行。這些資料庫可以通過添加額外的節點來線性擴充。現有的這類資料庫有: Google Spanner, VoltDB, Clustrix, NuoDB.

(2) 這些資料庫系統通常有一個單一的主節點的資料源。它們有一組節點用來做事務處理,這些節點接到特定的SQL查詢後,會把它所需的所有資料從主節點上取回來後執行SQL查詢,再傳回結果。

SQL引擎

第二類是高度優化的SQL存儲引擎。這些系統提供了MySQL相同的程式設計接口,但擴充性比内置的引擎InnoDB更好。這類資料庫系統有:TokuDB, MemSQL。

透明分片

這類系統提供了分片的中間件層,資料庫自動分割在多個節點運作。這類資料庫包擴:ScaleBase,dbShards, Scalearc。

那麼現有NewSQL系統廠商有哪些呢:

我們将包括 ( 順序随機 )Clustrix 、 GenieDB 、 ScalArc 、 Schooner 、 VoltDB 、 RethinkDB 、 ScaleDB 、 Akiban 、 CodeFutures 、 ScaleBase 、 Translattice 和 NimbusDB ,以及 Drizzle 、帶有 NDB 的 MySQL 叢集和帶有 HandlerSocket 的 MySQL 。後者包括 Tokutek 和 JustOne DB 。相關的 “NewSQL 作為一種服務 ” 類别包括亞馬遜關系資料庫服務,微軟 SQL Azure , Xeround 和 FathomDB 。