MongoDB和CouchDB是完美的替代品吗?

我的手还没弄脏,既没有CouchDB也没有MongoDB,但我很快就要这样做了…我也读了一些关于这两个系统,它看起来像我涵盖了相同的情况…或者我错过了一个关键的特色?

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

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

都同样适合这些要求?

谢谢!

我实际上已经非常广泛地使用了两个非常不同的项目。

我会说他们同样适合你列出的要求,但是两者之间有很多不同之处。 海事组织最大的是他们的查询能力。 CouchDB在RDBMS意义上没有“查询”(select * from …),而是使用更像存储过程(本质是数据库(1)中定义的静态查询)的“ 视图 ”。 MongoDB有更多的“通常”查询 。

基本上,这归结于您的应用程序要求。 如果您提供更多的信息,我可能会对这种情况下可能发生的事情有更多的了解。

(1) :您可以在CouchDB中拥有临时的非静态查询,但不推荐将其用于生产用途

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

CouchDB的视图可以做更深入的索引和关系,但要求您做更多的工作,并理解关键sorting对于查询的工作方式。

复制系统也有很大的不同。 Mongo的复制看起来很像大多数RDBMS解决scheme,主控和从属等等。 CouchDB的复制更多是点对点的,没有主/从,每个CouchDB都是一个节点。

CouchDB的复制是为了保持地理上不同的站点同步。 它通过在停止的地方重新启动复制来优雅地处理networking和其他错误。 参与节点甚至可以故意脱机。

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

从开发人员的angular度来看,最大的区别是mongo实时查询与沙发视图(必须“编译”)。 从操作的angular度来看,沙发在http-rest上完全工作。 如果你能够configurationHTTP服务器,你知道如何设置教练。 与Mongo相反,你必须学习如何设置configuration服务器,副本集和mongos(种类的平衡器)。