CouchDB 教程


閱讀(80.8k) 收藏 (2)

手冊(cè)簡(jiǎn)介

CouchDB是一個(gè)開(kāi)源的面向文檔的數(shù)據(jù)庫(kù)管理系統(tǒng),建立于 C++ 之上。因?yàn)槭情_(kāi)源軟件,因此允許根據(jù)需求修改該軟件,下面就來(lái)學(xué)習(xí)一下CouchDB教程。

手冊(cè)說(shuō)明

CouchDB教程

2011-03-11-10-31-03

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

適用人群

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

學(xué)習(xí)前提

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

CouchDB 介紹

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

RDBMS

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

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

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

什么是CouchDB?

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

為什么選擇CouchDB?

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

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

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

CouchDB的特點(diǎn)

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

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

ACID屬性

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

壓實(shí)

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

視圖

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

歷史

CouchDB的過(guò)去的簡(jiǎn)介如下 :
CouchDB是用Erlang編程語(yǔ)言編寫的。
它是由Damien Katz在2005年開(kāi)始的。
CouchDB在2008年成為Apache項(xiàng)目。
CouchDB的當(dāng)前版本是1.61。


在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)