在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ CouchDB快速入門
CouchDB刪除文檔
CouchDB修改文檔
CouchDB教程
CouchDB是什么?
CouchDB創(chuàng)建文檔
為什么使用CouchDB?
CouchDB創(chuàng)建數(shù)據(jù)庫(kù)
CouchDB安裝配置
CouchDB快速入門
CouchDB HTTP API
CouchDB刪除數(shù)據(jù)庫(kù)
CouchDB cURL
CouchDB與MongoDB比較
CouchDB的特點(diǎn)

CouchDB快速入門

Apache CouchDB數(shù)據(jù)庫(kù),它類似于Redis,Cassandra和MongoDB,也是一個(gè)NoSQL數(shù)據(jù)庫(kù)。 CouchDB將數(shù)據(jù)存儲(chǔ)為非關(guān)系性的JSON文檔。 這使得CouchDB的用戶可以以與現(xiàn)實(shí)世界相似的方式來(lái)存儲(chǔ)數(shù)據(jù)。

可以從命令行或一個(gè)叫作Futon的Web界面來(lái)管理CouchDB。 Futon可用于執(zhí)行管理任務(wù),如創(chuàng)建和操作CouchDB的數(shù)據(jù)庫(kù),文檔和用戶等。

本文章的目標(biāo)

在閱讀學(xué)習(xí)本文完后,您將學(xué)會(huì)以下知識(shí):

  • 將CouchDB安裝在運(yùn)行Ubuntu 14.04上。
  • 將Futon安裝在同一臺(tái)服務(wù)器上
  • 使用安全通道從本地機(jī)器訪問(wèn)CouchDB
  • 向CouchDB添加管理員用戶
  • 如何使用Futon執(zhí)行CouchDB的CRUD操作
  • 從命令行執(zhí)行CouchDB的CRUD操作

先決條件

請(qǐng)準(zhǔn)備/完成以下兩個(gè)先決條件:

  • Ubuntu 14.04系統(tǒng)
  • 擁有管理權(quán)限的用戶身份登錄到服務(wù)器

注意:本教程假設(shè)使用的是非root用戶,并可以執(zhí)行root用戶權(quán)限。請(qǐng)注意,如果您使用非root用戶,首次使用sudo執(zhí)行命令時(shí),系統(tǒng)將要求您輸入root用戶的密碼。

步驟1 - 準(zhǔn)備服務(wù)器

在安裝CouchDB之前,需要確保已經(jīng)設(shè)置好了服務(wù)器。

開(kāi)始更新系統(tǒng):

$ sudo apt-get update

安裝允許管理源存儲(chǔ)庫(kù)的軟件:

$ sudo apt-get install software-properties-common -y

注意:-y標(biāo)志告訴apt-get命令對(duì)安裝過(guò)程中可能出現(xiàn)的所有提示以Yes響應(yīng)。 如果您喜歡手動(dòng)響應(yīng)提示,可以刪除此標(biāo)志。

添加PPA,以從相應(yīng)的存儲(chǔ)庫(kù)獲取最新的CouchDB版本:

$ sudo add-apt-repository ppa:couchdb/stable -y

警告:在您的服務(wù)器上添加一個(gè)新的個(gè)人包存檔(PPA)時(shí),應(yīng)該非常小心。 因?yàn)槿魏稳硕伎梢詣?chuàng)建PPA,所以不能保證它是可信賴的,或者它是安全的。 在這種情況下,上述PPA是由Apache CouchDB團(tuán)隊(duì)維護(hù)的官方PPA。

經(jīng)過(guò)上一步,已經(jīng)添加了一個(gè)新的PPA,接下來(lái)需要更新系統(tǒng),使其具有最新的包信息:

$ sudo apt-get update

現(xiàn)在可以安裝CouchDB和Futon了。

步驟2 - 安裝CouchDB

