DynamoDB-如何使用邻接列表模式处理更新?

时间:2019-05-07 18:56:59

标签: nosql amazon-dynamodb dynamodb-queries

因此,在DynamoDB中,对多对多关系的推荐方法是使用Adjacency List Pattern

现在,它非常适合需要读取数据的情况,因为您可以通过一个请求轻松读取多个项目。

但是,如果我需要更新/删除数据怎么办?这些操作针对的是特定项目而不是查询结果。

因此,如果我有成千上万的复制数据来促进GET操作,我将如何更新所有这些副本?

我想到的最简单的方法是不复制数据,而只存储一个不变的ID,但这实际上是在模拟关系数据库,并且将至少接收2个请求。

1 个答案:

答案 0 :(得分:1)

简单答案:您只需更新重复项即可:) AFAIK冗余数据在NoSQL数据库中是首选,并且没有更新数据的捷径。

当数据的读/写比很大程度上位于读取端时,这当然是最好的。而且在大多数日常应用中都是这种情况(我的直觉可能是错误的),因此与查询相比,数据更新很少见。

DynamoDB有一些实用程序,可能在此处适用。两者都有缺点

  1. BatchWriteItem允许在一个或多个表中放置或删除多个项目。不幸的是,它不允许更新,因此可能不适用于您的情况。操作次数也限制为25。
  2. TransactWriteItems允许执行一个原子操作,该操作将一个或多个表中的多达10个动作请求分组。再次针对您的情况限制操作次数

我的理解是,应谨慎使用这两种方法,因为它们可能会导致性能瓶颈。单独更新每个项目的简单方法通常就可以了。而且由于数据是冗余的,因此您可以使用异步操作并行进行多个更新。