newSQL 到底是什麼?
- 2019 年 12 月 15 日
- 筆記
資料庫發展至今已經有3代了:
- SQL,傳統關係型資料庫,例如 MySQL
- noSQL,例如 MongoDB
- newSQL
SQL 的問題
互聯網在本世紀初開始迅速發展,互聯網應用的用戶規模、數據量都越來越大,並且要求7X24小時在線。
傳統關係型資料庫在這種環境下成為了瓶頸,通常有2種解決方法:
- 升級伺服器硬體
雖然提升了性能,但總有天花板。
- 數據分片,使用分散式集群結構
對單點資料庫進行數據分片,存放到由廉價機器組成的分散式的集群里。
可擴展性更好了,但也帶來了新的麻煩。
以前在一個庫里的數據,現在跨了多個庫,應用系統不能自己去多個庫中操作,需要使用資料庫分片中間件。
分片中間件做簡單的數據操作時還好,但涉及到跨庫join、跨庫事務時就很頭疼了,很多人乾脆自己在業務層處理,複雜度較高。
noSQL 的優勢與不足
後來 noSQL 出現了,放棄了傳統SQL的強事務保證和關係模型,重點放在資料庫的高可用性和可擴展性。
noSQL 的主要優勢:
- 高可用性和可擴展性,自動分區,輕鬆擴展
- 不保證強一致性,性能大幅提升
- 沒有關係模型的限制,極其靈活
noSQL 不保證強一致性,對於普通應用沒問題,但還是有不少像金融一樣的企業級應用有強一致性的需求。
而且 noSQL 不支援 SQL 語句,兼容性是個大問題,不同的 noSQL 資料庫都有自己的 api 操作數據,比較複雜。
newSQL 特性
newSQL 提供了與 noSQL 相同的可擴展性,而且仍基於關係模型,還保留了極其成熟的 SQL 作為查詢語言,保證了ACID事務特性。
簡單來講,newSQL 就是在傳統關係型資料庫上集成了 noSQL 強大的可擴展性。
傳統的SQL架構設計基因中是沒有分散式的,而 newSQL 生於雲時代,天生就是分散式架構。
noSQL 的主要特性:
- SQL 支援,支援複雜查詢和大數據分析。
- 支援 ACID 事務,支援隔離級別。
- 彈性伸縮,擴容縮容對於業務層完全透明。
- 高可用,自動容災。

主流newSQL項目
VoltDB
ClustrixDB
http : //www.clustrix.com/
MemSQL
http://www.memsql.com/
ScaleDB
http : //scaledb.com/
TiDB
https://pingcap.com/
參考資料:
https://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf