MongoDB和CouchDB是完美替代品吗?

时间:2010-01-02 00:00:21

标签: mongodb couchdb database

我既没有CouchDB也没有MongoDB,但是我很快就会这么做......我也读过两个关于这两个系统的信息,它看起来对我来说就像他们覆盖相同的情况......或者我错过了一个关键的区别特征?

我想在下一个项目中使用基于文档的存储而不是传统的RDBMS。我还需要数据存储

  • 处理大型二进制对象(图像和视频)
  • 自动将自身复制到物理上分离的节点
  • 需要额外的RDBMS多余的

两者是否同样适合这些要求?

谢谢!

6 个答案:

答案 0 :(得分:49)

对于非常不同的项目,我实际上已经广泛使用了两者。

我认为它们同样适合您列出的要求,但两者之间存在很多差异。 IMO最大的是他们的查询能力。 CouchDB没有RDBMS意义上的'查询'(select * from ...),而是使用'views'更像存储过程(本质上,静态查询在中定义数据库(1))。 MongoDB有很多more 'usual' querying

基本上,它取决于您的应用程序要求。如果您提供更多信息,我可能会更清楚地说明在那种情况下可能会发生什么。

(1):您可以在CouchDB中进行临时非静态查询,但不建议将它们用于生产

答案 1 :(得分:11)

Mongo使用更多“传统”查询。您可以基于每个键打开索引并使用SQLish查询语法。

CouchDB的视图可以做更深入的索引和关系,但需要你做更多的工作,并了解密钥排序的方式来进行查询。

复制系统也有很大差异。 Mongo的复制看起来很像大多数有主人和奴隶的RDBMS解决方案。 CouchDB的复制更加点对点,没有主/从,每个CouchDB都是一个节点。

答案 2 :(得分:11)

CouchDB的复制是为了保持地理位置不同的网站同步。它通过从中断处重新启动复制来优雅地处理网络错误和其他错误。参与节点甚至可以故意脱机。

答案 3 :(得分:4)

在使用MongoDB之前,我建议您查看以下内容:http://groups.google.com/group/mongodb-user/browse_thread/thread/460dbd49a5b6b267。由于每次写入都缺少fsync,MongoDB很可能会破坏数据。

答案 4 :(得分:2)

答案 5 :(得分:0)

从开发人员的角度来看,最大的区别是mongo实时查询与沙发视图(必须“编译”)。 从操作的角度来看,沙发正在完全使用http-rest。如果您能够配置http服务器,您就知道如何设置教练。使用Mongo,您必须学习如何设置配置服务器,副本集和mongos(一种平衡器)。