【问题标题】:How do you call the data model of DynamoDB and Cassandra?DynamoDB 和 Cassandra 的数据模型怎么称呼?
【发布时间】:2020-07-03 00:06:50
【问题描述】:

DynamoDB Wikipedia article 表示 DynamoDB 是“key-value”数据库。但是,将其称为“键值”数据库完全忽略了 DynamoDB 的一个极其基本的特性,即 排序键:键有两部分(分区键和排序键)和具有相同分区的项目key 可以通过 sort key 排序后高效检索。

Cassandra 也具有完全相同的排序项内部分区功能(称为“集群键”),Cassandra Wikipedia article 使用术语wide column store 来描述它。然而,虽然“宽列”这个术语比“键值”更好,但它仍然有些不合适,因为它描述了更一般的情况,即一个项目可以有大量不相关的列 - 不一定是单独的排序列表项目。

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

【问题讨论】:

  • 我找到“Key-Key-Value”来捕捉这个模型的 Partition / Ordering / Value 性质
  • 我投票结束这个问题,因为它似乎与编码无关。
  • 为什么需要和“编码”相关?它没有标签 C++ 或 Java 或任何其他编程语言,因此它与任何编程语言的编码无关。它有 Cassandra 等人。标签 - 表明它与那个软件有关。有没有更好的 stackexchange 网站,您认为可以更好地解决有关软件的问题?请注意,这个问题已经有 +2 分。显然,这不是一个非常糟糕的问题。
  • 我的建议“Key-Sortable-Value”

标签: cassandra amazon-dynamodb scylla


【解决方案1】:

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

即使在 Cassandra 3.0 之前,CQL 也只是原始 thrift 数据模型之上的抽象,并且在存储引擎中没有 CQL 行的概念。它们只是一组已排序的列,其复合键由集群键的连接值组成。更多细节在this article 中给出。现在存储引擎原生支持 CQL,可以更高效地存储 CQL 数据模型。

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

【讨论】:

    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多