newSQL 到底是什么?


數據庫發展至今已經有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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM