DynamoDB创建另一个表来查询表中的列表属性



我从某人那里继承了DynamoDB。

有一个名为Item的表。它使用项id作为分区键,分区键也是主键(该表中没有排序键(。

每个项目都有一个Tags属性,它是一个类似tag1、tag2等的列表。现在,我有了一个新的用例,我想高效地逐个标签查询项目。最好的解决方案是什么?

我正在考虑为Tags创建另一个表,它将是一个分区键,项id将成为其排序键。除了重新设计项目表之外,这是最好的解决方案吗?

Partition key(Primary key)   tags.           name        other attributes....

id1                          t1,t2.          Item1Name    ... 
id2                          t1,t3,t4,t5.    Item2Name    ...
... 

我的想法是创建另一个表,这是最好的解决方案吗?任何想法都值得赞赏。

Partition key(Primary key)   sort key     

t1                           id1
t1                           id2        
t2                           id1
t3                           id2
t4                           id2
t5                           id2
... 

我认为最好的解决方案需要重新创建表,并利用GSI(全局辅助索引(。

如果您创建DynamoDB表,使其具有主键的分区,然后是标记的排序键,然后是与行相关的数据,则您将像往常一样执行查询,以根据您的ID检索。

然后,您将使用标记的分区键创建一个GSI(如果需要,可能会将键排序为id(,并投影您希望GSI可用的任何属性。

这种方法比试图在两个独立的DynamoDB表之间管理数据要好,因为您只需要进行一次更改,但可以轻松地为两种情况检索数据。

最新更新