如何使用 DynamoDB 建模双键/二级索引约束?
Posted
技术标签:
【中文标题】如何使用 DynamoDB 建模双键/二级索引约束?【英文标题】:How to model dual-key / secondary index constraint with DynamoDB? 【发布时间】:2014-02-17 20:52:04 【问题描述】:我有一个带有 HashKey account_id
和 RangeKey id
的表作为主键。我有一个二级索引 HashKey account_id
和 RangeKey name
。 name
是可选的,但如果指定,我希望辅助键是唯一的(每个帐户没有重复的名称)。如何创建在二级索引上保留此约束的 DynamoDB 架构?
【问题讨论】:
正如您所说,您的名称字段是可选的,但范围字段不能保持为空。 【参考方案1】:要使其工作,您必须创建“反向”全球二级索引。所以name
成为索引HashKey 而account_id
是RangeKey。因此,您可以拥有多个具有相同name
的帐户,但每个account_id
只能拥有一个name
。基本上,一个名称只能有唯一的帐户 :-) DynamoDB 不会让您插入具有相同组合键的新行,并且您的约束将被保留。
【讨论】:
我的问题是二级索引需要是唯一的,而不是主索引。也就是我还有account_id
和id
必须唯一的条件。
@edA-qamort-ora-y:在我原来的答案中,我省略了创建新全球二级索引的要求。我很抱歉。以上是关于如何使用 DynamoDB 建模双键/二级索引约束?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CloudFormation 中使用基础架构即代码实施 DynamoDB 全局二级索引
如何通过从 CloudFormation 中删除来从 DynamoDb 中删除全局二级索引?