GSI 与冗余 dynamoDB
GSI vs redundancy dynamoDB
我有这个场景:
我必须在 dynamoDB table 中保存很多商店。每个商店都有一个 ID 字符串及其 PK。
每个商店都有一个字段“类别”,它是一个字符串,表示其类别(食品,纹身......)。
到目前为止一切正常。
我有这个用例:“在一个类别中给出获取该类别的所有商店”。
为了做到这一点,我想到了两个选择:
创建一个具有 PK“类别 ID”和“商店 ID”字段的 GSI。
通过这种方式,使用类别的 ID,我获得了该类别商店的所有 ID,然后对于每个商店 ID,我查询 main table 以获取每个商店的所有信息(名称、地址等) .).
我在主 table 中创建了一个名为“category_$id”类型的 PK(其中 $id 是类别 ID),并将商店的 ID 作为字段。这与 GSI 的情况一样,给定一个类别 ID,我有一组商店的 ID,然后对于每个 ID,我在相同的 table 上执行查询以获取该商店的所有信息。
我想知道这两个选项在成本/收益方面的区别是什么,哪个是最好的。
他们在我看来基本上是同一件事(唯一的区别是第一个使用另一个 table,即索引,而第二个使用相同的 table),但我等待更有经验的人的意见比我
GSI 的一个好处是可以减少管理工作。假设您 delete/add 一条记录 from/to 一条主线 table。这将自动反映在您的 GSI 中。
相比之下,如果你有两个独立的table,你必须自己管理它们之间的同步。
我有这个场景:
我必须在 dynamoDB table 中保存很多商店。每个商店都有一个 ID 字符串及其 PK。 每个商店都有一个字段“类别”,它是一个字符串,表示其类别(食品,纹身......)。
到目前为止一切正常。
我有这个用例:“在一个类别中给出获取该类别的所有商店”。
为了做到这一点,我想到了两个选择:
创建一个具有 PK“类别 ID”和“商店 ID”字段的 GSI。 通过这种方式,使用类别的 ID,我获得了该类别商店的所有 ID,然后对于每个商店 ID,我查询 main table 以获取每个商店的所有信息(名称、地址等) .).
我在主 table 中创建了一个名为“category_$id”类型的 PK(其中 $id 是类别 ID),并将商店的 ID 作为字段。这与 GSI 的情况一样,给定一个类别 ID,我有一组商店的 ID,然后对于每个 ID,我在相同的 table 上执行查询以获取该商店的所有信息。
我想知道这两个选项在成本/收益方面的区别是什么,哪个是最好的。 他们在我看来基本上是同一件事(唯一的区别是第一个使用另一个 table,即索引,而第二个使用相同的 table),但我等待更有经验的人的意见比我
GSI 的一个好处是可以减少管理工作。假设您 delete/add 一条记录 from/to 一条主线 table。这将自动反映在您的 GSI 中。
相比之下,如果你有两个独立的table,你必须自己管理它们之间的同步。