- CouchDB 教程
- CouchDB - 首頁
- CouchDB 簡介
- CouchDB - 安裝
- CouchDB - Curl & Futon
- CouchDB - HTTP API
- CouchDB - 建立資料庫
- CouchDB - 刪除資料庫
- CouchDB - 建立文件
- CouchDB - 更新文件
- CouchDB - 刪除文件
- CouchDB - 附加檔案
- CouchDB 有用資源
- CouchDB - 快速指南
- CouchDB - 資源
- CouchDB - 討論
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。