热门问题
时间线
聊天
视角
CouchDB
来自维基百科,自由的百科全书
Remove ads
Apache CouchDB是一個開源資料庫,專注於易用性和成為"完全擁抱web的資料庫"[2]。它是一個使用JSON作為儲存格式,JavaScript作為查詢語言,MapReduce和HTTP作為API的文件導向的NoSQL資料庫。其中一個顯著的功能就是多主複製。CouchDB的第一個版本釋出在2005年,在2008年成為了Apache的專案。
Remove ads
不同於關係型資料庫,CouchDB沒有將資料和關係儲存在表格里。替代的,每個資料庫是一個獨立的文件集合。每一個文件維護其自己獨立的資料和自包涵的schema。一個應用程式可能會訪問多個資料庫,比如其中一個位於使用者的手機上,另一個位於在遠端的伺服器上。文件的元資料包含版本資訊,讓其能夠合併可能因為資料庫連結遺失導致的任何差異。
CouchDB實現了一個多版本並行控制(MVCC)形式,用來避免在資料庫寫操作的時候對檔案進行加鎖。衝突留給應用程式去解決。解決一個衝突的通用操作的是首先合併資料到其中一個文件,然後刪除舊的資料[3]。
其他功能包括文件級別的ACID語意和最終一致性,MapReduce,複製(Replication)。它還支援通過一個做Futon的內建web應用程式來進行資料庫管理。
Remove ads
歷史
CouchDB(Couch是 cluster of unreliable commodity hardware的首字母縮寫)[4]是前IBM的Lotus Notes開發者Damien Katz建立於2005年的一個專案。Damien Katz將其定義為「面向大規模可延伸對象資料庫的儲存系統」。他對該資料庫的目標是讓其成為網際網路的資料庫,其從底層的設計就支援部署web應用程式。他自己通過將近兩年的時間建立了該專案同時將其作為開源專案在GNU General Public License下釋出。
在2008年2月,其成為Apache Incubator專案,同時其授權條款變更為Apache License。幾個月後,其升級為頂級專案。這促使了其第一個穩定版在2010年7月釋出。
在2012年初期,Damien Katz離開了專案專注於Couchbase Server。不過該專案還在繼續進行中,在2012年4月釋出了1.2版本,2013年4月釋出了1.3版本。
Remove ads
主要功能
- 文件儲存
- CouchDB將資料儲存為「文件」,其為用JSON表示的有一個或者多個欄位/值的對。欄位的值可以是簡單的東西比如字串,數字,或者時間;但是陣列和字典同樣也可以使用。CouchDB中的每一個文件有一個唯一的id但是沒有必須的文件schema。
- ACID語意
- CouchDB提供了ACID語意,其通過多版本並行控制的形式來實現,意味著CouchDB能夠處理大量的並行讀寫而不會產生衝突。
- Map/Reduce 視圖 和 索引
- 儲存的資料通過視圖進行組裝。在CouchDB中,每一個視圖都是由作為map/reduce操作中的Map部分的JavaScript函式構成。該函式接受一個文件並且將其轉換為一個單獨的值來返回。CouchDB能夠對視圖進行索引,同時在文件新增,修改,刪除的時候對這些索引進行更新。
- 支援複製的分散式架構
- CouchDB的設計基於支援雙向的複製(同步)和離線操作。這意味著多個複製能夠對同一資料有其自己的拷貝,可以進行修改,之後將這些變更進行同步。
- REST API
- 所有的資料都有一個唯一的通過HTTP暴露出來的URI。REST使用HTTP方法 POST,GET,PUT和DELETE來操作對應的四個基本CRUD(Create,Read,Update,Delete)操作來操作所有的資源。
- 最終一致性
- CouchDB保證最終一致性,使其能夠同時提供可用性和分割容忍。
- 離線支援
- CoucbDB能夠同步複製到可能會離線的終端裝置(比如智慧型手機),同時當設定再次線上時處理資料同步。
CouchDB內建了一個的叫做Futon的通過web訪問的管理介面。
Remove ads
使用案例、產品部署
CouchDB的複製和同步強大功能讓其能夠使用在無法保證網路連結但是應用程式必須繼續在離線模式工作的行動裝置。
一些使用CouchDB的企業範例:
資料操作
CoucbDB管理JSON文件的集合。文件通過視圖進行組織。視圖通過Aggregate函式進行定義,過濾查詢的時候平行計算,類似MapReduce。
應用程式通過HTTP與CouchDB進行互動。下面是一些通過cURL進行演示的範例。這些範例假設CouchDB執行在本地localhost(127.0.0.1)的5984埠。
Remove ads
開源組件
CouchDB包含了一些其他的開源專案作為其自己的內建包。
其他
- BigCouch
- Cassandra (database)
- Couchbase Server
- Document-oriented database
- Lotus Notes
- MongoDB
- Redis
- Mnesia
- OrientDB
- Riak
- XML database
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads