CouchDB MongoDB比较

CouchDB与MongoDB在架构和用途上,有很多相似的地方,详细的对比如下表中所示 -

CouchDB vs MongoDB

特征比较CouchDBMongoDB
数据模型它遵循面向文档的模型,数据以JSON格式呈现。它遵循面向文档的模型,但数据以BSON格式呈现。
接口CouchDB使用基于HTTP/REST的接口。它非常直观,设计非常好。MongoDB在TCP/IP上使用二进制协议和自定义协议。
对象存储在CouchDB中,数据库包含文档。在MongoDB中,数据库包含集合,而集合包含文档。
查询方法CouchDB遵循Map/Reduce查询方法(JavaScript+其他)MongoDB遵循Map/Reduce(JavaScript)创建集合+基于对象的查询语言。
复制CouchDB支持使用自定义冲突解析功能的主-主复制。MongoDB支持主从复制。
并发它遵循MVCC(多版本并发控制)就地更新
偏向CouchDB优先考虑可用性MongoDB优先考虑一致性
性能一致性在CouchDB中比MongoDB更安全在MongoDB中数据库包含集合,而集合包含文档。
一致性CouchDB最终是一致的。MongoDB也是一致的。
编写语言使用Erlang语言编写使用C++语言编写

CouchDB的特点

以下是CouchDB最有吸引力的功能列表:

文件存储:CouchDB是一个NoSQL数据库,可以跟踪文档存储。 文档是每个字段唯一命名的数据的主要单位,并且包含各种数据类型的值,例如:文本,数字,布尔值,列表等。文档对文本大小或元素数量没有设置限制。

基于浏览器的GUI:CouchDB提供了一个接口Futon,便于使用基于浏览器的GUI来处理数据,权限和配置。

复制:CouchDB提供了最简单的复制形式。 其他数据库没有是如此简单的复制。

ACID属性:CouchDB文件布局遵循ACID属性的所有功能。 数据输入到数据盘后,不会被覆盖。 文档更新(添加,编辑,删除)遵循原子性,即完全保存。 数据库不会有任何部分保存或编辑的文档。 几乎所有这些更新都是序列化的,任何数量的客户端都可以读取文档,而无需等待,从而不会出现中断问题。

JSONP免费:如果更新配置为:allow_jsonp = true,那么数据库可将支持GET请求访问的跨域。

身份验证和会话支持:CouchDB可以通过会话cookie(如Web应用程序)来保持身份验证。

安全性:CouchDB还提供数据库级安全性。 每个数据库的权限分为读取者和管理员。 读取者可以读写数据库。

验证:可以通过结合身份验证将插入的数据验证为数据库,以确保文档的创建者是否就是登录者的文档。

Map/Reduce列表并显示:MongoDB和CouchDB普及背后的主要原因是有Map/Reduce系统支持。