我希望我的所有用户能够非常快速地读取和写入数据存储区.看起来像MongoDb有炽热的读取,但如果一个主数据库需要位于离客户端很远的地方,那么写入看起来可能非常慢.Couchdb似乎它的读取速度很慢,但是当客户端远离主服务器时,写入情况如何.使用couchdb,我们可以拥有多个主服务器,这意味着我们总是可以在客户端附近创建一个写节点.在我们的用户群在地理位置上传播得非常远的情况下,couchdb实际上是否比mongodb 更快?
我很想使用mongoDb,因为它速度极快,但是我的一些用户离这位唯一的主人很远,会有一种糟糕的体验.对于全球范围内的系统类型,不会更好.在您拥有世界各地的用户的情况下,mongodb是不是完全被排除在外?MongoDb,如果你正在听,你为什么不做一些简单的多主设置,其中冲突解决可以成为更新语义的一部分?这似乎是mongoDb完全统治nosql市场份额之间唯一的事情.一切是非常可观的.
披露:我是MongoDB粉丝和用户,我对CouchDB没有任何经验.
我有一个重型应用程序非常读写密集型.我会说读取数量大约是30:1.mongo的设计方式读取总是比写入技巧(根据我的经验)快得多,这样可以使您的写入非常高效,以便您可以将更高百分比的系统资源专用于写入.
在mongo之上构建产品时,要记住的关键是_id字段.此字段是自动生成并添加到您的所有JSON对象,当您设计查询(查找)尝试查询此字段时,它将看起来像47cc67093475061e3d95369d,因为它包含机器位置(我想也是磁盘位置?) ? - 我应该检查一下这个对象存在的位置,所以当你使用这个字段使用查找或更新时,真的可以加速你的机器.在系统设计中考虑这一点.
例:
我数据库中的2个集群是"用户"和"帖子".用户可以创建多个帖子.这两个集合必须在我的应用程序的实现中相互引用.
在每个帖子对象中,我存储父用户的_id.在每个用户对象中,我存储用户编写的所有帖子的数组.
现在,在每个用户页面上,我可以生成所有创作帖子的列表,而不会产生资源压力查询,但可以直接查找_id.mongo群集越大,它的差异就越大.
如果你完全熟悉oracle的物理位置rowid,你可能只在mongo中理解这个概念,它更加强大和强大.
去年当我们决定最终放弃MySQL for mongo时,我感到很害怕,但我可以告诉你以下关于我的经历: - 数据移植总是很糟糕但是我的想象力也很好. - Mongo可能是有史以来最好的NoSQL数据库,开源社区非常棒. - 当他们说快速和可扩展时,不开玩笑,它飞得很快. - 在我看来,模式设计非常简单,比键/值类型db更自然有序. - 整个系统似乎是为最小的用户复杂性而设计的,添加节点等是轻而易举的.
好吧,说真的,我发誓mongo没有付钱给我写这个(我希望),但为爱情节日道歉.
无论你选择什么,祝你好运.
这是10gen创建的一篇详细文章,并举例说明了何时应该选择MongoDB或CouchDB.
http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB
编辑
上述链接已删除,但可以在此处查看:http://web.archive.org/web/20120614072025/http : //www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+ D B