




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、銀河麒麟服務(wù)器操作系統(tǒng)CouchDB 軟件適配手冊I目錄 HYPERLINK l _bookmark0 目錄I HYPERLINK l _bookmark1 概述2 HYPERLINK l _bookmark2 系統(tǒng)概述2 HYPERLINK l _bookmark3 環(huán)境概述2 HYPERLINK l _bookmark4 COUCHDB 軟件簡介2 HYPERLINK l _bookmark5 工作原理3 HYPERLINK l _bookmark6 文檔介紹3 HYPERLINK l _bookmark7 ACID 介紹4 HYPERLINK l _bookmark8 壓縮5 HYPER
2、LINK l _bookmark9 視圖5 HYPERLINK l _bookmark10 視圖模型5 HYPERLINK l _bookmark11 COUCHDB 軟件適配7 HYPERLINK l _bookmark12 安裝 COUCHDB 軟件7 HYPERLINK l _bookmark13 從安裝源安裝7 HYPERLINK l _bookmark14 從源碼安裝8 HYPERLINK l _bookmark15 驗(yàn)證安裝9 HYPERLINK l _bookmark16 獲取所有數(shù)據(jù)庫9 HYPERLINK l _bookmark17 創(chuàng)建數(shù)據(jù)庫9 HYPERLINK l _b
3、ookmark18 刪除數(shù)據(jù)庫9 HYPERLINK l _bookmark19 FAUXTON9 HYPERLINK l _bookmark20 創(chuàng)建數(shù)據(jù)庫和文檔9 HYPERLINK l _bookmark21 MAPREDUCE10 PAGE 9概述系統(tǒng)概述銀河麒麟服務(wù)器操作系統(tǒng)主要面向軍隊綜合電子信息系統(tǒng)、金融系統(tǒng)以及電力系統(tǒng)等國家關(guān)鍵行業(yè)的服務(wù)器應(yīng)用領(lǐng)域,突出高安全性、高可用性、高效數(shù)據(jù)處理、虛擬化等關(guān)鍵技術(shù)優(yōu)勢,針對關(guān)鍵業(yè)務(wù)構(gòu)建的豐富高效、安全可靠的功能特性,兼容適配長城、聯(lián)想、浪潮、華為、曙光等國內(nèi)主流廠商的服務(wù)器整機(jī)產(chǎn)品,以及達(dá)夢、金倉、神通、南大通用等主要國產(chǎn)數(shù)據(jù)庫和中創(chuàng)、金
4、蝶、東方通等國產(chǎn)中間件,滿足虛擬化、云計算和大數(shù)據(jù)時代,服務(wù)器業(yè)務(wù)對操作系統(tǒng)在性能、安全性及可擴(kuò)展性等方面的需求,是一款具有高安全、高可用、高可靠、高性能的自主可控服務(wù)器操作系統(tǒng)。環(huán)境概述服務(wù)器型號長城信安擎天 DF720 服務(wù)器CPU 類型飛騰 2000+處理器操作系統(tǒng)版本Kylin-4.0.2-server-sp2-2000-19050910.Z1內(nèi)核版本4.4.131CouchDB 版本1.6.0CouchDB 軟件簡介CouchDB 是用 Erlang 開發(fā)的面向文檔的數(shù)據(jù)庫系統(tǒng)。CouchDB 不是一個傳統(tǒng)的關(guān)系數(shù)據(jù)庫, 而是面向文檔的數(shù)據(jù)庫, 其數(shù)據(jù)存儲方式有點(diǎn)類似 lucene
5、的index 文件格式,CouchDB 最大的意義在于它是一個面向 web 應(yīng)用的新一代存儲系統(tǒng),事實(shí)上,CouchDB 的口號就是:下一代的 Web 應(yīng)用存儲系統(tǒng)。CouchDB 是分布式的數(shù)據(jù)庫,他可以把存儲系統(tǒng)分布到 n 臺物理的節(jié)點(diǎn)上面, 并且很好的協(xié)調(diào)和同步節(jié)點(diǎn)之間的數(shù)據(jù)讀寫一致性。這當(dāng)然也得靠 Erlang 無與倫比的并發(fā)特性才能做到。對于基于 web 的大規(guī)模應(yīng)用文檔應(yīng)用,分布式可以讓它不必像傳統(tǒng)的關(guān)系數(shù)據(jù)庫那樣分庫拆表,在應(yīng)用代碼層進(jìn)行大量的改動。CouchDB 是面向文檔的數(shù)據(jù)庫, 存儲半結(jié)構(gòu)化的數(shù)據(jù), 比較類似 lucene 的index 結(jié)構(gòu),特別適合存儲文檔,因此很適合
6、 CMS,電話本,地址本等應(yīng)用,在這些應(yīng)用場合,文檔數(shù)據(jù)庫要比關(guān)系數(shù)據(jù)庫更加方便,性能更好。CouchDB 支持 REST API,可以讓用戶使用 JavaScript 來操作 CouchDB 數(shù)據(jù)庫,也可以用 JavaScript 編寫查詢語句,我們可以想像一下,用 AJAX 技術(shù)結(jié)合CouchDB 開發(fā)出來的 CMS 系統(tǒng)會是多么的簡單和方便。工作原理CouchDB 構(gòu)建在強(qiáng)大的 B-樹儲存引擎之上。這種引擎負(fù)責(zé)對 CouchDB 中的數(shù)據(jù)進(jìn)行排序,并提供一種能夠在對數(shù)均攤時間內(nèi)執(zhí)行搜索、插入和刪除操作的機(jī)制。CouchDB 將這個引擎用于所有內(nèi)部數(shù)據(jù)、文檔和視圖。因?yàn)?CouchDB 數(shù)
7、據(jù)庫的結(jié)構(gòu)獨(dú)立于模式,所以它依賴于使用視圖創(chuàng)建文檔之間的任意關(guān)系,以及提供聚合和報告特性。使用 Map/Reduce 計算這些視圖的結(jié)果, Map/Reduce 是一種使用分布式計算來處理和生成大型數(shù)據(jù)集的模型。Map/Reduce 模型由 Google 引入,可分為 Map 和 Reduce 兩個步驟。在 Map 步驟中,由主節(jié)點(diǎn)接收文檔并將問題劃分為多個子問題。然后將這些子問題發(fā)布給工作節(jié)點(diǎn),由它處理后再將結(jié)果返回給主節(jié)點(diǎn)。在 Reduce 步驟,主節(jié)點(diǎn)接收來自工作節(jié)點(diǎn)的結(jié)果并合并它們,以獲得能夠解決最初問題的總體結(jié)果和答案。CouchDB 中的 Map/Reduce 特性生成鍵/值對,C
8、ouchDB 將它們插入到 B- 樹引擎中并根據(jù)它們的鍵進(jìn)行排序。這就能通過鍵進(jìn)行高效查找, 并且提高 B- 樹中的操作的性能。此外,這還意味著可以在多個節(jié)點(diǎn)上對數(shù)據(jù)進(jìn)行分區(qū),而不需要單獨(dú)查詢每個節(jié)點(diǎn)。傳統(tǒng)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)有時使用鎖來管理并發(fā)性,從而防止其他客戶機(jī)訪問某個客戶機(jī)正在更新的數(shù)據(jù)。這就防止多個客戶機(jī)同時更改相同的數(shù)據(jù),但對于多個客戶機(jī)同時使用一個系統(tǒng)的情況,數(shù)據(jù)庫在確定哪個客戶機(jī)應(yīng)該接收鎖并維護(hù)鎖隊列的次序時會遇到困難,這很常見。在 CouchDB 中沒有鎖機(jī)制,它使用的是多版本并發(fā)性控制(Multi version concurrency control,MVCC) 它向每個
9、客戶機(jī)提供數(shù)據(jù)庫的最新版本的快照。這意味著在提交事務(wù)之前,其他用戶不能看到更改。許多現(xiàn)代數(shù)據(jù)庫開始從鎖機(jī)制前移到 MVCC,包括 Oracle(V7 之后)和 Microsoft SQL Server 2005 及更新版本。文檔介紹Couchdb 是一個用文檔存儲數(shù)據(jù)的數(shù)據(jù)庫服務(wù)器。每個文檔在數(shù)據(jù)庫中都是唯一命名的,CouchDB 提供了一個 RESTful HTTP API,用于讀取和更新(添加、編輯、刪除)數(shù)據(jù)庫文檔。文檔是 CouchDB 中的主要數(shù)據(jù)單元,由任意數(shù)量的字段和附件組成。文檔還包括由數(shù)據(jù)庫系統(tǒng)維護(hù)的元數(shù)據(jù)。文檔字段具有唯一的名稱,并且包含各種類型的值(文本、數(shù)字、布爾值、列
10、表等),并且沒有對文本大小或元素計數(shù)的設(shè)置限制。CouchDB 文檔更新模型是無鎖的、樂觀的。文檔編輯是由客戶端應(yīng)用程序銀河麒麟服務(wù)器操作系統(tǒng) V4 CauchDB 軟件適配手冊加載文檔、應(yīng)用更改并將其保存回數(shù)據(jù)庫來完成的。如果編輯同一文檔的另一個客戶機(jī)先保存其更改,則客戶機(jī)在保存時會收到一個編輯沖突錯誤。若要解決更新沖突,可以打開最新的文檔版本,重新應(yīng)用編輯,然后重試更新。單個文檔更新(添加、編輯、刪除)要么全部成功,要么全部失敗。數(shù)據(jù)庫從不包含部分保存或編輯的文檔。ACID 介紹couchdb 文件布局和提交系統(tǒng)具有所有原子一致的隔離持久性(acid)屬性。在磁盤上,CouchDB 從不覆
11、蓋提交的數(shù)據(jù)或相關(guān)結(jié)構(gòu),確保數(shù)據(jù)庫文件始終處于一致狀態(tài)。這是一種“僅崩潰”的設(shè)計,在這種設(shè)計中,CouchDB 服務(wù)器不會經(jīng)歷關(guān)閉過程,它只能被終止。文檔更新(添加、編輯、刪除)是序列化的,但同時寫入的二進(jìn)制 blob 除外。數(shù)據(jù)庫讀卡器從不被鎖定,也不必等待編寫器或其他讀卡器。任何數(shù)量的客戶機(jī)都可以在不被鎖定或不被并發(fā)更新中斷的情況下讀取文檔, 即使是在同一文檔上。CouchDB 讀取操作使用多版本并發(fā)控制(MVCC)模型,其中每個客戶機(jī)從讀取操作的開始到結(jié)束都會看到數(shù)據(jù)庫的一致快照。這意味著 CouchDB 可以保證每個文檔的事務(wù)語義。文檔在 B 樹中按其名稱(docid)和序列 ID 進(jìn)
12、行索引。對數(shù)據(jù)庫實(shí)例的每次更新都會生成一個新的序列號。序列 ID 稍后用于增量查找數(shù)據(jù)庫中的更改。保存或刪除文檔時,這些 B 樹索引會同時更新。索引更新總是發(fā)生在文件的末尾(僅追加更新)。文檔的優(yōu)點(diǎn)是,數(shù)據(jù)已經(jīng)方便地打包存儲,而不是在大多數(shù)數(shù)據(jù)庫系統(tǒng)中跨多個表和行進(jìn)行拆分。當(dāng)文檔被提交到磁盤時,文檔字段和元數(shù)據(jù)被打包到緩沖區(qū)中,依次排列一個文檔和另一個文檔(稍后有助于有效地構(gòu)建視圖)。當(dāng) CouchDB 文檔被更新時,所有數(shù)據(jù)和相關(guān)索引都被刷新到磁盤上,事務(wù)提交總是使數(shù)據(jù)庫處于完全一致的狀態(tài)。提交分兩步進(jìn)行:所有文檔數(shù)據(jù)和相關(guān)的索引更新都同步刷新到磁盤。更新后的數(shù)據(jù)庫頭被寫入兩個連續(xù)的、相同的
13、塊中,以組成文件的第一個 4K, 然后同步刷新到磁盤。如果在步驟 1 中發(fā)生操作系統(tǒng)崩潰或電源故障,重新啟動時只會忘記部分刷新的更新。如果在步驟 2(提交頭)期間發(fā)生這種崩潰,那么將保留以前相同頭的一個保留副本,以確保以前提交的所有數(shù)據(jù)的一致性。除了收割臺區(qū)域,在發(fā)生故障或電源故障后,不需要進(jìn)行一致性檢查或修復(fù)。壓縮浪費(fèi)的空間通過偶爾的壓縮來恢復(fù)?;蛘弋?dāng)數(shù)據(jù)庫文件超過了一定的浪費(fèi)空間時,壓縮過程會將所有活動數(shù)據(jù)克隆到一個新文件中,然后丟棄舊文件。數(shù)據(jù)庫始終保持完全聯(lián)機(jī),并且允許成功完成所有更新和讀取。只有在復(fù)制了所有數(shù)據(jù)并且所有用戶都轉(zhuǎn)換到新文件時,才會刪除舊的數(shù)據(jù)庫文件。視圖ACID 只處理
14、存儲和更新,但我們還需要能夠以有趣和有用的方式顯示數(shù)據(jù)。與必須小心地將數(shù)據(jù)分解為表的 SQL 數(shù)據(jù)庫不同,CouchDB 中的數(shù)據(jù)存儲在半結(jié)構(gòu)化文檔中。CouchDB 文檔是靈活的,并且每個文檔都有自己的隱式結(jié)構(gòu),這可以緩解雙向復(fù)制表模式及其所包含數(shù)據(jù)的問題。但是,除了充當(dāng)一個奇特的文件服務(wù)器之外,一個用于數(shù)據(jù)存儲和共享的簡單文檔模型太簡單,無法在其上構(gòu)建真正的應(yīng)用程序它只是做不到我們想要和期望的足夠多的事情。我們希望以多種不同的方式對數(shù)據(jù)進(jìn)行切片和切塊。需要的是一種對尚未分解成表的數(shù)據(jù)進(jìn)行篩選、組織和報告的方法。視圖模型為了解決將結(jié)構(gòu)添加回非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的問題,CouchDB 集成了
15、一個視圖模型。 視圖是聚合和報告數(shù)據(jù)庫中文檔的方法,可根據(jù)需要構(gòu)建,以聚合,加入和報告數(shù)據(jù)庫文檔。 由于視圖是動態(tài)構(gòu)建的,并且不會影響基礎(chǔ)文檔, 因此您可以根據(jù)需要使用相同數(shù)據(jù)的多個不同視圖表示。視圖定義是嚴(yán)格虛擬的,只顯示當(dāng)前數(shù)據(jù)庫實(shí)例中的文檔,使它們與顯示的數(shù)據(jù)分開并與復(fù)制兼容。 CouchDB 視圖在特殊設(shè)計文檔中定義,可以跨數(shù)據(jù)庫實(shí)例(如常規(guī)文檔)進(jìn)行復(fù)制,因此不僅可以在 CouchDB 中復(fù)制數(shù)據(jù),而且整個應(yīng)用程序設(shè)計也可以復(fù)制。視圖索引視圖是數(shù)據(jù)庫的實(shí)際文檔內(nèi)容的動態(tài)表示,而 CouchDB 可以輕松創(chuàng)建有用的數(shù)據(jù)視圖。但是生成具有數(shù)十萬或數(shù)百萬個文檔的數(shù)據(jù)庫視圖是耗費(fèi)時間和資源的
16、,并不是系統(tǒng)每次都應(yīng)該從頭開始做的事情。為了保持視圖快速查詢,視圖引擎維護(hù)其視圖的索引,并逐步更新它們以反映數(shù)據(jù)庫中的更改。 CouchDB 的核心設(shè)計主要針對高效,漸進(jìn)式創(chuàng)建視圖及其索引的需求進(jìn)行了優(yōu)化。視圖及其功能在特殊的“設(shè)計”文檔中定義,設(shè)計文檔可以包含任意數(shù)量的唯一命名視圖函數(shù)。當(dāng)用戶打開視圖并且其索引自動更新時,同一設(shè)計文檔中的所有視圖都將編入索引為單個組。視圖構(gòu)建器使用數(shù)據(jù)庫序列 ID 來確定視圖組是否與數(shù)據(jù)庫完全一致。如果不是,則視圖引擎檢查自上次刷新以來已更改的所有數(shù)據(jù)庫文檔(按打包順序)。文檔按照它們在磁盤文件中出現(xiàn)的順序讀取, 從而降低了磁頭搜索的頻率和成本??梢酝瑫r讀取
17、和查詢視圖,同時還可以刷新視圖。如果客戶端正在慢慢地流出大視圖的內(nèi)容,則可以在不阻塞第一個客戶端的情況下為另一個客戶端同時打開和刷新相同的視圖。對于任何數(shù)量的同時客戶端讀者來說都是如此,他們可以讀取和查詢視圖,同時為其他客戶端刷新索引而不會給讀者帶來問題。由于視圖引擎通過“map”和“reduce”函數(shù)處理文檔,因此它們之前的行值將從視圖索引中刪除(如果存在)。如果文檔由視圖函數(shù)選擇,則函數(shù)結(jié)果將作為新行插入視圖中。當(dāng)視圖索引更改寫入磁盤時,更新始終附加在文件末尾,用于減少磁盤提交期間的磁頭搜索時間,并確保崩潰和電源故障不會導(dǎo)致索引損壞。如果在更新視圖索引時發(fā)生崩潰, 則不完整的索引更新將丟失
18、并從其先前提交的狀態(tài)逐步重建。安全和驗(yàn)證為了保護(hù)誰可以閱讀和更新文檔,CouchDB 有一個簡單的讀者訪問和更新驗(yàn)證模型,可以擴(kuò)展以實(shí)現(xiàn)自定義安全模型。CouchDB 數(shù)據(jù)庫實(shí)例具有管理員帳戶。 管理員帳戶可以創(chuàng)建其他管理員帳戶并更新設(shè)計文檔。 設(shè)計文檔是包含視圖定義和其他特殊公式的特殊文檔,以及常規(guī)字段和 blob。當(dāng)文檔寫入磁盤時,可以通過 JavaScript 函數(shù)動態(tài)驗(yàn)證它們的安全性和數(shù)據(jù)驗(yàn)證。 當(dāng)文檔通過所有公式驗(yàn)證標(biāo)準(zhǔn)時,允許更新繼續(xù)。 如果驗(yàn)證失敗,則更新將中止,并且用戶客戶端將收到錯誤響應(yīng)。用戶憑證和更新文檔都作為驗(yàn)證公式的輸入,并可用于通過驗(yàn)證用戶更新文檔的權(quán)限來實(shí)現(xiàn)自定義安
19、全模型?;镜摹皟H作者”更新文檔模型實(shí)現(xiàn)起來很簡單,其中驗(yàn)證文檔更新以檢查用戶是否列在現(xiàn)有文檔的“作者”字段中。 還可以使用更多動態(tài)模型,例如檢查單獨(dú)的用戶帳戶配置文件以獲取權(quán)限設(shè)置。對實(shí)時使用和復(fù)制更新強(qiáng)制執(zhí)行更新驗(yàn)證,確保在共享的分布式系統(tǒng)中進(jìn)行安全性和數(shù)據(jù)驗(yàn)證。分布式更新和復(fù)制CouchDB 是一個基于對等的分布式數(shù)據(jù)庫系統(tǒng)。它允許用戶和服務(wù)器在斷開連接時訪問和更新相同的共享數(shù)據(jù)。然后可以在以后雙向復(fù)制這些更改。CouchDB 文檔存儲,視圖和安全模型旨在協(xié)同工作,使真正的雙向復(fù)制高效可靠。文檔和設(shè)計都可以復(fù)制,允許將完整的數(shù)據(jù)庫應(yīng)用程序(包括應(yīng)用程序設(shè)計,邏輯和數(shù)據(jù))復(fù)制到筆記本電腦以
20、供脫機(jī)使用,或者復(fù)制到遠(yuǎn)程辦公室中的服務(wù)器,在這些服務(wù)器中,緩慢或不可靠的連接使共享數(shù)據(jù)變得困難。復(fù)制過程是增量的。在數(shù)據(jù)庫級別,復(fù)制僅檢查自上次復(fù)制以來更新的文檔。如果由于網(wǎng)絡(luò)問題或崩潰而導(dǎo)致復(fù)制在任何步驟失敗,則下一次復(fù)制將在最后一個檢查點(diǎn)重新啟動??梢詣?chuàng)建和維護(hù)部分副本??梢酝ㄟ^ JavaScript 函數(shù)過濾復(fù)制,以便僅復(fù)制特定文檔或滿足特定條件的文檔。這可以允許用戶將大型共享數(shù)據(jù)庫應(yīng)用程序的子集脫機(jī)以供自己使用,同時保持與應(yīng)用程序和該數(shù)據(jù)子集的正常交互。1.10.1沖突沖突檢測和管理是任何分布式編輯系統(tǒng)的關(guān)鍵問題。 CouchDB 存儲系統(tǒng)將編輯沖突視為一種常見狀態(tài),而非特殊狀態(tài)。沖
21、突處理模型簡單且“非破壞性”,同時保留單個文檔語義并允許分散的沖突解決。CouchDB 允許在數(shù)據(jù)庫中同時存在任意數(shù)量的沖突文檔,每個數(shù)據(jù)庫實(shí)例確定性地決定哪個文檔是“贏家”,哪些是沖突。只有獲勝文檔才能顯示在視圖中, 而“丟失”沖突仍然可以訪問并保留在數(shù)據(jù)庫中,直到數(shù)據(jù)庫壓縮期間被刪除或清除。由于沖突文檔仍然是常規(guī)文檔,因此它們像常規(guī)文檔一樣進(jìn)行復(fù)制,并遵循相同的安全性和驗(yàn)證規(guī)則。當(dāng)發(fā)生分布式編輯沖突時,每個數(shù)據(jù)庫副本都會看到相同的獲勝版本,并且每個副本都有機(jī)會解決沖突。解決沖突可以通過自動代理手動完成,也可以根據(jù)數(shù)據(jù)的性質(zhì)和沖突完成。系統(tǒng)可以在保持單個文檔數(shù)據(jù)庫語義的同時實(shí)現(xiàn)分散式?jīng)_突解決
22、。即使多個斷開連接的用戶或代理嘗試解決相同的沖突,沖突管理仍會繼續(xù)有效。如果已解決的沖突導(dǎo)致更多沖突,則系統(tǒng)以相同的方式容納它們,在每臺機(jī)器上確定相同的獲勝者并維護(hù)單個文檔語義。CouchDB 軟件適配安裝 CouchDB 軟件$ sudo apt-get install couchdb從安裝源安裝從安裝源安裝后,deb 安裝后腳本會自動對 couchDB 進(jìn)行配置,并設(shè)置為服務(wù)啟動,可直接進(jìn)入后續(xù)驗(yàn)證步驟$ sudo apt-get install build-essential pkg-config erlang libicu-dev libmozjs185-dev libcurl4-op
23、enssl-dev從源碼安裝安裝依賴:$ ./configure$ make release編譯:執(zhí)行 configure 時可以使用-help 參數(shù)查看幫助文檔,添加需要的參數(shù);如果執(zhí)行make 報錯,可以嘗試執(zhí)行 gmake. doneYou can now copy the rel/couchdb directory anywhere on your system. Start CouchDB with ./bin/couchdb from within that directory.Make 成功時會顯示如下信息:安裝:adduser -system -shell /bin/bash
24、-group -gecos CouchDB Administrator couchdb如 make 結(jié)束時的信息所示,將編譯出的目錄拷貝至想要安裝的目錄創(chuàng)建 couchdb 用戶:測試用戶 shell 可用,并且擁有一個可寫的主目錄: 以 couchdb 用戶登錄;運(yùn)行 pwd 查看該用戶的主目錄$ cp -R /path/to/couchdb/rel/couchdb /home/couchdb$ chown -R couchdb:couchdb /home/couchdb$ find /home/couchdb -type d -exec chmod 0770 ;$ chmod 0644 /
25、home/couchdb/etc/*將編譯出的目錄拷貝至 couchdb 用戶的主目錄(若上敘安裝步驟中,已拷貝該目錄到想安裝的目錄,則后續(xù)執(zhí)行步驟可修改為該目錄),并修改目錄權(quán)限:$ sudo -i -u couchdb /home/couchdb/bin/couchdb使用 couchdb 用戶運(yùn)行數(shù)據(jù)庫:第一次運(yùn)行可能會報錯:database_does_not_exist,mem3_shards,load_shards_from_db,_users .這是提示我們要完成數(shù)據(jù)庫的初始化工作,打開瀏覽器,輸入地址::5984/_utils#setup選擇初始化為單節(jié)點(diǎn)還是集群,完成初始化工作
26、$ curl :5984驗(yàn)證安裝正確安裝時,程序會返回類似以下的信息:couchdb:Welcome,uuid:2a7b0688d64ca22abaafd1fbac75a3f7,version:1.6.0,vendor:name:Ubuntu,version:16.04獲取所有數(shù)據(jù)庫$ curl -X GET :5984/_all_dbs _replicator,_users$ curl -X PUT :5984/baseballok:true$ curl -X GET :5984/_all_dbs _replicator,_users,baseball$ curl -X PUT :5984/
27、baseballerror:file_exists,reason:The database could not be created, the file already exists.創(chuàng)建數(shù)據(jù)庫刪除數(shù)據(jù)庫$ curl -X PUT :5984/planktonok:true$ curl -X DELETE :5984/planktonok:true$ curl -X GET :5984/_all_dbs _replicator,_users,baseballFauxtonFauxton 是 CouchDB 提供的一套內(nèi)置的 Web 管理界面,它實(shí)現(xiàn)了對 CouchDB 所有功能的完全訪問,使用
28、 Fauxton,我們可以創(chuàng)建和刪除數(shù)據(jù)庫,查看和編輯文檔,撰寫和運(yùn)行 MapReduce 視圖,以及復(fù)制數(shù)據(jù)庫等:5984/_utils/在瀏覽器中輸入以下內(nèi)容訪問 Fauxton 界面:創(chuàng)建數(shù)據(jù)庫和文檔在 Fauxton 中創(chuàng)建數(shù)據(jù)庫很簡單。在“概述”頁面中, 單擊“創(chuàng)建數(shù)據(jù)庫”。當(dāng)要求輸入名稱時,輸入 hello-world 并單擊“創(chuàng)建”按鈕。 PAGE 12創(chuàng)建數(shù)據(jù)庫后,F(xiàn)auxton 將顯示其所有文檔的列表。這個列表剛開始是空的, 讓我們創(chuàng)建第一個文檔。單擊“所有文檔”旁邊的加號,然后選擇“新建文檔”鏈接。CouchDB 將為您生成一個 UUID。hello: my new val
29、ueFauxton 將顯示新創(chuàng)建的文檔及其_id 字段。要創(chuàng)建一個新字段,只需使用編輯器編寫有效的 JSON。添加一個新字段,方法是在_id 值后面加一個逗號,然后添加文本:單擊綠色的“創(chuàng)建文檔”按鈕以完成創(chuàng)建文檔。文檔的_rev 會自動重新生成。我們可以將_rev 認(rèn)為是一個安全特性,只有和CouchDB 文檔的最新_rev 達(dá)成一致時,才可以成功保存更改。MapReduce傳統(tǒng)的關(guān)系數(shù)據(jù)庫允許運(yùn)行任何數(shù)據(jù)結(jié)構(gòu)正確的查詢。而 CouchDB 使用預(yù)定義的 map 和 reduce 函數(shù),稱為 MapReduce。這些函數(shù)提供了很大的靈活性,因?yàn)樗鼈兛梢赃m應(yīng)文檔結(jié)構(gòu)的變化,并且可以獨(dú)立和并行地
30、計算每個文檔的索引。在CouchDB 術(shù)語中,一個 map 和一個 reduce 的組合稱為一個視圖。對于經(jīng)驗(yàn)豐富的關(guān)系數(shù)據(jù)庫程序員,MapReduce 需要一些適應(yīng)。reduce 查詢不是聲明要包含在結(jié)果集中的表的行,而是基于對映射函數(shù)生成的索引的簡單范圍請求,而取決于數(shù)據(jù)庫來確定運(yùn)行查詢的最有效方式。映射函數(shù)以每個文檔為參數(shù)調(diào)用一次。函數(shù)可以選擇全部跳過文檔,或者將一個或多個視圖行作為鍵/值對發(fā)出。映射函數(shù)不能依賴于文檔之外的任何信息。這種獨(dú)立性允許以增量和并行方式生成 CouchDB 視圖。CouchDB 視圖存儲為按鍵排序的行。這使得從一系列鍵中檢索數(shù)據(jù)變得高效,即使在有數(shù)千或數(shù)百萬行
31、的情況下也是如此。在編寫 CouchDB map 函數(shù)時, 您的主要目標(biāo)是構(gòu)建一個索引,在附近的鍵下存儲相關(guān)數(shù)據(jù)。在運(yùn)行示例 MapReduce 視圖之前,我們需要先創(chuàng)建一些數(shù)據(jù)。我們將創(chuàng)建包含不同商店中各種超市商品價格的文檔。讓我們?yōu)樘O果、桔子和香蕉創(chuàng)建文檔。_id: 00a271787f89c0ef2e10e88a0c0001f4, _rev: 1-2628a75ac8c3abfffc8f6e30c9949fd6, item: apple,prices: Fresh Mart: 1.59,Price Max: 5.99,(可以使用 CouchDB 自動生成的_id 和_rev 字段。)使用
32、 fauxton 創(chuàng)建具有如下最終 JSON 結(jié)構(gòu)的文檔:Apples Express: 0.79_id: 00a271787f89c0ef2e10e88a0c0003f0, _rev: 1-e9680c5d9a688b4ff8dd68549e8e072c, item: orange,prices: Fresh Mart: 1.99,Price Max: 3.19,Citrus Circus: 1.09_id: 00a271787f89c0ef2e10e88a0c00048b,_rev: 1-60e25d93dc12884676d037400a6fa189,item: banana,prices: Fresh Mart: 1.99,Price Max: 0.79,Banana Montana: 4.22想象一下,我們正在為一個大型的午餐會做準(zhǔn)備,但客戶對價格非常敏感。為了找到最低價,我們將創(chuàng)建第一個視圖,顯示按價格排序的每個水果。單擊“所有文檔”返回 Hello World 概述,然后從“所有文檔”加號中單擊“新建視圖”創(chuàng)建新視圖。function(doc) var shop, price, va
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度物業(yè)賠償業(yè)主公共設(shè)施損壞協(xié)議書
- 二零二五年度動車組客車車身定制買賣合同
- 二零二五年度國有企業(yè)股權(quán)轉(zhuǎn)讓合同終止執(zhí)行書
- 2025年度科技園區(qū)土地租賃協(xié)議書模板
- 二零二五年度工地施工期間應(yīng)急預(yù)案與響應(yīng)協(xié)議
- 二零二五年度車庫買賣合同附新能源汽車充電服務(wù)合同
- 2025年度明星參與綜藝節(jié)目票房對賭協(xié)議合同
- 2025年廣東年貨運(yùn)從業(yè)資格證考試試題題庫
- 2025年珠海道路運(yùn)輸從業(yè)資格考試下載
- 出國游學(xué)夏令營合同
- 2024年六年級語文下冊全冊單元教材分析
- 延長石油招聘筆試試題
- DB-T 29-22-2024 天津市住宅設(shè)計標(biāo)準(zhǔn)
- 2024年贛州職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- DL∕T 5209-2020 高清版 混凝土壩安全監(jiān)測資料整編規(guī)程
- 2024年山東省濰坊市中考數(shù)學(xué)真題試題(含答案及解析)
- 開票稅點(diǎn)自動計算器
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 醫(yī)療器械質(zhì)量安全風(fēng)險會商管理制度
- 降低用藥錯誤發(fā)生率
- 起重機(jī)維護(hù)保養(yǎng)記錄表
評論
0/150
提交評論