我目前正在研究dynamodb文档,尚不清楚什么是哈希键和范围键以及应如何使用它们。
我只需要对它们是什么以及应该如何使用它们进行基本说明,以便我可以继续使用它。
答案 0 :(得分:2)
哈希键是您的分区键(类似于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 +时间戳,因为一个用户可能具有多个登录名。
在后台,分区密钥还用于在服务器之间分发数据。这就是DynamoDB确保其高速运行的方式-当有更多数据时,它会分布在更多服务器上。
如果表(例如Login表)具有给定分区键(例如,用户ID)的多个条目,则添加 Sort键可确保主键的唯一性该项目可以快速存储和检索。
哈希键 =分区键
范围键 =排序键
答案 2 :(得分:0)
哈希键和范围键(又称为排序键)一起构成数据库中每个项目的键。但是两个关键部分有什么区别?
“哈希键”是必需的。 DynamoDB是一个分布式表,并使用哈希键来决定将哪个项目放置在集群的哪个节点上。特别是,具有相同哈希键的所有项目最终都位于同一节点。
它们不仅仅出现在同一个节点上-实际上,它们按照项目密钥第二部分的顺序连续存储在磁盘上已排序,这就是为什么这部分之所以称为排序键-或范围键,是因为它可用于读取范围键的两个值之间的一系列项目。
同时拥有密钥的两个部分,可为您提供有效建模数据的强大方法。使用特定键(GetItem操作)或具有特定哈希键但具有范围键的范围的所有项目(查询操作)来检索特定项非常有效。 DynamoDB文档中有很多有关如何使用密钥的两个部分的示例。