天天看點

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

作者:墨也的筆
探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

大家好。在本文中,我們将了解什麼是 SQL 和 NoSQL 資料庫,然後我們将繼續深入了解這兩種類型,并讨論它們的優勢和用例。

什麼是 SQL / 關系資料庫?

SQL 資料庫已經使用了幾十年,它們也被稱為關系資料庫。關系資料庫以結構化表格格式(使用行和列)存儲資料。通過這種方式,可以輕松識别和檢索資料。之是以稱為關系,是因為可以通過映射字段在表之間建立關系。

SQL代表結構化查詢語言,關系資料庫管理系統使用的語言。它是一種聲明式語言,SQL 指令可以根據其功能分為 5 類,如下所示

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?
  1. 資料定義語言(DDL)
  2. 資料控制語言 (DCL)
  3. 資料操作語言 (DML)
  4. 事務控制語言 (TCL)
  5. 資料查詢語言 (DQL)

一些流行的關系資料庫是

  • MySQL
  • Oracle
  • PostgreSQL
  • Microsoft SQL Server
  • SQLite
  • MariaDB
  • IBM DB2

關系資料庫中的 ACID 屬性

關系資料庫遵循 ACID 原則如下

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

什麼是 NO-SQL 資料庫?

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

NoSQL 代表不僅是 SQL 資料庫,任何非關系資料庫都屬于 NoSQL 資料庫。這些資料庫是非表格的,并且以不同于關系資料庫的方式存儲資料。資料模型是靈活的。NoSQL 資料庫的出現主要是由于處理大資料、物聯網等。大多數 NO-SQL 資料庫不遵循 ACID 原則,但它們遵循 BASE 以獲得其他好處,如可擴充性和彈性。

基本屬性

NoSQL 資料庫依賴于一種稱為 BASE 模型的模型。BASE(基本A可用,S頻繁狀态,E最終一緻性)。

基本可用:資料庫始終可用,保證資料的可用性。任何請求都會有回應。

軟狀态:系統狀态會随時間改變

最終一緻性:一旦資料跨分布式叢集同步,系統最終會變得一緻

No-SQL 資料庫的類型

No-SQL資料庫可以分為以下4種類型

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?
  1. 鍵值資料庫

這種類型的資料庫中的資料存儲在鍵/值對中以處理大量資料。他們使用簡單的哈希表資料結構來存儲資料,以便更快地存儲和檢索。Key-Value 資料庫基于 Amazon 的 Dynamo 論文。此類資料庫的用例用于存儲購物車、緩存等。

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

Key-Value 資料庫示例:Redis、Memcached、AWS DynamoDB、Riak 等

2. 基于文檔的資料庫

面向文檔的 NoSQL DB 将資料存儲和檢索為鍵值對,但值部分存儲為文檔。文檔可以以 JSON 或 XML 格式存儲;該值被資料庫了解并且可以被查詢。尤其是當您事先不知道架構并且稍後可以靈活添加列時,可以使用這些資料庫。

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

基于文檔的資料庫主要用于 CMS 系統、部落格平台、實時分析和電子商務應用程式。

基于文檔的資料庫示例:MongoDB、CouchBase、RavenDB 等

3. 列式資料庫

基于列的資料庫在列上工作,并且基于 Google 的 BigTable 論文。在這個資料庫中,每一列都是單獨處理的,單列資料庫的值是連續存儲的。與關系資料庫不同,在同一個表中,列的名稱和格式可以因行而異。

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

上圖示範了單行有多個列,每個列都有不同的類型。讓我們通過下面的例子來了解。每行都有不同的列。第一條記錄的行鍵是 Bob,列是電子郵件、性别和年齡。是以,一行中存在多列

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

如果資料計算并存儲在列中,則基于列的資料庫可在 SUM、COUNT、AVG 和 MIN 等聚合查詢上提供高性能。這些資料庫對于資料分析、大資料、資料倉庫、商業智能、CRM 等非常有用

基于列的資料庫示例:Casandra、CosmoDB、Bigtable 和 HBase。

4. 基于圖的資料庫

圖資料庫将實體以及這些實體之間的關系存儲為具有節點和邊的圖。節點存儲有關資料實體的資訊,邊存儲有關節點之間關系的資訊。每個節點和邊都有一個唯一的辨別符。

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

圖資料庫本質上是多關系的,周遊關系很快,因為它們已經被捕獲到資料庫中,是以我們不需要每次都重新計算

Graph 基礎資料庫為社交網絡、物流和地理空間資料提供了很好的用例。

基于圖形的資料庫示例 Amazon Neptune、Polyglot、Neo4J、Infinite Graph、OrientDB、FlockDB

SQL 和 No-SQL 資料庫之間的差別

了解了上面的 SQL 和 No-SQL 資料庫,現在讓我們比較一下兩者之間的差別

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

何時使用 SQL 與 NoSQL 資料庫?

資料庫的選擇取決于用例。如果資料是結構化的,那麼你可以選擇關系資料庫,如果資料模式不明确或不确定,那麼 NoSQL 是一個不錯的選擇。正如我們在上面看到的不同類型的 NoSQL 資料庫中,NoSQL 資料庫适用于文章、視訊、社交媒體内容、大資料等。NoSQL 資料庫不能替代 SQL DB,因為功能不同并且兩者可以在同一應用程式中共存。

混合 SQL 和 NoSQL 資料庫

有一種資料庫類型稱為NewSQL 資料庫,它是 SQL 和 NoSQL 資料庫的混合體。這是一個有趣的概念,它将關系資料庫和 NoSQL 資料庫方法結合在一個資料庫執行個體中。下圖描述了 SQL、NoSQL 和 NewSQL 資料庫的功能

探索SQL 與 NO-SQL 資料庫-到底有啥不一樣呢?

NewSQL資料庫的例子

  • Clustrix
  • CockroachDB
  • Spanner
  • H-Store
  • HyPer
  • MemSQL
  • NuoDB
  • Hana
  • VoltDB

如今,現代 SQL 資料庫采用了一種混合方法,您可以在關系模型和 NoSQL 模型之間進行選擇。例如,MySQL、MS SQL Server、Informix、Oracle 和 PostgreSQL 都支援 JSON 資料格式。

在本文中,我們了解了 SQL(關系)和 NoSQL(非關系)資料庫。我們看到了不同類型的 NoSQL 資料庫,然後比較了 SQL 和 NoSQL 資料庫。我們通過一個名為 NewSQL 的混合資料庫得出結論

希望你學得很好,感謝閱讀本文

繼續閱讀