如果之前有在此服務(wù)器上安裝過(guò)CouchDB,請(qǐng)先刪除現(xiàn)有版本,使用以下命令:

$ sudo apt-get remove couchdb couchdb-bin couchdb-common -yf

現(xiàn)在安裝CouchDB:

$ sudo apt-get install couchdb -y

這將在您服務(wù)器上安裝CouchDB和Futon。

默認(rèn)情況下,CouchDB在localhost上并使用端口5984運(yùn)行,可以通過(guò)從命令行運(yùn)行curl來(lái)檢索此基本信息:

$ curl localhost:5984

注意:如果沒(méi)有安裝curl程序工具,可以使用sudo apt-get install curl命令進(jìn)行安裝。

執(zhí)行上面命令請(qǐng)求,應(yīng)該得到類似于以下內(nèi)容:

{"couchdb":"Welcome","uuid":"b9dsf278cfdas743b5fdfsaafd399fas7582e","version":"1.6.1","vendor":{"name":"Ubuntu","version":"14.04"}}

現(xiàn)在可以使用curl -X PUT命令創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù):

curl -X PUT localhost:5984/new_database

執(zhí)行后返回的響應(yīng)結(jié)果如下 -

{"ok":true}

步驟3 - CouchDB安全保護(hù)

默認(rèn)情況下,安裝CouchDB時(shí)創(chuàng)建的某些文件和目錄屬于root用戶和組。 這在開(kāi)發(fā)過(guò)程中雖然不錯(cuò),但這可能是生產(chǎn)中的安全風(fēng)險(xiǎn)。

安裝CouchDB時(shí),它將創(chuàng)建一個(gè)用戶和一個(gè)名為couchdb的組。 在本節(jié)中,我們將把CouchDB文件的所有權(quán)和權(quán)限更改為couchdb用戶和組。

更改所有權(quán)控制CouchDB進(jìn)程可以訪問(wèn)內(nèi)容,并更改可以訪問(wèn)CouchDB文件和目錄的權(quán)限控制。

更改所有權(quán)和權(quán)限之前,先停止CouchDB:

$ sudo stop couchdb

更改/usr/lib/couchdb,/usr/share/couchdb和/etc/couchdb目錄, 以及/usr/bin/couchdb可執(zhí)行文件的所有權(quán),使其所有者為couchdb用戶,并且屬于couchdb組。

sudo chown -R couchdb:couchdb /usr/lib/couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb

現(xiàn)在,更改了/usr/lib/couchdb,/usr/share/couchdb和/etc/couchdb目錄, 以及/usr/bin/couchdb可執(zhí)行文件的權(quán)限,以便couchdb用戶和couchdb組可自由訪問(wèn)(到CouchDB安裝),而其他用戶不可以訪問(wèn)這些文件和目錄。

sudo chmod -R 0770 /usr/lib/couchdb /usr/share/couchdb /etc/couchdb /usr/bin/couchdb

現(xiàn)在重新啟動(dòng)CouchDB:

sudo start couchdb

CouchDB現(xiàn)在應(yīng)該啟動(dòng)并運(yùn)行,而沒(méi)有任何屬于root用戶或root組的文件或目錄。

步驟4 - 訪問(wèn)Futon

CouchDB提供了一個(gè)基于Web的方便控制面板,它叫作:Futon。從本地服務(wù)器訪問(wèn)它,將流量通過(guò)SSH連接隧道傳輸?shù)侥姆?wù)器。只有SSH登錄到您的服務(wù)器的用戶才能訪問(wèn)Futon控制面板。

要安全地連接到CouchDB(不用公開(kāi)),您可以創(chuàng)建從本地端口5984到遠(yuǎn)程服務(wù)器端口5984的SSH隧道。

可以使用以下命令在本地計(jì)算機(jī)運(yùn)行,以設(shè)置隧道:

$ ssh -L5984:127.0.0.1:5984 yiibai_user@your_server_ip

