CouchDB 教程


閱讀(78.6k) 收藏 (2)

手冊簡介

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

手冊說明

CouchDB教程

2011-03-11-10-31-03

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

適用人群

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

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

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

CouchDB 介紹

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

RDBMS

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

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

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

什么是CouchDB?

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

為什么選擇CouchDB?

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

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

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

CouchDB的特點(diǎn)

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

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

ACID屬性

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

壓實(shí)

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

視圖

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

歷史

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


在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號