【发布时间】:2019-10-26 21:09:52
【问题描述】:
我正在阅读有关二级索引的 AWS 文档,但我不理解以下陈述:
索引键不需要具有任何来自 表
据我了解,GSI 允许我在创建表后在表中的属性上创建主键或排序键。
我想确保我理解上面的陈述,这是否意味着我可以在不同于当前表的主键/哈希键的属性上创建主键或排序键?
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-dynamodb throughput capacity
我正在阅读有关二级索引的 AWS 文档,但我不理解以下陈述:
索引键不需要具有任何来自 表
据我了解,GSI 允许我在创建表后在表中的属性上创建主键或排序键。
我想确保我理解上面的陈述,这是否意味着我可以在不同于当前表的主键/哈希键的属性上创建主键或排序键?
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-dynamodb throughput capacity
是的,这正是它的意思。假设您有一个包含复合主键的表,其中bundle_id 作为分区键,item_id 作为排序键。假设您在该表中还有一个名为 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 并包含一些非关键属性,表中的关键属性也将包含在您的 GSI 中。
【讨论】: