为全局二级索引选择一级索引

Choose primary index for Global secondary index

我正在阅读有关二级索引的 AWS 文档,但我不理解以下语句:

The index key does not need to have any of the key attributes from the table

据我了解,GSI 允许我在 table 中的属性创建后创建主键或排序键。

我想确保我理解上面的陈述,这是否意味着我可以在不同于当前 table 的属性上创建主键或排序键 primary/hash键?

是的,就是这个意思。假设您有一个 table,其复合主键包含 bundle_id 作为分区键和 item_id 作为排序键。假设您在 table 中也有一个名为 client_id.

的属性

然后您可以创建一个 GSI,我们将其命名为 client_id-index,并将 client_id 作为其分区键,您还可以在 GSI 中包含一些其他属性。

然后您可以像这样查询 GSI(使用 Python 和 Boto3 的代码示例)

table.query(
    IndexName='client_id-index',
    KeyConditionExpression=Key('client_id').eq("123456")
)

请注意,即使您在 GSI 中将 ProjectionType 指定为 INCLUDE 并包含一些 non-key 属性,table 中的关键属性也会包含在您的 GSI 中。