有什么不同:mongodb和CouchDB有什么不同

发布时间:2025-12-10 12:42:04 浏览次数:2

mongodb和CouchDB有甚么不同

mongodb和CouchDB的不同有:1、mongodb比CouchDB速度不错;2、CouchDB比mongodb安全一些;3、在mongodb中不可以使用触发器,而在CouchDB中可以;4、mongodb将JSON数据序列化为BSON,而CouchDB不以JSON格式存储数据。

下面是详细介绍:

MongoDB和CouchDB都是文档数据库,二者很类似,数据存储格式都是JSON型的,都使用JavaScript进行操作,都支持Map/Reduce[9]。但其实两者有着很多本质的不同:

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 中的一样,对那种常常变化的数据,比如浏览量,访问数之类的数据存储。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477