注意:請(qǐng)記住用您的用戶名替換yiibai_user,將your_server_ip替換為服務(wù)器的IP地址。

連接打開(kāi)時(shí),使用端口5984從Web瀏覽器訪問(wèn)Futon。訪問(wèn)此URL以顯示Futon頁(yè)面:

http://localhost:5984/_utils

默認(rèn)情況下,訪問(wèn)Futon的所有CouchDB用戶都具有管理權(quán)限。如在右下角所示:

可以通過(guò)點(diǎn)擊修復(fù)此(Fix this)鏈接并創(chuàng)建新管理員來(lái)更改此內(nèi)容。

步驟5 - 添加管理員用戶

現(xiàn)在已經(jīng)啟動(dòng)運(yùn)行CouchDB,可以開(kāi)始使用它了。

在創(chuàng)建管理員用戶之前,所有用戶都可以以管理權(quán)限訪問(wèn)CouchDB(盡管它們首先需要SSH訪問(wèn)服務(wù)器)。

為CouchDB創(chuàng)建管理員帳戶是一個(gè)很好的做法,以防止意外或未經(jīng)授權(quán)的數(shù)據(jù)丟失。

要執(zhí)行此操作,請(qǐng)單擊顯示在“Futon”的右下角的“修復(fù)此(Fix this)”鏈接。 這將顯示一個(gè)允許您創(chuàng)建CouchDB管理員用戶的屏幕,如下所示:

輸入用戶名和密碼:

輸入新的CouchDB用戶名和密碼后,單擊創(chuàng)建(Create)按鈕然后就創(chuàng)建新的管理員用戶。 Futon右下角的消息將通過(guò)顯示類似于以下內(nèi)容的消息來(lái)確認(rèn):

注意:創(chuàng)建管理用戶可防止未經(jīng)授權(quán)的用戶刪除和修改數(shù)據(jù)庫(kù),設(shè)計(jì)文檔和CouchDB配置。 但是,它不會(huì)阻止其它創(chuàng)建或訪問(wèn)文檔。

就這樣,有關(guān)CouchDB服務(wù)器現(xiàn)已完全配置。要了解有關(guān)使用數(shù)據(jù)庫(kù)的更多信息,請(qǐng)繼續(xù)閱讀。

下面是一條美麗的分割線…


上面是一條美麗的分割線…

從Futon執(zhí)行CRUD操作

Futon有一個(gè)非常簡(jiǎn)單但有用的用戶界面,用來(lái)執(zhí)行基本的CRUD操作(創(chuàng)建,讀取,更新和刪除)。

在本節(jié)中,我們將創(chuàng)建一個(gè)名為todos的新數(shù)據(jù)庫(kù),向其中添加一個(gè)新文檔,然后檢索,更新和刪除此文檔。

注意:如果您已創(chuàng)建管理員用戶,則必須以管理員身份登錄才能創(chuàng)建新的數(shù)據(jù)庫(kù)。

創(chuàng)建數(shù)據(jù)庫(kù)和文檔

要?jiǎng)?chuàng)建一個(gè)名為todos的新數(shù)據(jù)庫(kù),請(qǐng)單擊屏幕的左上方的創(chuàng)建數(shù)據(jù)庫(kù)(Create Database)鏈接。 這將出現(xiàn)類似如下對(duì)話框:

輸入數(shù)據(jù)庫(kù)的名稱:todos,然后單擊創(chuàng)建按鈕。

這將創(chuàng)建一個(gè)名為todos的新數(shù)據(jù)庫(kù),并轉(zhuǎn)到可以在新創(chuàng)建的數(shù)據(jù)庫(kù)中創(chuàng)建和修改文檔的頁(yè)面。

創(chuàng)建文檔

要?jiǎng)?chuàng)建新文檔,請(qǐng)單擊頁(yè)面上的“新建文檔(New Document)”鏈接。

