SQL,NoSQL和NewSQL的區別


 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也能夠滿足一定場景中的業務需求。

從NoSQL到NewSQL數據庫

OldSql:傳統關系型數據庫

NewSql:也是關系型數據庫,吸收了傳統關系型數據庫和NoSql數據庫的優點。可實現強一致性(傳統關系型DB優點),具有強的水平可擴展性(NoSql DB優點)

NoSql:面向互聯網應用,如web2.0,半結構化,非結構化數據的存儲

圖5-6 大數據引發數據處理架構變革

圖5-7 關系數據庫、NoSQL和NewSQL數據庫產品分類圖

 

SQL

SQL是關系型數據庫管理系統(RDBMS),顧名思義,它是圍繞關系代數和元組關系演算構建的。 70年代以來,它一直是主要的數據庫解決方案,只是最近才有了其他產品的空間。 不管有些人說什么,這意味着它一直能出色地執行廣泛的任務。 其主要優點如下:

  • 不同的角色(開發者,用戶,數據庫管理員)使用相同的語言。
  • 不同的RDBMS使用統一標准的語言。
  • SQL使用一種高級的非結構化查詢語言。.
  • 它堅持 ACID 准則 (原子性,一致性,隔離性,持久性),,這些准則保證了數據庫尤其是每個事務的穩定性,安全性和可預測性。

如你所見,許多SQL的好處來源於它的統一性,舒適性和易用性。 即使你只有非常有限的SQL知識(或完全沒有,如果需要),你可以在像 online SQL Query Builder 這樣的特殊工具幫助下使用它。

然而,它的缺點使得它非常不適合某些類型的項目。 SQL的主要問題是它難以擴展,因為它的性能隨着數據庫的變大而快速下降。 分布式也是有問題的。

NoSQL和NewSQL出現的原因之一是,以前的RDBMS的設計不能滿足現代數據庫每秒處理的事務數量。 像亞馬遜或阿里巴巴等需要處理驚人數據量的巨頭,以前的RDBMS會在幾分鍾內出現問題。

NoSQL (Not Only SQL)

NoSQL越來越受歡迎,其中最重要的實現是Apache Cassandra,MongoDB等產品。 它主要用於解決SQL的可擴展性問題。 因此,它是沒有架構的並且建立在分布式系統上,這使得它易於擴展和分片。

然而,這些好處是以放寬ACID原則為代價的:NoSQL采取最終一致性原則,而不是所有四個參數在每個事務中保持一致。 這意味着如果在特定時間段內沒有特定數據項的更新,則最終對其所有的訪問都將返回最后更新的值。 這就是這樣的系統通常被描述為提供基本保證的原因(基本可用,軟狀態,最終一致性) — 而不是ACID。

雖然這個方案極大地增加了可用時間和伸縮性,它也會導致數據丟失----這個問題的嚴重程度取決於數據庫服務器的支持情況和應用代碼質量.在某些情況下,這個問題十分嚴重.

另一個NoSQL出現的問題是現在有很多類型的NoSQL系統,但它們之間卻幾乎沒有一致性.諸如靈活性,性能,復雜性,伸縮性等等特性在不同系統間差別巨大,這使得甚至是專家在他們之間都很難選擇.不過,當你根據項目特點作出了合適的選擇,NoSQL可以在不顯著丟失穩定性的情況下提供一個遠比SQL系統更高效的解決方案.

NewSQL

NewSQL是一種相對較新的形式,旨在使用現有的編程語言和以前不可用的技術來結合SQL和NoSQL中最好的部分。 NewSQL目標是將SQL的ACID保證與NoSQL的可擴展性和高性能相結合。

顯然,因為結合了過去僅單獨存在的優點,NewSQL看起來很有前途; 或許,在未來的某個時候,它將成為大多數人使用的標准。 不幸的是,目前大多數NewSQL數據庫都是專有軟件或僅適用於特定場景,這顯然限制了新技術的普及和應用。

除此之外,NewSQL在每個方面比較均勻,每個解決方案都有自己的缺點和優勢。 例如,SAP HANA可以輕松處理低到中等的事務性工作負載,但不使用本機集群,MemSQL對於集群分析很有用,但在ACID事務上表現出較差的一致性,等等。 因此,在這些解決方案變得真正普及之前,可能還需要一段時間。


免責聲明!

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



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