建议:DynamoDB根据共同查询更新多个项目

0

【以下的问题经过翻译处理】 当我需要使用邻接表模式建立多对多模型时,遇到的最大困难之一就是数据复制。

好吧,你复制了数据,查询又快又高效,但如果我需要更新数据并保持所有副本同步,该怎么办呢?据我所知,API 不支持在排序键上使用 "begins_with "进行更新。

基本上,我希望能够执行以下伪查询:

UPDATE WHERE PK="user_001" AND SK="invoice_001" SET INVOICE_NAME="Invoice One"

最后我意识到,批量更新比简单地执行两个请求和模拟 SQL 外键要昂贵得多。

profile picture
专家
已提问 9 个月前9 查看次数
1 回答
0

【以下的回答经过翻译处理】 邻接表模式的理念是分发不可变或不常变的数据。我们希望通过查询分区或反向查找索引来生成相互关联的项目聚合。如果需要查询可变属性,则应设置排序键,以便表/索引查询能提供实体项以及与查询相关的关系项或边缘项。这种模式对有向图非常有效。对于无向图,通常需要进行完全的去规范化处理,在这种情况下,最常见的是以某种方式完全重复项目,其中包括可能会更新的数据。在这种情况下,最好的办法是确保重复项能被有效查询,然后使用 batchPutItem 调用来删除重复项。这通常比逐个更新更有效率。如果去规范化数据的变化率很高,那么这种模式就不适合工作负载,我们应该考虑优化写入而不是读取。

profile picture
专家
已回答 9 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则