CouchDB 教程


閱讀(79.1k) 收藏 (2)

手冊簡介

CouchDB是一個開源的面向文檔的數(shù)據(jù)庫管理系統(tǒng),建立于 C++ 之上。因為是開源軟件,因此允許根據(jù)需求修改該軟件,下面就來學習一下CouchDB教程。

手冊說明

CouchDB教程

2011-03-11-10-31-03

本教程提供了有關CouchDB的簡要知識,設置它的過程以及使用cURL和Futon與CouchDB服務器交互的方法。 它還介紹如何創(chuàng)建,更新和刪除數(shù)據(jù)庫和文檔。

適用人群

本教程幫助專業(yè)人士在大數(shù)據(jù)和NoSQL數(shù)據(jù)庫,特別是文檔存儲做事業(yè)。

學習前提

在開始執(zhí)行本教程之前,我們假設您對大數(shù)據(jù),Hadoop有一個簡短的了解,并且還對數(shù)據(jù)庫有基本的了解。

CouchDB 介紹

數(shù)據(jù)庫管理系統(tǒng)提供了數(shù)據(jù)存儲和檢索的機制。有兩種主要類型的數(shù)據(jù)庫管理系統(tǒng),即:RDBMS和NoSQL

RDBMS

RDBMS代表關系數(shù)據(jù)庫管理系統(tǒng)。 RDBMS是SQL和所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)(如MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access)的基礎。
關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)是基于E.F.Codd介紹的關系模型的數(shù)據(jù)庫管理系統(tǒng)(DBMS)。
RDBMS中的數(shù)據(jù)存儲在稱為表的數(shù)據(jù)庫對象中。該表是相關數(shù)據(jù)條目的集合,它由列和行組成。它只存儲結構化數(shù)據(jù)。

NoSQL數(shù)據(jù)庫

NoSQL數(shù)據(jù)庫(有時稱為“不只是SQL”)是一種數(shù)據(jù)庫,它提供一種機制來存儲和檢索數(shù)據(jù),而不是關系數(shù)據(jù)庫中使用的表格關系。這些數(shù)據(jù)庫是無模式的,支持輕松復制,具有簡單的API,最終一致,并且可以處理大量數(shù)據(jù)(大數(shù)據(jù))。
NoSQL數(shù)據(jù)庫的具有以下特征:
1、簡單的設計
2、水平縮放
3、更好地控制可用性。
與關系數(shù)據(jù)庫相比,NoSQL數(shù)據(jù)庫使用不同的數(shù)據(jù)結構。它使NoSQL中的一些操作更快。給定NoSQL數(shù)據(jù)庫的適用性取決于它必須解決的問題。這些數(shù)據(jù)庫存儲結構化數(shù)據(jù)和非結構化數(shù)據(jù),如音頻文件,視頻文件,文檔等。這些NoSQL數(shù)據(jù)庫分為三種類型,下面對它們進行說明。
鍵值存儲 - 這些數(shù)據(jù)庫設計用于在鍵值對中存儲數(shù)據(jù),這些數(shù)據(jù)庫不會有任何模式。在這些數(shù)據(jù)庫中,每個數(shù)據(jù)值由索引的鍵和該鍵的值組成。
示例 - BerkeleyDB,Cassandra,DynamoDB,Riak。
列存儲 - 在這些數(shù)據(jù)庫中,數(shù)據(jù)存儲在按數(shù)據(jù)列分組的單元格中,這些列進一步分組為列族。這些列族可以包含任意數(shù)量的列。
示例 - BigTable,HBase和HyperTable。
文檔存儲 - 這些是基于鍵值存儲的基本思想開發(fā)的數(shù)據(jù)庫,其中“文檔”包含更復雜的數(shù)據(jù)。這里,為每個文檔分配唯一的鍵,用于檢索文檔。它們用于存儲,檢索和管理面向文檔的信息,也稱為半結構化數(shù)據(jù)。
示例 - CouchDB和MongoDB。

什么是CouchDB?

