代码之家  ›  专栏  ›  技术社区  ›  Mantas Vidutis

文档存储的最佳用途是什么?

  •  25
  • Mantas Vidutis  · 技术社区  · 16 年前

    我听说过很多面向文档的数据存储,比如CouchDB。我了解像Cassandra这样的大型商店的用途。读后 this question ,我想知道使用文档库的条件是什么?

    2 回复  |  直到 16 年前
        1
  •  30
  •   Niels van der Rest    16 年前

    列族存储(如bigtable和cassandra)的查询功能非常有限。应用程序负责维护索引,以便查询更复杂的数据模型。

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

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

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

    把文档数据库想象成一辆豪华跑车。它不需要一个专业的司机(阅读:复杂的应用程序)来让你从A到B,它具有空调和舒适的座椅等功能,它将在一个可接受的时间内超越高伸缩性轨道。但是,如果您想在高可伸缩性轨道上设置一个圈记录,您可以 需要一个专业的司机和一个高度优化的汽车(如卡桑德拉),这缺乏空调等功能。

        2
  •  9
  •   J Chris A    16 年前

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

    这就像是电动车窗、加热座椅或踢腿立体声音响。

    推荐文章