什么是dynamodb中的哈希键和范围键以及如何使用它们

时间:2019-08-08 15:34:13

标签: amazon-web-services amazon-dynamodb dynamoose

我目前正在研究dynamodb文档,尚不清楚什么是哈希键和范围键以及应如何使用它们。

我只需要对它们是什么以及应该如何使用它们进行基本说明,以便我可以继续使用它。

3 个答案:

答案 0 :(得分:2)

来自DynamoDB Documentation

哈希键是您的分区键(类似于SQL中的主键)。 In a table that has only a partition key, no two items can have the same partition key value.-在缺少排序键的情况下为true

范围键是您的排序键(称为复合键)-可以将哈希键+范围键组合在一起。 The first attribute is the partition key, and the second attribute is the sort key

例如:

H1 + R1-> H1R1是一个组合键。

H1 + R2-> H1R2是另一个组合键。

对于现实情况,请考虑一个用户但有多个角色的情况。

用户ID本身不能在所有情况下使用。用户ID +角色ID构成唯一的组合键。

答案 1 :(得分:2)

我喜欢这样想:

  • 表中的每个项目(行)都必须具有唯一ID(主键)
  • 主键是:
    • 分区键
    • 分区键+排序键

例如,如果您有一个发票表,则主键应为发票编号。如果您有一个登录表,则主键将为用户ID +时间戳,因为一个用户可能具有多个登录名。

在后台,分区密钥还用于在服务器之间分发数据。这就是DynamoDB确保其高速运行的方式-当有更多数据时,它会分布在更多服务器上。

如果表(例如Login表)具有给定分区键(例如,用户ID)的多个条目,则添加 Sort键可确保主键的唯一性该项目可以快速存储和检索。

哈希键 =分区键

范围键 =排序键

答案 2 :(得分:0)

哈希键范围键(又称为排序键)一起构成数据库中每个项目的键。但是两个关键部分有什么区别?

“哈希键”是必需的。 DynamoDB是一个分布式表,并使用哈希键来决定将哪个项目放置在集群的哪个节点上。特别是,具有相同哈希键的所有项目最终都位于同一节点。

它们不仅仅出现在同一个节点上-实际上,它们按照项目密钥第二部分的顺序连续存储在磁盘上已排序,这就是为什么这部分之所以称为排序键-或范围键,是因为它可用于读取范围键的两个值之间的一系列项目。

同时拥有密钥的两个部分,可为您提供有效建模数据的强大方法。使用特定键(GetItem操作)或具有特定哈希键但具有范围键的范围的所有项目(查询操作)来检索特定项非常有效。 DynamoDB文档中有很多有关如何使用密钥的两个部分的示例。