DynamoDB:如何获取 GSI 分区键的唯一值?

OEu*_*rix 2 database duplicates nosql amazon-dynamodb

假设在 AWS DynamoDB 中,我有一张表:

ID (Partition key, GSI's Sort Key)   OtherAttribute      Name (GSI's Partition Key)
0                                       1/1/2020                Alice
1                                       2/1/2020                Bob
2                                       3/1/2020                John
3                                       4/1/2020                Alice
4                                       5/1/2020                Bob
5                                       5/1/2020                Michael
Run Code Online (Sandbox Code Playgroud)

我的 GSI 投影了原始表的所有属性。

现在我想最终得到一个Set数据结构{“Alice”,“Bob”,“John”,“Michael”}。

我怎样才能实现这个目标?看来 Scan 操作本身无法选择唯一值,这意味着在我的情况下 Scan 操作无法变得更快,对吗?然后,在获得检索到的所有项目的列表后,我需要对此列表进行操作以提取 column 的唯一值Name,这是执行此操作的唯一方法吗?

因此我想我需要扫描整个表。这里还有一个问题就是,既然我的GSI投影了所有属性,那么扫描GSI还是只扫描原始表会有什么区别吗?我的目标当然是尽快完成这项工作。

有人可以提供一些建议吗?

谢谢!

Cha*_*les 5

Dynamo 不支持此类操作。

您可能需要重新考虑 DDB 的使用。

在 dynamo 中高效完成所需任务的唯一方法是启用流并使用 Lambda 函数来更新另一个 DDB 表或现有表中的另一组行...

您只需使用类似于“DISTINCT_NAME”的分区键和 :name 的排序键来存储记录。

这与用于物化聚合的解决方案基本上相同