【问题标题】:What are the best uses of document stores?文档存储的最佳用途是什么?
【发布时间】:2011-03-23 13:00:51
【问题描述】:

我听说过很多关于像 CouchDB 这样的面向文档的数据存储。我了解 BigTable 的用途,例如 Cassandra 等商店。在阅读this question 之后,我想知道使用文档存储的条件是什么?

【问题讨论】:

    标签: sql nosql couchdb cassandra document-based


    【解决方案1】:

    Bigtable 和 Cassandra 等列族存储的查询能力非常有限。应用程序负责维护索引以查询更复杂的数据模型。

    文档数据库允许您查询内容,而不仅仅是键。它还将为您管理索引,从而降低您的应用程序的复杂性。

    Domain-driven design 宣传使用聚合和值对象。 As Ayende points out,(复杂)聚合是存储为单个文档的非常自然的候选者,而不是在多个表或列族上规范化它们。这将降低持久层的复杂性。相关数据分散在多个节点上的可能性也较小,因为所有数据都包含在一个文档中。

    如果您的应用程序需要存储多态对象,文档数据库也是不错的选择。当然,这也可以存储在 Cassandra 中,但您不会有那么多查询功能。至少不是开箱即用。

    将文档数据库想象成一辆豪华跑车。它不需要专业的司机(阅读:复杂的应用程序)将您从 A 带到 B,它具有空调和舒适座椅等功能,并且可以在可接受的时间内完成高可扩展性赛道。但是,如果您想在高可扩展性赛道上创造单圈记录,您需要一名专业车手和一辆高度优化的汽车(例如 Cassandra),而这辆车缺乏空调等功能。 p>

    【讨论】:

    • 嘿,多好的描述啊!我唯一要补充的是,CouchDB 的目标是成为数据库的本田雅阁,而不是法拉利。但是我认为它们是不同的隐喻,只是巧合。
    【解决方案2】:

    CouchDB 的另一个特性是您可以创建这些聚合,而不是手动存储的文档,而是作为视图(从存储的数据派生并自动更新。)

    这就像电动车窗、加热座椅或踢脚音响。

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2021-07-05
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多