当前位置: 首页 > 知识库问答 >
问题:

在Cassandra中分区键、复合键和聚类键的区别?

丁景山
2023-03-14
primary key,
partition key, 
composite key 
clustering key

共有1个答案

公冶鸣
2023-03-14

免责声明:这是DynamoDB特有的答案,但是这些概念也适用于Cassandra,因为这两个数据库都是NoSQL数据库。

创建表时,除了表名之外,还必须指定表的主键。主键唯一标识表中的每个项,因此没有两个项可以具有相同的键。

DynamoDB支持两种不同的主键:

DynamoDB使用分区键值作为内部哈希函数的输入。散列函数的输出确定了将存储项的分区(DynamoDB内部的物理存储)。具有相同分区键值的所有项都按照排序键值的排序顺序存储在一起。

在具有分区键和排序键的表中,两个项可能具有相同的分区键值。但是,这两个项必须具有不同的排序键值。

复合主键为查询数据提供了额外的灵活性。例如,如果只为Artist提供值,DynamoDB将检索该艺术家的所有歌曲。若要仅检索特定艺术家的歌曲子集,可以为artist提供一个值,并为SongTitle提供一系列值。

 类似资料:
  • 我们大量使用cassandra wide rows来存储每个用户的时间序列,因为它们非常适合那个用例。假设我们有一个表: 如果时间戳上的冲突可能发生(相同的用户可以用相同的时间戳发出两个不同的事件)。假设我们对所有事件都有一个顺序(每个事件都有一个序列int),那么调整这个模式来解决这个问题的最佳方法是什么。 我将无法执行-cassandra不允许这样做。

  • 有人能详细说明一下使用领域吗。确实需要两者都实现两者。?

  • 我有一个带有复合分区键的 cassandra 表(time_bucket 时间戳,节点 int)。time_bucket值是插入数据的时间,秒转换为 00,节点值范围为 0 到 100 spark作业每分钟运行一次,从表中提取数据。该表包含近2500万条记录,每分钟都有记录被添加。 如果我的 Spark 作业每次运行时都选择所有记录,则作业将在 2 分钟内完成。但是如果我使用: s < code

  • 与主键、复合键和候选键相比,dynamodb中的分区键和排序键是什么?

  • 我有一个用JPA和Spring Data DynamoDB建立的Spring项目。它工作正常。我可以通过分区键和排序键(称为DynamoDBHashKey和DynamoDBRangeKey)读取DynamoDB表中的项。 我的问题是,我的存储库的设置方式是使用查询和扫描操作来读取表,而不是使用获取项目操作,这应该会更高效。 这是我的实体: 这是我的存储库: 当我的表同时具有分区键和排序键时,如何配

  • Kafka只提供一个分区内消息的总顺序,而不提供主题中不同分区之间的消息的总顺序。每分区排序与按键对数据进行分区的能力相结合,对于大多数应用程序来说已经足够了。但是,如果您需要消息的总顺序,这可以通过只有一个分区的主题来实现,尽管这意味着每个使用者组只有一个使用者进程。 下面是我的问题: > 这是否意味着如果我希望有多个消费者(来自同一组)阅读一个主题,我需要有多个分区? 分区是如何编号的?从0开