這將打開(kāi)一個(gè)帶有新文檔的屏幕。 這個(gè)文檔默認(rèn)只有_id字段。 如果需要,您可以更改此字段的值,也可以按原樣保留。

單擊添加字段(Add Field)鏈接以向此文檔添加新字段。

如上所述,我們添加了兩個(gè)名為todo和done的字段。 默認(rèn)情況下,新字段具有空(null)值??赏ㄟ^(guò)雙擊該值以更改它。

在這個(gè)例子中,我們雙擊了todo和done的值字段,并分別輸入了Task 1和false。

輸入值后,按ENTER鍵或點(diǎn)擊字段旁邊的小綠色復(fù)選標(biāo)記來(lái)保存內(nèi)容(不這樣做會(huì)使該字段的值為空)。這應(yīng)該如下所示:

要保存文檔,請(qǐng)單擊“保存文檔(Save Document)”鏈接。 保存文檔后,您將看到已經(jīng)添加了_rev字段,如下所示:

讀取文件

單擊todos鏈接(在“概覽(Overview)”鏈接旁邊的頂部欄中)查看新創(chuàng)建的文檔,現(xiàn)在它是todos數(shù)據(jù)庫(kù)中的唯一文檔。

單擊表格中的文檔(ID)的鍵(紅色部分),以訪問(wèn)文檔詳細(xì)信息頁(yè)面。

編輯文檔

在此頁(yè)面上,可以編輯和更新文檔字段,如下:

要編輯字段值,可雙擊對(duì)應(yīng)字段并開(kāi)始編輯。

您可以刪除任何字段(除了_id和_rev字段外),添加新字段,或更改現(xiàn)有字段的值。 在這個(gè)例子中,已經(jīng)將done字段的值從false更改為true,如下所示:

刪除文檔

要?jiǎng)h除文檔,可以單擊刪除文檔鏈接,該鏈接將提示您進(jìn)行確認(rèn):

刪除(Delete)按鈕進(jìn)行確認(rèn)。

Futon將刪除文檔并跳轉(zhuǎn)到todos數(shù)據(jù)庫(kù)頁(yè)面,該頁(yè)面中文檔現(xiàn)在應(yīng)為空,確認(rèn)文檔確實(shí)已被刪除。

從命令行執(zhí)行CRUD操作

本節(jié)將說(shuō)明如何使用curl從命令行在CouchDB數(shù)據(jù)庫(kù)上執(zhí)行基本的CRUD(創(chuàng)建,讀取,更新和刪除)操作。

創(chuàng)建數(shù)據(jù)庫(kù)

如果您尚未創(chuàng)建數(shù)據(jù)庫(kù)new_database,請(qǐng)按照以下步驟現(xiàn)在來(lái)創(chuàng)建。 該命令應(yīng)從安裝CouchDB數(shù)據(jù)庫(kù)的服務(wù)器上執(zhí)行:

curl -X PUT http://localhost:5984/new_database -u "admin:password"
{"ok":true}

由于之前我們向CouchDB添加了管理員用戶,因此現(xiàn)在必須在創(chuàng)建新的數(shù)據(jù)庫(kù)時(shí)發(fā)送管理員用戶名和密碼。
結(jié)果應(yīng)如下所示:

{"ok":true}

創(chuàng)建文檔

我們先來(lái)創(chuàng)建一個(gè)新的文檔,使用以下請(qǐng)求命令:

curl -X POST -d '{"todo":"task 1", "done":false}' http://localhost:5984/new_database -H "Content-Type:application/json"

此命令將在new_database數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新文檔。

-X標(biāo)志表示執(zhí)行HTTP POST方法請(qǐng)求操作。 由于POST方法請(qǐng)求發(fā)送一個(gè)JSON文檔,所以后面的-H標(biāo)志將此請(qǐng)求的內(nèi)容類型設(shè)置為application/json。 最后,包含了JSON文檔本身,使用-d標(biāo)志。

