代码之家  ›  专栏  ›  技术社区  ›  raoulsson

MongoDB和CouchDB是完美的替代品吗?

  •  56
  • raoulsson  · 技术社区  · 15 年前

    我的手还没弄脏 CouchDB 也不 MongoDB 但我很快就想这么做…我也读过一些关于这两个系统的文章,在我看来它们涵盖了相同的情况…或者我缺少一个关键的区别特征?

    我希望在下一个项目中使用基于文档的存储,而不是传统的RDBMS。我还需要数据存储

    • 处理大型二进制对象(图像和视频)
    • 自动将自身复制到物理上分离的节点
    • 需要额外的RDBMS

    两者都同样适合这些要求吗?

    谢谢!

    6 回复  |  直到 7 年前
        1
  •  49
  •   rfunduk    15 年前

    实际上,我已经非常广泛地使用这两种方法,都用于非常不同的项目。

    我想说,它们同样非常适合您列出的需求,但是两者之间有很大的差异。在我看来,最大的问题是他们的查询能力。CouchDB没有RDBMS意义上的“查询”(select*from…),而是使用' views '这更像是存储过程(本质上是定义的静态查询 在里面 数据库 (一) )。MongoDB有很多 more 'usual' querying .

    本质上,这取决于您的应用程序需求。如果你提供更多的信息,我可能会更清楚地了解在这种情况下可能发生的事情。

    (1) :您可以在couchdb中临时使用非静态查询,但不建议用于生产使用。

        2
  •  11
  •   mikeal    15 年前

    Mongo使用更“传统”的查询。您可以基于每个键打开索引,并使用sqlish查询语法。

    couchdb的视图可以做更深入的索引和关系,但需要您做更多的工作,并了解键排序处理查询的方式。

    复制系统也有很大的不同。Mongo的复制看起来很像大多数RDBMS解决方案,包括主服务器和从服务器等等。couchdb的复制更加对等,没有主/从,每个couchdb都是一个节点。

        3
  •  11
  •   Jan Lehnardt    15 年前

    CouchDB的复制是为了保持地理位置上的站点同步。它通过重新启动中断的复制来优雅地处理网络和其他错误。参与的节点甚至可以有意地离线。

        4
  •  4
  •   Clint Miller    15 年前

    在使用MongoDB之前,我建议您查看以下内容: http://groups.google.com/group/mongodb-user/browse_thread/thread/460dbd49a5b6b267 . 由于MongoDB在每次写入时都缺少fsync,因此它损坏数据的可能性很小。

        6
  •  0
  •   Uberto    13 年前

    从开发人员的角度来看,最大的区别是MongoLive查询与Coach视图(必须“编译”)。 从操作的角度来看,coach完全在HTTP REST上工作。如果您能够配置HTTP服务器,那么您就知道如何设置Coach。相反,使用mongo,您必须学习如何设置配置服务器、副本集和mongos(类似于平衡器)。