《CouchDB與CouchBase的比較》
一、概述
Apache CouchDB和CouchBase兩個NoSQL資料庫,都是開源、免費的NoSQL文檔型資料庫,都使用了JSON作為其文檔格式。Apache CouchDB和CouchBase的相似性極高,但也有不少不同之處。基本上CouchBase結合了Apache CouchDB和MemBase兩種資料庫的功能特性而建構的。CouchDB的面向文檔的資料模型、索引和查詢功能與MemBase分布式鍵值資料模型相結合、高性能、易于擴充、始終保持接通的能力,這就是CouchBase。
簡而言之,
CouchBase = CouchDB + MemBase
但是,CouchBase并非CouchDB的新版本,相反,它實際上是MemBase的新版本。CouchBase Server實際上是MemBase Server的新名字。CouchBase并非CouchDB的替代,而是MemBase的替代版本。CouchBase仍然使用了Memcached協定,而沒有使用CouchDB的RESTful風格的API。同時,CouchDB仍然是CouchDB,是Apache旗下的項目,由Apache負責維護和演進。而且,CouchDB并非過時的CouchBase,CouchDB仍然是一個比較活躍的開源項目。而CouchBase是另一個完全獨立的項目。
二、CouchDB和CouchBase的相同之處:
1)CouchDB和CouchBase兩者都是NoSQL文檔資料庫,都使用了JSON作為其文檔格式。
2)CouchDB和CouchBase兩者都使用了相同的索引和查詢方法。
3)CouchDB和CouchBase兩者都使用了相同的複制系統的方法,除了P2P複制。
盡管CouchBase的開發結合了CouchDB和MemBase的功能特性,但是CouchDB和CouchBase還是有很多的不同之處,尤其是在叢集、緩存、許可證等方面。
三、CouchDB和CouchBase的不同之處:
1、叢集系統
CouchBase内建了一個叢集系統,允許資料自動跨多種節點傳播。而CouchDB是一個單節點的解決方案,支援P2P複制技術,它更适合分散式的系統,以及适合不需要把資料傳播到多個節點的場景。
2、緩存系統
CouchBase與MemBase相似,它内建了一個基于Memcached的緩存技術,始終如一地提供了亞毫秒級的讀寫性能,在每個節點上每秒可執行上百萬個操作。Apache CouchDB是一個基于磁盤的資料庫,通常它更适合超低延遲或吞吐量需求不高的場合。
3、許可證系統
CouchBase不完全是開源、免費的軟體。它有兩個版本:社群版(免費、不包含最新的Bug修複)和企業版(使用有限制、需經過CouchBase公司的稽核,還有一些很多人覺得無法接受的其他條款限制)。
CouchDB是一個開源、免費的軟體(沒有附帶任何條件),它基于Apache License 2.0許可證。
4、其它的不同
CouchBase不支援以下CouchDB的特性:
1)RESTful API(隻用于檢視,無CRUD操作)
2)P2P複制
3)支援CouchApps
4)Futon(提供了不同的管理界面)
5)文檔ID
6)資料庫的概念(這裡隻有桶Bucket)
7)在CouchDB資料庫和CouchBase Server之間做複制
8)明确的附件(你必須存儲另外的檔案作為新鍵值對)
9)CouchBase中的一切操作都使用了HTTP API,這與CouchDB不同(你需要使用CouchBase Server的SDK或其它實驗性的用戶端庫,無需curl和wget使用經驗)
10)CouchDB API(CouchBase使用了Memcached的API來代替)
11)在CouchBase中,不能通過浏覽器完成所有工作,而在CouchDB中則可以(使用CouchBase必須寫伺服器端的應用。)
12)使用CouchBase,開發兩層架構的Web應用是不可能的,而使用CouchDB則可以(使用CouchBase必須寫伺服器端的應用來适配浏覽器和資料庫,就像關系資料庫那樣。)