此操作的響應(yīng)結(jié)果如下:

{"ok":true,"id":"803da996e1524591ce773d24400004ff","rev":"1-2fc1d70532433c39c9f61480607e3681"}

此響應(yīng)的部分"ok":true表示操作成功。 響應(yīng)包括分別代表文檔ID和文檔修訂的字段id和rev。 需要修改或刪除此文檔時(shí),才需要這兩個(gè)字段。

在此示例中,文檔ID由CouchDB生成,因?yàn)闆](méi)有提供該命令。 如果需要,可以創(chuàng)建一個(gè)具有生成唯一ID的文檔。

用指定的ID創(chuàng)建

創(chuàng)建一個(gè)ID為random_task的文檔:

curl -X POST -d '{"_id":"random_task", "todo":"task 2", "done":false}' http://localhost:5984/new_database -H "Content-Type:application/json"

此命令創(chuàng)建一個(gè)ID為random_task的新文檔,對(duì)此命令的響應(yīng)如下:

{"ok":true,"id":"random_task","rev":"1-bceeae3c4a9154c87db1649473316e44"}

創(chuàng)建多個(gè)文檔

除了創(chuàng)建單個(gè)文檔,還可以批量創(chuàng)建文檔。

curl -X POST -d '{"docs": [{"todo":"task 3", "done":false}, {"todo":"task 4", "done":false}]}' http://localhost:5984/new_database/_bulk_docs -H "Content-Type:application/json"

該命令將在POST正文中指定創(chuàng)建兩個(gè)文檔。 與單個(gè)文檔插入相比,有兩個(gè)微小的差異:

  1. 在插入單個(gè)文檔時(shí),POST正文只是一個(gè)標(biāo)準(zhǔn)的JSON對(duì)象。 在批量插入的情況下,POST正文包含具有文檔字段的對(duì)象。 該字段保存要插入的文檔數(shù)組。

  2. 在插入單個(gè)文檔時(shí),POST請(qǐng)求已發(fā)送到指向數(shù)據(jù)庫(kù)的URL(http://localhost:5984/new_database)。 但是,對(duì)批量插入請(qǐng)求,URL為:URL:http://localhost:5984/new_database/_bulk_docs。

批量插入操作的響應(yīng)如下:

[{"ok":true,"id":"803da996e1524591ce773d24400007df","rev":"1-778fd61f8f460d0c1df1bb174279489d"},{"ok":true,"id":"803da996e1524591ce773d2440001723","rev":"1-dc9e84861bba58e5cfefeed8f5133636"}]

讀取文件

可通過(guò)發(fā)出HTTP GET命令來(lái)從CouchDB數(shù)據(jù)庫(kù)檢索文檔?,F(xiàn)在嘗試檢索上面創(chuàng)建的一個(gè)文檔:一個(gè)叫random_task的文件。

curl -X GET http://localhost:5984/new_database/random_task

請(qǐng)注意,URL包括正在檢索的文檔的ID(random_task)。如下所示,對(duì)此GET請(qǐng)求的響應(yīng)包含整個(gè)文檔以及_id和_rev字段,可用于更新或刪除此文檔。

{"_id":"random_task","_rev":"1-bceeae3c4a9154c87db1649473316e44","todo":"task 2","done":false}

更新文檔

在要更新文檔時(shí),包含_rev字段很重要。 CouchDB將拒絕任何不包含_rev字段的更新請(qǐng)求。 由于CouchDB更新整個(gè)文檔,而不僅僅是其中的一部分,所以在更新操作期間,必須在請(qǐng)求正文中發(fā)送整個(gè)文檔。

要更新使用ID為random_task的文檔,我們需要發(fā)出HTTP PUT請(qǐng)求,如下所示:

curl -X PUT -d '{"_rev":"1-bceeae3c4a9154c87db1649473316e44", "todo":"task 2", "done":true}' http://localhost:5984/new_database/random_task

因?yàn)槊總€(gè)_rev值可能不太一樣,所以請(qǐng)確保將_rev值替換為上一個(gè)輸出中接收到的字符串。

