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

Nosql DynamoDB-如何使用邻接列表模式处理更新?,nosql,amazon-dynamodb,dynamodb-queries,Nosql,Amazon Dynamodb,Dynamodb Queries,因此,在DynamoDB中,多对多关系的推荐方法正在使用 现在,当您需要读取数据时,它非常有用,因为您可以通过一个请求轻松读取多个项目 但是如果我需要更新/删除数据呢?这些操作发生在特定项上,而不是查询结果上 因此,如果我有数千个复制的数据以方便GET操作,我将如何更新所有这些复制副本 我能想到的最简单的方法是不复制数据,我只存储一个不可变的ID,但这相当于模拟关系数据库,至少需要2个请求。简单回答:只需更新重复项:)NoSQL数据库中首选AIK冗余数据,并且没有更新数据的快捷方式 当然,当数据

因此,在DynamoDB中,多对多关系的推荐方法正在使用

现在,当您需要读取数据时,它非常有用,因为您可以通过一个请求轻松读取多个项目

但是如果我需要更新/删除数据呢?这些操作发生在特定项上,而不是查询结果上

因此,如果我有数千个复制的数据以方便GET操作,我将如何更新所有这些复制副本


我能想到的最简单的方法是不复制数据,我只存储一个不可变的ID,但这相当于模拟关系数据库,至少需要2个请求。

简单回答:只需更新重复项:)NoSQL数据库中首选AIK冗余数据,并且没有更新数据的快捷方式

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

DynamoDB有几个UTIL可能适用于这里。但两者都有缺点

  • 允许在一个或多个表中放置或删除多个项目。不幸的是,它不允许更新,因此可能不适用于您的情况。行动次数也限制在25次
  • 允许执行在一个或多个表中分组最多10个操作请求的原子操作。同样,对于您的案例,操作的数量是有限的

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

    谢谢,我实际上已经意识到API的局限性。我认为唯一的方法是计算每次读取时必须执行两个请求以获取相关信息的成本,而不是每次更新/删除时执行多个请求以更新重复信息的成本。