MongoDB與CouchDB全方位對比(轉)

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   for   java   

出處:http://www.csdn.net/article/2011-03-21/294226

本文見於MongoDB官方網站,MongoDB與CouchDB很相似,他們都是文檔型儲存,資料存放區格式都是JSON型的,都使用Javascript進行操作,都支援Map/Reduce。但是其實二者有著很多本質的區別,本文透過現象追尋本質,讓你更好的理解MongoDB與CouchDB。

1.MVCC(Multiversion concurrency control)

MongoDB與CouchDB的一大區別就是CouchDB是一個MVCC的系統,而MongoDB是一個update-in-place的系統。這二者的區別就是,MongoDB進行寫操作時都是即時完成寫操作,寫操作成功則資料就寫成功了,而CouchDB一個支援多版本控制的系統,此類系統通常支援多個結點寫,而系統會檢測到多個系統的寫操作之間的衝突並以一定的演算法規則予以解決。

2.水平擴充性

在擴充性方面,CouchDB使用replication去做,而MongoDB的replication僅僅用來增強資料的可靠性,MongoDB在實現水平擴充性方面使用的是Sharding。(據說CouchDB也有開發分區功能的計劃)

3.資料查詢操作

這個區別在使用者介面上了,MongoDB與傳統的資料庫系統類別似,支援動態查詢,即使在沒有建立索引的行上,也能進行任意的查詢。而CouchDB不同,CouchDB不支援動態查詢,你必須為你的每一個查詢模式建立相應的view,並在此view的基礎上進行查詢。

4.原子性

這一點上兩者比較一致,都支援針對行的原子性修改(concurrent modifications of single documents),但不支援更多的複雜事務操作。

5.資料可靠性

CouchDB是一個”crash-only”的系統,你可以在任何時候停掉CouchDB並能保證資料的一致性。而MongoDB在不正常的停掉後需要運repairDatabase()命令來修複資料檔案,在1.7.5版本後支援單機可靠的–dur命令。

6.Map/Reduce

MongoDB和CouchDB都支援Map/Reduce,不同的是MongoDB只有在資料統計操作中會用到,而CouchDB在變通查詢時也是使用Map/Reduce。

7.使用 javascript

MongoDB和CouchDB都支援javascript,CouchDb用javascript來建立view。MongoDB使用JSON作為普通資料庫操作的運算式。當然你也可以在操作中包含javascript語句。MongoDB還支援服務端的javascript指令碼(running arbitrary javascript functions server-side),當然,MongoDB的Map/Reduce函數也是javascript格式的。

8.REST

CouchDB是一個RESTFul的資料庫,其操作完全走HTTP協議,而MongoDB是走的自己的二進位協議。MongoDB Server在啟動時可以開放一個HTTP的介面供狀態監控。

9.效能

此處主要列舉了MongoDB自己具有高效能的原因

採用二進位協議,而非CouchDB REST的HTTP協議

使用Momary Map記憶體映射的做法

collection-oriented,面向集合的儲存,同一個collection的資料是連續儲存的

update-in-place直接修改,而非使用MVCC的機制

使用C++編寫

10.適用情境

如果你在構建一個 Lotus Notes型的應用,我們推薦使用CouchDB,主要是由於它的MVCC機制。另外如果我們需要master-master的架構,需要基於地理位置的資料分布,或者在資料結點可能不線上的情況下,我們推薦使用CouchDB。

如果你需要高效能的儲存服務,那我們推薦MongoDB,比如用於儲存大型網站的使用者個人資訊,比如用於構建在其它儲存層之上的Cache層。

如果你的需求中有大量update操作,那麼使用MongoDB吧。就像我們在例子updating real time analytics counters中的一樣,對於那種經常變化的資料,比如瀏覽量,訪問數之類的資料存放區。

原文連結:Comparing Mongo DB and Couch DB

譯文連結:http://blog.nosqlfan.com/html/1519.html

MongoDB與CouchDB全方位對比(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.