2

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

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

4

3 回答 3

7

我喜欢这样想:

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

例如,如果您有一个Invoices表,那么主键将是Invoice Number。如果您有一个登录表,那么主键将是用户 ID + 时间戳,因为一个用户可以有多个登录。

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

如果一个表(例如登录表)对于给定的分区键(例如用户 ID)有多个条目,那么添加排序键可以确保主键的唯一性,以便可以快速存储和检索项目。

哈希键= 分区键

范围键= 排序键

于 2019-08-09T00:34:27.737 回答
2

来自DynamoDB 文档

哈希键是您的分区键(类似于 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 构成唯一的复合键。

于 2019-08-08T18:52:09.850 回答
0

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

“哈希键”是强制性的。DynamoDB 是一个分布式表,它使用哈希键来决定在集群的哪个节点上放置此项。特别是,具有相同哈希键的所有项目最终都在同一个节点中。

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

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

于 2019-08-08T21:49:38.970 回答