GSI 与冗余 dynamoDB

GSI vs redundancy dynamoDB

我有这个场景:

我必须在 dynamoDB table 中保存很多商店。每个商店都有一个 ID 字符串及其 PK。 每个商店都有一个字段“类别”,它是一个字符串,表示其类别(食品,纹身......)。

到目前为止一切正常。

我有这个用例:“在一个类别中给出获取该类别的所有商店”。

为了做到这一点,我想到了两个选择:

  1. 创建一个具有 PK“类别 ID”和“商店 ID”字段的 GSI。 通过这种方式,使用类别的 ID,我获得了该类别商店的所有 ID,然后对于每个商店 ID,我查询 main table 以获取每个商店的所有信息(名称、地址等) .).

  2. 我在主 table 中创建了一个名为“category_$id”类型的 PK(其中 $id 是类别 ID),并将商店的 ID 作为字段。这与 GSI 的情况一样,给定一个类别 ID,我有一组商店的 ID,然后对于每个 ID,我在相同的 table 上执行查询以获取该商店的所有信息。

我想知道这两个选项在成本/收益方面的区别是什么,哪个是最好的。 他们在我看来基本上是同一件事(唯一的区别是第一个使用另一个 table,即索引,而第二个使用相同的 table),但我等待更有经验的人的意见比我

GSI 的一个好处是可以减少管理工作。假设您 delete/add 一条记录 from/to 一条主线 table。这将自动反映在您的 GSI 中。

相比之下,如果你有两个独立的table,你必须自己管理它们之间的同步。