何时通过MongoDB使用CouchDB,反之亦然

我困在这两个NoSQL数据库之间。

在我的项目中,我将在数据库中创建一个数据库。 例如,我需要一个解决方案来创建动态表。

因此用户可以创建具有列和行的表格。 我认为无论是MongoDB还是CouchDB都会对此有所帮助,但我不确定哪一个。 我也需要高效的分页功能。


C,A&P(一致性,可用性和分区容限)哪2对你更重要? 快速参考,NoSQL系统视觉指南

  • MongodB:一致性和分区容忍
  • CouchDB:可用性和分区容差
  • Cassandra与MongoDB,CouchDB与Redis,Riak与HBase与Membase与Neo4j比较的博客文章比较了每个NoSQL数据库的'最佳使用'场景。 引用链接,

  • MongoDB:如果你需要动态查询。 如果你更喜欢定义索引,而不是map / reduce函数。 如果你需要在大数据库上有良好的表现。 如果你想要CouchDB,但你的数据变化太大,填满磁盘。
  • CouchDB:用于累积,偶尔会更改要运行预定义查询的数据。 版本控制很重要。
  • 最近(2012年2月)和Riyad Kalla更全面的比较,

  • MongoDB:仅主从复制
  • CouchDB:主 - 主复制
  • 一位博客文章(2011年10月)由一位同时尝试过的人撰写,MongoDB Guy Learns CouchDB对CouchDB的分页发表评论并没有那么有用。

    由Kristina Chodorow(MongoDB背后团队的一部分)发布日期(2009年6月)基准,

    我会去MongoDB。

    希望能帮助到你。


    上面的答案使这个故事复杂化了。

  • 如果您打算拥有移动组件,或需要桌面用户脱机工作,然后将他们的工作同步到服务器,则需要使用CouchDB。
  • 如果你的代码只能在服务器上运行,那么就使用MongoDB
  • 而已。 除非您需要CouchDB(真棒)才能复制到移动设备和桌面设备,否则MongoDB目前具有性能,社区和工具优势。


    非常古老的问题,但它是谷歌的顶部,我不太喜欢我看到的答案,所以这是我自己的。

    Couchdb比开发CouchApps的能力还要多。 大多数人在经典的三层Web架构中使用CouchDb。

    在实践中,大多数人的决定因素将是MongoDb允许使用类似SQL的语法进行临时查询,而CouchDb则没有(您必须创建地图/缩减视图,即使创建这些视图也会使某些人不在场快速应用程序开发友好 - 他们与存储过程无关)。

    为了解决接受的答案中提出的问题:CouchDb有一个很好的版本系统,但这并不意味着它只适合(或更适合)版本化非常重要的地方。 此外,couchdb由于其追加性质而非常重写(写入操作很快就会返回,同时保证不会丢失任何数据)。

    任何人都没有提到的一个非常重要的事实是CouchDb依赖于b-tree索引。 这意味着无论你有1“行”还是200亿,查询时间总是会保持在10ms以下。 这是一款让CouchDb成为低延迟且易读的数据库的游戏转换器,这真的不应该被忽视。

    为了公平和详尽,MongoDb对CouchDb的优势在于工具和市场营销。 他们拥有适用于所有主流语言和平台的一流公民工具,使得入职变得轻松,并且添加到他们即席查询中使得从SQL转换变得更加容易。

    CouchDb没有这种级别的工具 - 尽管现在有很多库可用 - 但CouchDb作为HTTP API公开,因此很容易用您喜欢的语言创建一个包装器来与它交谈。 我个人喜欢这种方法,因为它避免了膨胀,并允许你只采取你想要的(界面隔离原理)。

    所以我会说使用其中之一很大程度上是一个舒适和偏好与他们的范例。 对于某些人来说,CouchDb方法“恰到好处”,但是如果在了解了数据库功能之后(在详尽的官方指南中),您没有“地狱耶”时刻,那么您应该继续前进。

    如果您只是想使用“适合正确工作的正确工具”,那么我就不鼓励使用CouchDb。 因为你会发现你不能以这种方式使用它,你最终会生气并写博客帖子,比如“CouchDb中的连接在哪里?” 和“交易管理在哪里?”。 事实上,Couchdb是 - 自相矛盾 - 非常透明,但同时需要一种范式转变,并改变你处理问题的方式,以真正发挥(并真正起作用)。

    但是一旦你完成了这一切,它确实值得回报。 我个人需要非常强大的理由或一个项目中的重大决策来选择另一个数据库,但到目前为止我还没有遇到任何问题。

    链接地址: http://www.djcxy.com/p/2473.html

    上一篇: When to use CouchDB over MongoDB and vice versa

    下一篇: Why is this program erroneously rejected by three C++ compilers?