如何解决DynamoDB创建另一个表以查询表中的列表属性吗?
我正在从某人继承DynamoDB。
有一个名为 Item 的表。它使用项目ID作为分区键,这也是主键(此表中没有排序键)。
每个项目都有一个 Tags 属性,该属性是诸如tag1,tag2等的列表。现在,我有了一个新的用例,我想高效地按标签查询项目。最好的解决方案是什么?
我正在考虑为标签创建另一个表,该表将成为分区键,并且项ID成为其排序键。除了重新设计 Item 表之外,这是最好的解决方案吗?
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 (Global Secondary Index)的好处。
如果创建的DynamoDB表具有主键分区,然后是标签的排序键,然后是与该行关联的数据,则您将像平常一样执行查询以根据您的ID进行检索。
然后,您将创建一个GSI,其中包含标签的分区键(如果需要,还可以将其作为ID的排序键),以及您希望对GSI可用的projecting any attributes。
这种方法比尝试管理2个单独的DynamoDB表之间的数据更好,因为您只需要进行一次更改,但可以轻松地在两种情况下检索数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。