DynamoDB:搜索散列键或范围键

时间:2017-08-04 10:23:18

标签: amazon-dynamodb

我是DynamoDB的新手。我有一个要求,我需要设计一个表来共享手机上的代码。代码详细信息将存储为属性。例如:

  • ' A'将代码分享给' 1234567890'
  • ' A'将代码分享给' 1234567891'
  • ' B'将代码分享给' 1234567890'
  • ' B'将代码分享给' 1234567891'

' A'和' B'是用户' 1234567890'和' 1234567891'是收件人。如果我将UserId哈希键和RecipientNumber作为范围键,我可以找出与用户共享代码的收件人。我的要求是双向查询: 1.用户共享代码的收件人列表(在查询中传递userId) 2.与收件人共享的代码列表(所有与收件人共享代码的用户)

设计表格的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

这就是DynamoDB Global Secondary Indexes所拥有的。它们允许您创建数据的附加投影,其中收件人可以是哈希键。

答案 1 :(得分:0)

您需要将表格定义为:

用户 - 字符串 - 分区键

收件人 - 字符串 - 范围键

并添加以下全球二级索引:

收件人 - 字符串 - GSI分区密钥

用户 - 字符串 - GSI范围键

常规分区键将允许您查找用户的所有收件人,而GSI将允许您查找收件人的所有用户。

P.S。您可以在此video中详细了解DynamoDB设计模式,特别是有关双向查询here的信息。