CouchDB MongoDB比较
CouchDB与MongoDB在架构和用途上,有很多相似的地方,详细的对比如下表中所示 -
CouchDB vs MongoDB
特征比较 | CouchDB | MongoDB |
---|---|---|
数据模型 | 它遵循面向文档的模型,数据以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系统支持。