數據庫發展至今已經有3代了:sql
互聯網在本世紀初開始迅速發展,互聯網應用的用戶規模、數據量都愈來愈大,而且要求7X24小時在線。數據庫
傳統關係型數據庫在這種環境下成爲了瓶頸,一般有2種解決方法:api
雖然提高了性能,但總有天花板。服務器
對單點數據庫進行數據分片,存放到由廉價機器組成的分佈式的集羣裏。架構
可擴展性更好了,但也帶來了新的麻煩。分佈式
之前在一個庫裏的數據,如今跨了多個庫,應用系統不能本身去多個庫中操做,須要使用數據庫分片中間件。性能
分片中間件作簡單的數據操做時還好,但涉及到跨庫join、跨庫事務時就很頭疼了,不少人乾脆本身在業務層處理,複雜度較高。大數據
後來 noSQL 出現了,放棄了傳統SQL的強事務保證和關係模型,重點放在數據庫的高可用性和可擴展性。spa
noSQL 的主要優點:架構設計
noSQL 不保證強一致性,對於普通應用沒問題,但仍是有很多像金融同樣的企業級應用有強一致性的需求。
並且 noSQL 不支持 SQL 語句,兼容性是個大問題,不一樣的 noSQL 數據庫都有本身的 api 操做數據,比較複雜。
newSQL 提供了與 noSQL 相同的可擴展性,並且仍基於關係模型,還保留了極其成熟的 SQL 做爲查詢語言,保證了ACID事務特性。
簡單來說,newSQL 就是在傳統關係型數據庫上集成了 noSQL 強大的可擴展性。
傳統的SQL架構設計基因中是沒有分佈式的,而 newSQL 生於雲時代,天生就是分佈式架構。
noSQL 的主要特性:
VoltDB
ClustrixDB
http : //www.clustrix.com/
MemSQL
ScaleDB
http : //scaledb.com/
TiDB
參考資料:
https://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf