我既没有CouchDB也没有MongoDB,但是我很快就会这么做......我也读过两个关于这两个系统的信息,它看起来对我来说就像他们覆盖相同的情况......或者我错过了一个关键的区别特征?
我想在下一个项目中使用基于文档的存储而不是传统的RDBMS。我还需要数据存储
两者是否同样适合这些要求?
谢谢!
答案 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(一种平衡器)。