2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復制必究 聯(lián)系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。
Apache CouchDB是一個開源數(shù)據(jù)庫,專注于易用性。它是一個使用JSON作為存儲格式,JavaScript作為查詢語言,MapReduce和HTTP作為API的面向文檔的NoSQL數(shù)據(jù)庫。其中一個顯著的功能就是多主復制。
Apache CouchDB 是一個開源數(shù)據(jù)庫,專注于易用性和成為”完全擁抱 web 的數(shù)據(jù)庫“。它是一個使用 JSON 作為存儲格式,JavaScript 作為查詢語言,MapReduce 和 HTTP 作為 API 的面向文檔的 NoSQL 數(shù)據(jù)庫。其中一個顯著的功能就是多主復制。
CouchDB 的第一個版本發(fā)布在 2005 年,在 2008 年成為了 Apache 的項目。
不同于關(guān)系型數(shù)據(jù)庫,CouchDB 沒有將數(shù)據(jù)和關(guān)系存儲在表格里。替代的,每個數(shù)據(jù)庫是一個獨立的文檔集合。每一個文檔維護其自己獨立的數(shù)據(jù)和自包涵的 schema。一個應用程序可能會訪問多個數(shù)據(jù)庫,比如其中一個位于用戶的手機上,另一個位于在遠程的服務(wù)器上。文檔的元數(shù)據(jù)包含版本信息,讓其能夠合并可能因為數(shù)據(jù)庫鏈接丟失導致的任何差異。
CouchDB 實現(xiàn)了一個多版本并發(fā)控制(MVCC)形式,用來避免在數(shù)據(jù)庫寫操作的時候?qū)ξ募M行加鎖。沖突留給應用程序去解決。解決一個沖突的通用操作的是首先合并數(shù)據(jù)到其中一個文檔,然后刪除舊的數(shù)據(jù)。
其他功能包括文檔級別的 ACID 語義和最終一致性,MapReduce,復制(Replication)。它還支持通過一個做 Futon 的內(nèi)置 web 應用程序來進行數(shù)據(jù)庫管理。
歷史
CouchDB(Couch 是 cluster of unreliable commodity hardware 的首字母縮寫)是前 IBM 的 Lotus Notes 開發(fā)者 Damien Katz 創(chuàng)建于 2005 年的一個項目。Damien Katz 將其定義為“面向大規(guī)??蓴U展對象數(shù)據(jù)庫的存儲系統(tǒng)”。他對該數(shù)據(jù)庫的目標是讓其成為互聯(lián)網(wǎng)的數(shù)據(jù)庫,其從底層的設(shè)計就支持部署 web 應用程序。他自己通過將近兩年的時間創(chuàng)建了該項目同時將其作為開源項目在 GNU General Public License 下發(fā)布。
在 2008 年 2 月,其成為 Apache Incubator 項目,同時其許可協(xié)議變更為 Apache License。幾個月后,其升級為頂級項目。這促使了其第一個穩(wěn)定版在 2010 年 7 月發(fā)布。
在 2012 年初期,Damien Katz 離開了項目專注于 Couchbase Server。不過該項目還在繼續(xù)進行中,在 2012 年 4 月發(fā)布了 1.2 版本,2013 年 4 月發(fā)布了 1.3 版本。
CouchDB 將數(shù)據(jù)存儲為“文檔”,其為用 JSON 表示的有一個或者多個字段/值的對。字段的值可以是簡單的東西比如字符串,數(shù)字,或者時間;但是數(shù)組和字典同樣也可以使用。CouchDB 中的每一個文檔有一個唯一的 id 但是沒有必須的文檔 schema。
CouchDB 提供了 ACID 語義,其通過多版本并發(fā)控制的形式來實現(xiàn),意味著 CouchDB 能夠處理大量的并發(fā)讀寫而不會產(chǎn)生沖突。
Map/Reduce 視圖 和 索引
存儲的數(shù)據(jù)通過視圖進行組裝。在 CouchDB 中,每一個視圖都是由作為 map/reduce 操作中的 Map 部分的 JavaScript 函數(shù)構(gòu)成。該函數(shù)接受一個文檔并且將其轉(zhuǎn)換為一個單獨的值來返回。CouchDB 能夠?qū)σ晥D進行索引,同時在文檔新增,修改,刪除的時候?qū)@些索引進行更新。
支持復制的分布式架構(gòu)
CouchDB 的設(shè)計基于支持雙向的復制(同步)和離線操作。這意味著多個復制能夠?qū)ν粩?shù)據(jù)有其自己的拷貝,可以進行修改,之后將這些變更進行同步。
所有的數(shù)據(jù)都有一個唯一的通過 HTTP 暴露出來的 URI。REST 使用 HTTP 方法 POST,GET,PUT 和 DELETE 來操作對應的四個基本 CRUD(Create,Read,Update,Delete)操作來操作所有的資源。
最終一致性
CouchDB 保證最終一致性,使其能夠同時提供可用性和分割容忍。
離線支持
CoucbDB 能夠同步復制到可能會離線的終端設(shè)備(比如智能手機),同時當設(shè)置再次在線時處理數(shù)據(jù)同步。
CouchDB 內(nèi)置了一個的叫做 Futon 的通過 web 訪問的管理接口。
使用案例、產(chǎn)品部署
CouchDB 的復制和同步強大功能讓其能夠使用在無法保證網(wǎng)絡(luò)鏈接但是應用程序必須繼續(xù)在離線模式工作的移動設(shè)備。
2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復制必究 聯(lián)系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。