|
|
1
30
列族存储(如bigtable和cassandra)的查询功能非常有限。应用程序负责维护索引,以便查询更复杂的数据模型。 文档数据库允许您查询内容,而不仅仅是键。它还将为您管理索引,从而降低应用程序的复杂性。 Domain-driven design 传播聚合和价值对象的使用。 As Ayende points out ,(复杂)聚合是作为单个文档存储的非常自然的候选者,而不是在多个表或列族上规范化它们。这将降低持久性层的复杂性。由于所有数据都包含在单个文档中,因此相关数据分散在多个节点上的可能性也较小。 如果应用程序需要存储多态对象,那么文档数据库也是一个很好的候选者。当然,这也可以存储在Cassandra中,但是您没有那么多的查询功能。至少不是开箱即用。 把文档数据库想象成一辆豪华跑车。它不需要一个专业的司机(阅读:复杂的应用程序)来让你从A到B,它具有空调和舒适的座椅等功能,它将在一个可接受的时间内超越高伸缩性轨道。但是,如果您想在高可伸缩性轨道上设置一个圈记录,您可以 将 需要一个专业的司机和一个高度优化的汽车(如卡桑德拉),这缺乏空调等功能。 |
|
|
2
9
CouchDB的另一个特性是,您可以创建这些聚合,而不是作为手动存储的文档,而是作为视图(从存储的数据派生,并自动更新)。 这就像是电动车窗、加热座椅或踢腿立体声音响。 |