我希望我的所有用户都能够非常快速地读取和写入数据存储。看起来 MongoDb 的读取速度非常快,但是如果需要将一个主数据库放置在离客户端很远的地方,那么写入似乎会非常非常慢。 Couchdb 似乎读取速度很慢,但是在客户端离主服务器很远的情况下,写入情况如何。 使用 couchdb,我们可以拥有多个主 Node ,这意味着我们始终可以在客户端附近拥有一个写入 Node 。在我们的用户群分布在很远的地理位置的情况下,couchdb 的写入速度实际上是否比 mongodb 更快?
我很想使用 mongoDb,因为它的速度非常快,但是我的一些用户离 only master 很远,会有很糟糕的体验。 对于全局范围内的系统类型,couchDb 会不会更好。在全局都有用户的情况下,mongodb不是完全排除了吗? MongoDb,如果你在听,为什么不做一些简单的多主机设置,冲突解决可以成为更新语义的一部分? 这似乎是 mongoDb 完全主导 nosql 市场份额的唯一因素。其他一切都非常令人印象深刻。
最佳答案
披露:我是 MongoDB 的粉丝和用户,我对 CouchDB 的经验为零。
我有一个读写密集型的重型应用程序。我会说读取数量超过写入数量大约为 30:1。 mongo 的设计方式读取总是比写入快得多,诀窍(根据我的经验)是让您的写入非常高效,以便您可以将更高比例的系统资源用于写入。
在 mongo 之上构建产品时,要记住的关键是 _id 字段。该字段会自动生成并添加到您的所有 JSON 对象中,当您设计查询(查找)时,它看起来类似于 47cc67093475061e3d95369d,因为它包含机器位置(我认为也是磁盘位置?? ? - 我应该检查一下)对象所在的位置,因此当您使用查找或更新时使用此字段将真正加快您的机器速度。在您的系统设计中考虑这一点。
例子:
我的数据库中的 2 个集群是“用户”和“帖子”。一个用户可以创建多个帖子。在我的应用程序的实现中,这两个集合必须相互引用。
在每个帖子对象中,我存储父用户的 _id。 在每个用户对象中,我存储了一个包含用户创作的所有帖子的数组。
现在,我可以在每个用户页面上生成所有已创作帖子的列表,而无需进行资源紧张的查询,而是直接查找 _id。 mongo 集群越大,影响越大。
如果您完全熟悉 oracle 的物理位置 rowid,您可能只在 mongo 中理解这个概念,它更棒更强大。
去年,当我们最终决定放弃 MySQL 转而使用 mongo 时,我感到很害怕,但我可以告诉你以下关于我的经历: - 数据移植总是很糟糕,但它和我想象的一样好。 - Mongo 可能是目前记录最好的 NoSQL DB,开源社区也很棒。 - 当他们说快速和可扩展不是开玩笑的时候,它会飞。 - 在我看来,模式设计比键/值类型数据库更简单、更自然、更有序。 - 整个系统似乎为最小化用户复杂性而设计,添加 Node 等轻而易举。
好吧,说真的,我发誓 mongo 并没有付钱给我写这篇文章(我希望),但为爱情节道歉。
无论你选择什么,祝你好运。
关于MongoDb 与 CouchDb : write speeds for geographically remote clients,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4242793/