为全局二级索引选择一级索引
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 中。
我正在阅读有关二级索引的 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 中。