小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MongoDB與CouchDB全方位對比

 CevenCheng 2011-05-06
  • 摘要:MongoDB與CouchDB很相似,他們都是文檔型存儲,數(shù)據(jù)存儲格式都是JSON型的,都使用Javascript進行操作,都支持Map/Reduce。
  • 標簽:MongoDB  CouchDB

本文見于MongoDB官方網(wǎng)站,MongoDB與CouchDB很相似,他們都是文檔型存儲,數(shù)據(jù)存儲格式都是JSON型的,都使用Javascript進行操作,都支持Map/Reduce。但是其實二者有著很多本質(zhì)的區(qū)別,本文透過現(xiàn)象追尋本質(zhì),讓你更好的理解MongoDB與CouchDB。

1.MVCC(Multiversion concurrency control)

MongoDB與CouchDB的一大區(qū)別就是CouchDB是一個MVCC的系統(tǒng),而MongoDB是一個update-in-place的系統(tǒng)。這二者的區(qū)別就是,MongoDB進行寫操作時都是即時完成寫操作,寫操作成功則數(shù)據(jù)就寫成功了,而CouchDB一個支持多版本控制的系統(tǒng),此類系統(tǒng)通常支持多個結(jié)點寫,而系統(tǒng)會檢測到多個系統(tǒng)的寫操作之間的沖突并以一定的算法規(guī)則予以解決。

2.水平擴展性

在擴展性方面,CouchDB使用replication去做,而MongoDB的replication僅僅用來增強數(shù)據(jù)的可靠性,MongoDB在實現(xiàn)水平擴展性方面使用的是Sharding。(據(jù)說CouchDB也有開發(fā)分片功能的計劃)

3.數(shù)據(jù)查詢操作

這個區(qū)別在用戶接口上了,MongoDB與傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)類似,支持動態(tài)查詢,即使在沒有建立索引的行上,也能進行任意的查詢。而CouchDB不同,CouchDB不支持動態(tài)查詢,你必須為你的每一個查詢模式建立相應(yīng)的view,并在此view的基礎(chǔ)上進行查詢。

4.原子性

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

5.數(shù)據(jù)可靠性

CouchDB是一個”crash-only”的系統(tǒng),你可以在任何時候停掉CouchDB并能保證數(shù)據(jù)的一致性。而MongoDB在不正常的停掉后需要運repairDatabase()命令來修復(fù)數(shù)據(jù)文件,在1.7.5版本后支持單機可靠的–dur命令。

6.Map/Reduce

MongoDB和CouchDB都支持Map/Reduce,不同的是MongoDB只有在數(shù)據(jù)統(tǒng)計操作中會用到,而CouchDB在變通查詢時也是使用Map/Reduce。

7.使用 javascript

MongoDB和CouchDB都支持javascript,CouchDb用javascript來創(chuàng)建view。MongoDB使用JSON作為普通數(shù)據(jù)庫操作的表達式。當然你也可以在操作中包含javascript語句。MongoDB還支持服務(wù)端的javascript腳本(running arbitrary javascript functions server-side),當然,MongoDB的Map/Reduce函數(shù)也是javascript格式的。

8.REST

CouchDB是一個RESTFul的數(shù)據(jù)庫,其操作完全走HTTP協(xié)議,而MongoDB是走的自己的二進制協(xié)議。MongoDB Server在啟動時可以開放一個HTTP的接口供狀態(tài)監(jiān)控。

9.性能

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

采用二進制協(xié)議,而非CouchDB REST的HTTP協(xié)議

使用Momary Map內(nèi)存映射的做法

collection-oriented,面向集合的存儲,同一個collection的數(shù)據(jù)是連續(xù)存儲的

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

使用C++編寫

10.適用場景

如果你在構(gòu)建一個 Lotus Notes型的應(yīng)用,我們推薦使用CouchDB,主要是由于它的MVCC機制。另外如果我們需要master-master的架構(gòu),需要基于地理位置的數(shù)據(jù)分布,或者在數(shù)據(jù)結(jié)點可能不在線的情況下,我們推薦使用CouchDB。

如果你需要高性能的存儲服務(wù),那我們推薦MongoDB,比如用于存儲大型網(wǎng)站的用戶個人信息,比如用于構(gòu)建在其它存儲層之上的Cache層。

如果你的需求中有大量update操作,那么使用MongoDB吧。就像我們在例子updating real time analytics counters中的一樣,對于那種經(jīng)常變化的數(shù)據(jù),比如瀏覽量,訪問數(shù)之類的數(shù)據(jù)存儲。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多