CouchDB是由Apache軟件基金會開發(fā)的一個開源數(shù)據(jù)庫。重點是易于使用,擁抱網(wǎng)絡。它是一個NoSQL文檔存儲數(shù)據(jù)庫。
它使用JSON,存儲數(shù)據(jù)(文檔),使用java腳本作為其查詢語言來轉換文檔,使用http協(xié)議為api訪問文檔,使用Web瀏覽器查詢索引。它是一個多主應用程序在2005年發(fā)布,它成為一個apache項目在2008年。

為什么選擇CouchDB?

CouchDB有一個基于HTTP的REST API,它有助于與數(shù)據(jù)庫輕松地通信。而HTTP資源和方法(GET,PUT,DELETE)的簡單結構很容易理解和使用。
當我們將數(shù)據(jù)存儲在靈活的基于文檔的結構中時,不需要擔心數(shù)據(jù)的結構。
用戶提供強大的數(shù)據(jù)映射,允許查詢,組合和過濾信息。
CouchDB提供易于使用的復制,可以在數(shù)據(jù)庫和機器之間復制,共享和同步數(shù)據(jù)。

數(shù)據(jù)模型

數(shù)據(jù)庫是CouchDB中最外層的數(shù)據(jù)結構/容器。
每個數(shù)據(jù)庫都是獨立文檔的集合。
每個文檔都維護自己的數(shù)據(jù)和自包含模式。
文檔元數(shù)據(jù)包含修訂信息,這使得可以合并數(shù)據(jù)庫斷開時發(fā)生的差異。
CouchDB實現(xiàn)多版本并發(fā)控制,以避免在寫入期間鎖定數(shù)據(jù)庫字段。

CouchDB的特點

文檔存儲
CouchDB是一個文檔存儲NoSQL數(shù)據(jù)庫。文檔是數(shù)據(jù)的主要單位,每個字段都是唯一命名的,并且包含各種數(shù)據(jù)類型的值,例如文本,數(shù)字,布爾值,列表等。在這些文檔中,對文本大小或元素數(shù)量沒有設置限制。
CouchDB提供了一個稱為RESTful HTTP API的API,用于讀取和更新(添加,編輯,刪除)數(shù)據(jù)庫文檔。
下面給出的是樣例JSON文檔結構,后面跟著couchDB

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

ACID屬性

CouchDB文件布局和承諾系統(tǒng)具有所有ACID屬性。
一旦數(shù)據(jù)輸入到光盤中,它將不會被覆蓋。文檔更新(添加,編輯,刪除)遵循Atomicity,即它們將完全保存或根本不保存。數(shù)據(jù)庫不會有任何部分保存或編輯的文檔。
幾乎所有這些更新都是序列化的,任何數(shù)量的客戶端都可以讀取文檔而無需等待和中斷。

壓實

壓縮是一種操作,通過刪除未使用的數(shù)據(jù)為數(shù)據(jù)庫提供額外的磁盤空間。在對特定文件執(zhí)行壓縮操作時,將創(chuàng)建一個擴展名為.compaction的文件,并將所有活動/實際數(shù)據(jù)復制(克?。┑皆撐募?,當復制過程完成后,舊文件將被丟棄。在壓縮期間數(shù)據(jù)庫保持聯(lián)機,并且允許所有更新和讀取成功完成。

視圖

CouchDB中的數(shù)據(jù)存儲在具有單個隱式結構的半結構化文檔中,但它是用于數(shù)據(jù)存儲和共享的簡單文檔模型。如果我們想要以許多不同的方式查看我們的數(shù)據(jù),我們需要一種方法來過濾,組織和報告尚未分解為表的數(shù)據(jù)。
為了解決這個問題,CouchDB提供了一個視圖模型。視圖是對數(shù)據(jù)庫中的文檔進行聚合和報告的方法,它是根據(jù)需要構建的,用于聚合,連接和報告數(shù)據(jù)庫文檔。由于視圖是動態(tài)構建的并且不會影響底層文檔,因此您可以根據(jù)需要擁有相同數(shù)據(jù)的任意數(shù)量的不同視圖表示。

歷史

CouchDB的過去的簡介如下 :
CouchDB是用Erlang編程語言編寫的。
它是由Damien Katz在2005年開始的。
CouchDB在2008年成為Apache項目。
CouchDB的當前版本是1.61。


在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號