我还没有弄脏CouchDB和MongoDB,但我想尽快这样做...我也读过两个系统,它看起来就像他们覆盖相同的情况......或者我我错过了一个关键的区别特征?
我想在我的下一个项目中使用基于文档的存储而不是传统的RDBMS.我还需要数据存储区
处理大型二进制对象(图像和视频)
自动将自身复制到物理上分离的节点
需要额外的RDBMS是多余的
两者都同样适合这些要求吗?
谢谢!
我实际上已经非常广泛地使用了两者,两者都用于非常不同的项目.
我会说它们同样适合您列出的要求,但两者之间存在很多差异.IMO最大的是他们的查询能力.CouchDB中没有的RDBMS意义上的"查询"(SELECT*FROM ......),而是使用了" 意见 ",这更像是存储过程(本质上,定义静态查询的数据库(1) ).MongoDB有更多"通常"的查询.
从本质上讲,它取决于您的应用程序要求.如果您提供更多信息,我可能会更清楚地说明在那种情况下可能发生的事情.
(1):您可以在CouchDB中进行临时的非静态查询,但不建议将它们用于生产用途
Mongo使用更多"传统"查询.您打开每个键的索引并使用SQLish查询语法.
CouchDB的视图可以做更深入的索引和关系,但是需要您做更多的工作并理解密钥排序对于执行查询的方式.
复制系统也有很大的不同.Mongo的复制看起来很像大多数有主人和奴隶的RDBMS解决方案.CouchDB的复制更加点对点,没有主/从,每个CouchDB都是一个节点.
CouchDB的复制是为了保持地理位置不同的站点同步.它通过从中断处重新启动复制来优雅地处理网络错误和其他错误.参与节点甚至可以故意脱机.