newSQL 究竟是什麼?

數據庫發展至今已經有3代了:sql

  1. SQL,傳統關係型數據庫,例如 MySQL
  2. noSQL,例如 MongoDB
  3. newSQL

SQL 的問題

互聯網在本世紀初開始迅速發展,互聯網應用的用戶規模、數據量都愈來愈大,而且要求7X24小時在線。數據庫

傳統關係型數據庫在這種環境下成爲了瓶頸,一般有2種解決方法:api

  • 升級服務器硬件

雖然提高了性能,但總有天花板。服務器

  • 數據分片,使用分佈式集羣結構

對單點數據庫進行數據分片,存放到由廉價機器組成的分佈式的集羣裏。架構

可擴展性更好了,但也帶來了新的麻煩。分佈式

之前在一個庫裏的數據,如今跨了多個庫,應用系統不能本身去多個庫中操做,須要使用數據庫分片中間件。性能

分片中間件作簡單的數據操做時還好,但涉及到跨庫join、跨庫事務時就很頭疼了,不少人乾脆本身在業務層處理,複雜度較高。大數據

noSQL 的優點與不足

後來 noSQL 出現了,放棄了傳統SQL的強事務保證和關係模型,重點放在數據庫的高可用性和可擴展性。spa

noSQL 的主要優點:架構設計

  • 高可用性和可擴展性,自動分區,輕鬆擴展
  • 不保證強一致性,性能大幅提高
  • 沒有關係模型的限制,極其靈活

noSQL 不保證強一致性,對於普通應用沒問題,但仍是有很多像金融同樣的企業級應用有強一致性的需求。

並且 noSQL 不支持 SQL 語句,兼容性是個大問題,不一樣的 noSQL 數據庫都有本身的 api 操做數據,比較複雜。

newSQL 特性

newSQL 提供了與 noSQL 相同的可擴展性,並且仍基於關係模型,還保留了極其成熟的 SQL 做爲查詢語言,保證了ACID事務特性。

簡單來說,newSQL 就是在傳統關係型數據庫上集成了 noSQL 強大的可擴展性。

傳統的SQL架構設計基因中是沒有分佈式的,而 newSQL 生於雲時代,天生就是分佈式架構。

noSQL 的主要特性:

  • SQL 支持,支持複雜查詢和大數據分析。
  • 支持 ACID 事務,支持隔離級別。
  • 彈性伸縮,擴容縮容對於業務層徹底透明。
  • 高可用,自動容災。

主流newSQL項目

VoltDB

http://voltdb.com/

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

相關文章
相關標籤/搜索