一:概念
SQL(Structured Query Language):數據庫,指關系型數據庫。主要代表:SQL Server、Oracle、MySQL、PostgreSQL。
NoSQL(Not Only SQL):泛指非關系型數據庫。主要代表:MongoDB、Redis、CouchDB。
NewSQL:對各種新的可擴展/高性能數據庫的簡稱。主要代表:Clustrix、GenieDB。
二:對比
SQL:
好處來源於它的統一性和易用性,缺點是面對大量的數據時,他的性能會隨着數據庫的增大而急劇下降。
NoSQL:
以放寬ACID原則為代價,NoSQL采取的是最終一致性原則,而不是像關系型數據庫那樣地嚴格遵守着ACID的原則,這意味着如果在特定時間段內沒有特定數據項的更新,則最終對其所有的訪問都將返回最后更新的值。 這就是這樣的系統通常被描述為提供基本保證的原因(基本可用,軟狀態,最終一致性) — 而不是ACID。
NewSQL:
NewSQL選擇汲取了SQL和NewSQL的優點,希望將ACID和可擴展性以及高性能結合,但是目前而言,不適用於所有的場景。
三:Let's think
根據CAP原則,
- Consistency(一致性)
- Availability(可用性)
- Partition tolerance(分區容錯)
這三點不能夠同時做到,所以我們可以猜想,未來的很多年里,是不會有這樣一個能夠滿足所有場景的數據庫存在,現在主流的關系型數據庫+NoSQL的組合是一種解決方案,不斷涌現出來的NewSQL也能夠滿足一定場景中的業務需求。