CouchDB 簡介



資料庫管理系統提供資料儲存和檢索機制。資料庫管理系統主要分為三種類型:RDBMS(關係型資料庫管理系統)、OLAP(聯機分析處理系統)和 NoSQL。

RDBMS

RDBMS 代表關係型資料庫管理系統。RDBMS 是 SQL 的基礎,也是所有現代資料庫系統(如 MS SQL Server、IBM DB2、Oracle、MySQL 和 Microsoft Access)的基礎。

關係型資料庫管理系統 (RDBMS) 是一種基於 E. F. Codd 引入的關係模型的資料庫管理系統 (DBMS)。

RDBMS 中的資料儲存在稱為的資料庫物件中。表是相關資料條目的集合,它由列和行組成。它只儲存結構化資料。

OLAP

聯機分析處理伺服器 (OLAP) 基於多維資料模型。它允許管理人員和分析師透過快速、一致和互動的方式訪問資訊來深入瞭解資訊。

NoSQL 資料庫

NoSQL 資料庫(有時也稱為 Not Only SQL)是一種資料庫,它提供了一種儲存和檢索資料的機制,不同於關係資料庫中使用的表格關係。這些資料庫是無模式的,支援輕鬆複製,具有簡單的 API,最終一致,並且可以處理海量資料(大資料)。

NoSQL 資料庫的主要目標如下:

  • 設計簡單;
  • 水平擴充套件;以及
  • 對可用性的更精細控制。

NoSQL 資料庫與關係資料庫相比使用不同的資料結構。這使得 NoSQL 中某些操作更快。給定 NoSQL 資料庫的適用性取決於它必須解決的問題。這些資料庫既儲存結構化資料,也儲存非結構化資料,例如音訊檔案、影片檔案、文件等。這些 NoSQL 資料庫分為三種類型,如下所述。

鍵值儲存 - 這些資料庫設計用於儲存鍵值對中的資料,並且這些資料庫沒有任何模式。在這些資料庫中,每個資料值都包含一個索引鍵及其對應的值。

示例 - BerkeleyDB、Cassandra、DynamoDB、Riak。

列儲存 - 在這些資料庫中,資料儲存在按資料列分組的單元格中,這些列進一步分組為列族。這些列族可以包含任意數量的列。

示例 - BigTable、HBase 和 HyperTable。

文件儲存 - 這些資料庫是在鍵值儲存的基本思想上開發的,其中“文件”包含更復雜的資料。在這裡,每個文件都被分配一個唯一的鍵,用於檢索文件。這些資料庫設計用於儲存、檢索和管理面向文件的資訊,也稱為半結構化資料。

示例 - CouchDB 和 MongoDB。

什麼是 CouchDB?

CouchDB 是 Apache 軟體基金會開發的一個開源資料庫。它的重點是易用性,並擁抱網路。它是一個 NoSQL 文件儲存資料庫。

它使用 JSON 儲存資料(文件),使用 JavaScript 作為其查詢語言來轉換文件,使用 HTTP 協議作為 API 來訪問文件,並使用 Web 瀏覽器查詢索引。它是一個於 2005 年釋出的多主應用程式,並於 2008 年成為 Apache 專案。

為什麼選擇 CouchDB?

  • CouchDB 具有基於 HTTP 的 REST API,這有助於輕鬆地與資料庫通訊。HTTP 資源和方法(GET、PUT、DELETE)的簡單結構易於理解和使用。

  • 由於我們將資料儲存在靈活的面向文件的結構中,因此無需擔心資料的結構。

  • 使用者可以獲得強大的資料對映功能,允許查詢、組合和過濾資訊。

  • CouchDB 提供易於使用的複製功能,您可以使用它在資料庫和機器之間複製、共享和同步資料。

資料模型

  • 資料庫是 CouchDB 中最外層的資料結構/容器。

  • 每個資料庫都是獨立文件的集合。

  • 每個文件都維護自己的資料和自包含的模式。

  • 文件元資料包含修訂資訊,這使得在資料庫斷開連線時合併發生的差異成為可能。

  • CouchDB 實現多版本併發控制,以避免在寫入過程中鎖定資料庫欄位的需要。

CouchDB 的特性:減少內容

文件儲存

CouchDB 是一個文件儲存 NoSQL 資料庫。它提供儲存具有唯一名稱的文件的功能,並且它還提供名為 RESTful HTTP API 的 API 用於讀取和更新(新增、編輯、刪除)資料庫文件。

在 CouchDB 中,文件是資料的主要單元,並且還包括元資料。文件欄位具有唯一名稱,幷包含各種型別的值(文字、數字、布林值、列表等),並且文字大小或元素計數沒有設定限制。

文件更新(新增、編輯、刪除)遵循原子性,即它們將完全儲存或根本不儲存。資料庫將沒有任何部分儲存或編輯的文件。

JSON 文件結構

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

ACID 屬性

CouchDB 將 ACID 屬性作為其特性之一。

一致性 - 一旦 CouchDB 中的資料提交,則不會修改或覆蓋此資料。因此,CouchDB 確保資料庫檔案始終處於一致狀態。

CouchDB 讀取使用多版本併發控制 (MVCC) 模型,因此客戶端將看到從讀取操作開始到結束的資料庫一致快照。

每當更新文件時,CouchDB 會將資料重新整理到磁碟,並將更新的資料庫頭寫入兩個連續且相同的塊中,構成檔案的開頭 4k,然後同步重新整理到磁碟。重新整理期間的部分更新將被丟棄。

如果在提交標頭檔案時發生故障,則先前相同的標頭檔案的生存副本將保留,確保所有先前提交的資料的一致性。除了標頭檔案區域之外,崩潰或斷電後無需進行一致性檢查或修復。

壓縮

每當資料庫檔案中浪費的空間超過一定程度時,所有活動資料都將被複制(克隆)到一個新檔案中。當複製過程完全完成後,舊檔案將被丟棄。所有這些都是由壓縮過程完成的。資料庫在壓縮期間保持線上狀態,所有更新和讀取都允許成功完成。

檢視

CouchDB 中的資料儲存在半結構化文件中,這些文件具有靈活的單個隱式結構,但它是一個用於資料儲存和共享的簡單文件模型。如果我們想以多種不同的方式檢視我們的資料,我們需要一種方法來過濾、組織和報告尚未分解成表格的資料。

為了解決這個問題,CouchDB 提供了一個檢視模型。檢視是聚合和報告資料庫中文件的方法,並且是按需構建的,用於聚合、連線和報告資料庫文件。因為檢視是動態構建的並且不會影響底層文件,所以您可以根據需要擁有儘可能多的不同檢視來表示相同的資料。

歷史

  • CouchDB 使用 Erlang 程式語言編寫。
  • 它由 Damien Katz 於 2005 年啟動。
  • CouchDB 於 2008 年成為 Apache 專案。

CouchDB 的當前版本是 1.61。

廣告
© . All rights reserved.