我试图弄清楚如何在DyamoDB中实现反向查找GSI。我参加了今年reInvent(https://youtu.be/HaEPXoXVf2k?t=2674)上有关DynamoDB的精彩演讲。演讲约44分钟后,提出了反向查找GSI的想法。我不知道如何在Dynamo中实现这一点。
我想添加一个GSI进行反向查找。
我希望能够仅在CXSK上进行查询。我正在计划重载CXSK,并希望能够以该键开头的查询。
我不确定去创建GSI时会缺少什么。我不确定在以下字段中应该输入什么。我也很好奇拥有重载的排序键是否有意义。
答案 0 :(得分:1)
假设这是您的原始表格
| pk | sk | prop1 | prop2 | ...
| a | b | xyz | abc
| a | c | lmn | opq
| b | x | rst | lme
| b | b | tuv | opq
在上表中,您可以执行类似的查询
select * where pk = a
将返回第1行和第2行
select * where pk = a and sk = b
将返回第1行
现在进行反向查找意味着您想通过其他字段名称来聚合数据。 假设我们想通过sk做到这一点。为此,我们将创建一个GSI,其中sk为partitionKey,pk为SortKey。这张表的外观会像
这将是您的GSI1表
| pk | sk | prop1 | prop2 | ...
| b | a | xyz | abc
| c | a | lmn | opq
| x | b | rst | lme
| b | b | tuv | opq
在上表中,您可以执行类似的查询
select * where pk = b
将返回第1行和第4行
select * where pk = b and sk = a
将返回第1行
考虑到以上描述,在您的情况下,您应该使用pk作为CXSK和sk作为USERId创建GSI