­

newSQL 到底是什麼?

  • 2019 年 12 月 15 日
  • 筆記

資料庫發展至今已經有3代了:

  1. SQL,傳統關係型資料庫,例如 MySQL
  2. noSQL,例如 MongoDB
  3. 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

Home

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