DynamoDB和Cassandra的数据模型怎么调用?

How do you call the data model of DynamoDB and Cassandra?

DynamoDB Wikipedia article says that DynamoDB is a "key-value" 数据库。但是,将其称为 "key-value" 数据库完全忽略了 DynamoDB 的一个极其基本的特性,即 排序键 :键有两部分(分区键和排序键),具有相同分区键的项可以按排序键排序一起高效地检索。

Cassandra 也具有完全相同的分区内排序项功能(它称为 "clustering key"),以及描述它的 Cassandra Wikipedia article uses the term wide column store。然而,虽然这个术语 "wide column" 比 "key-value" 好,但它仍然有些不合适,因为它描述了更一般的情况,即一个项目可以有大量不相关的列 - 不一定是排序列表单独的项目。

所以我的问题是是否有更合适的 术语 可以描述像 DynamoDB 和 Cassandra 这样的数据库的数据模型 - 像键值存储这样的数据库可以有效地检索单个键的项目,但也可以有效地检索按键排序的项目或仅检索键的一部分(DynamoDB 的 排序键 或 Cassandra 的 聚类键 ).

在引入 CQL 之前,Cassandra 更严格地遵循宽列存储数据模型,其中您只有由行键标识的行并包含排序的 key/value 列。随着 CQL 的引入,行被称为分区,列可以通过集群键选择性地分组到逻辑行中。

即使在 Cassandra 3.0 之前,CQL 也只是原始节俭数据模型之上的抽象,存储引擎中没有 CQL 行的概念。它们只是一组经过排序的列,其中包含一个由聚类键的串联值组成的复合键。 this article 中提供了更多详细信息。现在存储引擎原生支持CQL,可以更高效地存储CQL数据模型。

但是,如果您将 CQL 行视为同一分区内列的逻辑分组,那么 Cassandra 仍然可以被视为宽列存储。无论如何,据我所知,没有另一个公认的术语来描述这种数据库。