我目前正在研究 dynamodb 文档,但不清楚哈希键和范围键是什么以及应该如何使用它们。
我只需要对它们是什么以及我应该如何使用它们进行基本解释,以便我可以继续使用它。
我目前正在研究 dynamodb 文档,但不清楚哈希键和范围键是什么以及应该如何使用它们。
我只需要对它们是什么以及我应该如何使用它们进行基本解释,以便我可以继续使用它。
我喜欢这样想:
例如,如果您有一个Invoices表,那么主键将是Invoice Number。如果您有一个登录表,那么主键将是用户 ID + 时间戳,因为一个用户可以有多个登录。
在幕后,分区密钥还用于在服务器之间分发数据。这就是 DynamoDB 确保其高速度的方式——当有更多数据时,它会分布在更多服务器上。
如果一个表(例如登录表)对于给定的分区键(例如用户 ID)有多个条目,那么添加排序键可以确保主键的唯一性,以便可以快速存储和检索项目。
哈希键= 分区键
范围键= 排序键
哈希键是您的分区键(类似于 SQL 中的主键)。In a table that has only a partition key, no two items can have the same partition key value.
- 在没有排序键的情况下为真
范围键是您的排序键(称为复合键) - 使得哈希键 + 范围键的组合成为可能。The first attribute is the partition key, and the second attribute is the sort key
例如:
H1 + R1 -> H1R1 是一个复合键。
H1 + R2 -> H1R2 是另一个复合键。
对于现实世界的场景,考虑一个用户但有多个角色的情况。
用户 ID 本身不能用于所有情况。User-Id + Role-Id 构成唯一的复合键。
哈希键和范围键(又名排序键)共同构成数据库中每个项目的键。但是这两个关键部分有什么区别?
“哈希键”是强制性的。DynamoDB 是一个分布式表,它使用哈希键来决定在集群的哪个节点上放置此项。特别是,具有相同哈希键的所有项目最终都在同一个节点中。
它们不只是在同一个节点中结束——它们实际上是连续存储在磁盘上,按照项目键的第二部分的顺序排序,这就是为什么这部分被称为排序键- 或范围键因为它可用于读取范围键的两个值之间的一系列项目。
拥有密钥的这两个部分为您提供了强大的方法来对数据进行建模,从而可以有效地检索数据。检索具有特定键的特定项目(GetItem 操作)或具有特定哈希键但范围键范围的所有项目(查询操作)是有效的。DynamoDB 文档中有很多关于如何使用密钥的两个部分的示例。