自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MongoDB與CouchDB全方位對(duì)比

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) MongoDB
MongoDB與CouchDB很相似,他們都是文檔型存儲(chǔ),數(shù)據(jù)存儲(chǔ)格式都是JSON型的,都使用Javascript進(jìn)行操作,都支持Map/Reduce。

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

1.MVCC(Multiversion concurrency control)

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

2.水平擴(kuò)展性

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

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

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

4.原子性

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

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

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

6.Map/Reduce

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

7.使用 javascript

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

8.REST

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

9.性能

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

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

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

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

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

使用C++編寫(xiě)

10.適用場(chǎng)景

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

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

如果你的需求中有大量update操作,那么使用MongoDB吧。就像我們?cè)诶觰pdating real time analytics counters中的一樣,對(duì)于那種經(jīng)常變化的數(shù)據(jù),比如瀏覽量,訪問(wèn)數(shù)之類(lèi)的數(shù)據(jù)存儲(chǔ)。
 

【編輯推薦】

  1. MongoDB學(xué)習(xí)筆記(一) MongoDB介紹及安裝
  2. MongoDB學(xué)習(xí)筆記(二) 通過(guò)samus驅(qū)動(dòng)實(shí)現(xiàn)基本數(shù)據(jù)操作
  3. MongoDB學(xué)習(xí)筆記(三) 在MVC模式下通過(guò)Jqgrid表格操作MongoDB數(shù)據(jù)
  4. MongoDB學(xué)習(xí)筆記(四) 用MongoDB的文檔結(jié)構(gòu)描述數(shù)據(jù)關(guān)系
  5. MongoDB學(xué)習(xí)筆記(五) MongoDB文件存取操作
責(zé)任編輯:艾婧 來(lái)源: CSDN
相關(guān)推薦

2010-09-07 09:07:33

MongoDBCouchDB

2022-08-27 21:31:04

Tauri框架二進(jìn)制

2021-08-24 07:57:26

KafkaRocketMQPulsar

2019-11-13 14:43:12

容器云平臺(tái)軟件

2011-04-22 09:05:26

2018-01-15 08:52:35

2010-03-17 09:22:06

FlashSilverlight

2009-07-15 08:25:42

微軟Windows 7性能測(cè)試

2017-09-13 15:37:53

2013-11-20 10:20:35

AndroidiOS開(kāi)發(fā)

2016-12-14 14:43:11

ButterknifeAndroid

2025-02-26 08:16:38

2011-06-14 09:09:13

NoSQLMongoDB

2019-09-18 15:22:52

消息中間件RabbitMQ

2010-08-04 14:15:44

nfs服務(wù)

2013-07-05 18:01:23

東軟華為

2014-09-25 14:29:03

測(cè)評(píng)郵箱APP

2009-12-15 10:10:42

Ruby過(guò)程對(duì)象

2009-10-26 13:41:49

機(jī)房監(jiān)控

2009-08-24 10:39:12

思科認(rèn)證CCNA思科認(rèn)證CCNA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)