关于 AWS DynamoDB 'Keys' 的一些基本疑问

kar*_*tik 1 key primary-key amazon-web-services amazon-dynamodb

我到处都看到这些术语——

  • 首要的关键
  • 排序键
  • 分区键
  • 二级钥匙

但我似乎对这些名字感到困惑:

  • 分区键和主键是一回事吗?这些是什么?
  • 排序键和二级索引也一样吗?如果我添加辅助键,它会起到什么作用?

此外,在创建创建 DynamoDB 表时,我添加'Order ID'了主键 - 现在,我需要将其替换为'User ID',并将 ' Order ID' 作为辅助键。

那么,Order ID将是“次要密钥”,而User ID将是“主密钥” 如何实现?

任何帮助表示赞赏!:) 谢谢!

Bru*_*eis 6

分区键和主键是一回事吗?这些是什么?

不。

主键是唯一标识表中每个项目的东西。

分区键是一种可能的主键,另一种是分区键+排序键(即“复合”主键,正如您在其他数据库系统中所称的那样)。

排序键和二级索引也一样吗?如果我添加辅助键,它会起到什么作用?

排序键和二级索引也是不同的东西。

排序键可以用作主键中“复合键”中的“第二个元素”。换句话说,主键可以是“分区键”或“分区键+排序键”类型。

二级索引完全是另一回事。二级索引允许您对表执行不同类型的优化查询。它需要知道您希望如何对您的项目进行分区和排序:对于本地二级索引,您只需指定一个排序键,因为它将隐式使用与主键相同的分区键。对于全局二级索引,您必须指定一个分区键,并且您可以选择指定一个排序键(因此在某种意义上,GSI 的定义方式与主键类似)。

看看这个:https : //docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html

它用很多例子解释了这一切。

在创建 DynamoDB 表时,我添加了“订单 ID”作为主键 - 现在,我需要将其替换为“用户 ID”,并将“订单 ID”作为辅助键。

你不能这样做。

无法更改 DynamoDB 表的主键。

这是相关文档:https : //docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html

我到处都看到这些术语 - [...]

作为最后的评论,请注意您可能还会看到其他一些术语。在过去,DynamoDB 对“分区键”和“排序键”使用不同的术语。它们过去分别被称为“哈希键”和“范围键”。您可能会在 SDK、CLI 参数等中看到很多对这些名称的引用。