這將修改文檔并將done字段更新為true。 對(duì)此請(qǐng)求的響應(yīng)如下:

{"ok":true,"id":"random_task","rev":"2-4cc3dfb6e76befd665faf124b36b7f1c"}

從響應(yīng)中可以看出,該指定文檔的rev字段在更新后會(huì)發(fā)生更改。 任何將來(lái)更新或刪除此文檔的請(qǐng)求現(xiàn)在都必須使用最新的rev值。

刪除文檔

使用HTTP DELETE請(qǐng)求要指定包含這個(gè)新的rev值來(lái)刪除這個(gè)文檔,如下所示:

curl -X DELETE http://localhost:5984/new_database/random_task?rev=2-4cc3dfb6e76befd665faf124b36b7f1c

就像上面的GET&PUT請(qǐng)求一樣,DELETE請(qǐng)求使用指向文檔的URL。但是,它還包括URL中的附加查詢參數(shù)。 該參數(shù)rev應(yīng)具有刪除操作成功的最新_rev值。

在這種特殊情況下,使用上一步中更新操作后返回的值。 對(duì)上述請(qǐng)求的響應(yīng)如下所示。

{"ok":true,"id":"random_task","rev":"3-07d6cde68be2a559497ec263045edc9d"}

重新啟動(dòng),停止和啟動(dòng)CouchDB服務(wù)

啟動(dòng),停止和重新啟動(dòng)CouchDB服務(wù)是非常簡(jiǎn)單的。下面我們來(lái)看看如何從服務(wù)器完成這些步驟。

重新啟動(dòng)CouchDB

要重新啟動(dòng)正在運(yùn)行的CouchDB實(shí)例,請(qǐng)執(zhí)行以下命令:

$ sudo restart couchdb

此命令將重新啟動(dòng)正在運(yùn)行的CouchDB實(shí)例并顯示新實(shí)例的進(jìn)程ID。如果沒(méi)有CouchDB的實(shí)例運(yùn)行,執(zhí)行該命令會(huì)給出一個(gè)消息:

$ restart: Unknown instance:

停止CouchDB

要停止運(yùn)行的CouchDB實(shí)例,請(qǐng)執(zhí)行以下命令:

$ sudo stop couchdb

執(zhí)行此命令將停止任何正在運(yùn)行的CouchDB實(shí)例,并提供如下所示的確認(rèn)消息:

$ couchdb stop/waiting

啟動(dòng)CouchDB

要啟動(dòng)CouchDB,請(qǐng)執(zhí)行以下命令:

$ sudo start couchdb

如果CouchDB尚未運(yùn)行,則執(zhí)行此命令將啟動(dòng)CouchDB并提供如下所示的確認(rèn)消息:

$ couchdb start/running, process 12345

如果有CouchDB實(shí)例已經(jīng)運(yùn)行,那么執(zhí)行上面的命令就會(huì)產(chǎn)生一個(gè)這樣的消息:

$ start: Job is already running: couchdb

CouchDB狀態(tài)

如果想查看CouchDB的狀態(tài),可以使用以下命令:

$ sudo status couchdb

如果CouchDB正在運(yùn)行,則會(huì)提供類似于以下內(nèi)容的消息:

$ couchdb start/running, process 12345

如果CouchDB沒(méi)有運(yùn)行,查看狀態(tài)將提示消息如下:

couchdb stop/waiting

結(jié)束

您現(xiàn)在可以在服務(wù)器上使用CouchDB的所有功能了,可以使用Futon或命令行從本地機(jī)器安全地管理CouchDB。

最后聲明:對(duì)伸手黨,需要注意的是:本教程包教不包會(huì)。