文档商店的最佳用途是什么?

时间:2010-07-31 03:18:34

标签: sql nosql couchdb cassandra document-based

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

2 个答案:

答案 0 :(得分:30)

Bigtable和Cassandra等列式系列商店的查询功能非常有限。应用程序负责维护索引,以便查询更复杂的数据模型。

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

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

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

将文档数据库视为豪华跑车。它不需要专业的驱动程序(阅读:复杂的应用程序)让你从A到B,它具有空调和舒适的座椅等功能,它将在可接受的时间内完成高可扩展性的轨道。但是,如果您想在高可扩展性轨道上设置单圈记录, 需要专业的驾驶员和高度优化的车(例如Cassandra),它缺乏空调等功能。

答案 1 :(得分:9)

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

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