如何使用 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 namename 是可选的,但如果指定,我希望辅助键是唯一的(每个帐户没有重复的名称)。如何创建在二级索引上保留此约束的 DynamoDB 架构?

【问题讨论】:

正如您所说,您的名称字段是可选的,但范围字段不能保持为空。 【参考方案1】:

要使其工作,您必须创建“反向”全球二级索引。所以name 成为索引HashKey 而account_id 是RangeKey。因此,您可以拥有多个具有相同name 的帐户,但每个account_id 只能拥有一个name。基本上,一个名称只能有唯一的帐户 :-) DynamoDB 不会让您插入具有相同组合键的新行,并且您的约束将被保留。

【讨论】:

我的问题是二级索引需要是唯一的,而不是主索引。也就是我还有account_idid必须唯一的条件。 @edA-qamort-ora-y:在我原来的答案中,我省略了创建新全球二级索引的要求。我很抱歉。

以上是关于如何使用 DynamoDB 建模双键/二级索引约束?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CloudFormation 中使用基础架构即代码实施 DynamoDB 全局二级索引

如何在 Dynamodb 中查询不同的哈希键和二级索引?

如何通过从 CloudFormation 中删除来从 DynamoDb 中删除全局二级索引?

使用二级索引改进数据访问DynamoDB

使用aws cli将全局二级索引添加到DynamoDB中的现有表

使用全局二级索引的 DynamoDB 表查询项