8

我读过几篇文章,例如这篇文章,比较了像 MongoDb、CouchDb 和 CouchBase 这样的文档存储与像 Cassandra 这样的列族存储。

一个比较是,文档存储在更高的粒度级别上工作,而不是让您处理文档的各个部分的列族存储。我发现这根本不正确,因为 Redis 通过hset 操作支持这一点, mongodb也是如此。

那么是否有这样的论点,即尽管这两种类型的解决方案都允许更新/读取文档的某些部分,但列族存储在这方面比文档存储更有效?

这是否也意味着我应该采用文档存储路径来插入和读取繁重的应用程序,而采用列族路径来更新和读取繁重的应用程序?

还有哪些其他差异可以帮助我选择一种解决方案而不是另一种?

谢谢!

4

1 回答 1

9

我建议主要区别在于查询模型。它们都可以存储相似的数据结构(例如,您可以将 JSON 文档放入 CF 存储中),但文档存储通常为您提供按值查询的功能,而 CF 存储通常不提供。然而,界限越来越模糊,随着每个数据库项目的成熟,这种概括似乎变得越来越不适用。例如,Cassandra(一个流行的 CF 存储)确实提供了一些带有二级索引的按值查询功能。然而,大多数 CF 存储要求您以您打算读取的方式写入数据,这意味着您必须根据查询来考虑您的数据模型。

在我看来,各种数据库技术之间还有其他同样重要的区别,例如一致性模型、数据中心复制能力、扩展模型、易于管理、缓存能力等。

于 2012-06-08T19:33:16.990 回答