DynamoDB PutItem与UpdateItem的区别是什么?

15 浏览
0 Comments

DynamoDB PutItem与UpdateItem的区别是什么?

根据DynamoDb文档,为什么有人会使用updateItem而不是putItem


  • PutItem - 向表中写入一个单独的项。如果在表中存在相同主键的项,则操作将替换该项。对于计算预配置吞吐量消耗,项的大小为两者中的较大值。
  • UpdateItem - 修改表中的一个单独的项。DynamoDB将考虑修改之前和修改之后的项的大小。消耗的预置吞吐量反映了这两个项大小中的较大值。即使您只更新项的属性子集,UpdateItem仍将消耗全部预配吞吐量(两者中的“之前”和“之后”项大小的较大值)。
admin 更改状态以发布 2023年5月24日
0
0 Comments

PutItem会用传递的新版本覆盖整个项目(所有属性),而UpdateItem只会更新传递的属性

性能:如果您经常覆盖整个项目,PutItem的性能可能会受到影响,因为它涉及的操作比UpdateItem FindItem、DeleteOldVersion和AddNewVersion更多

从成本的角度来看,它也是不同的:

AWS根据使用的读/写容量单位计算成本,这些容量单位完全与正在被覆盖/更新的项目的大小有关。

如果使用PutItem,大小将是项目的新旧版本中较大的那个。例如,用一个1KB的2KB项目替换它,它将消耗2个WCUs,但随后的请求只会使用1个WCU。因此,如果您经常覆盖并且项目的大小发生巨大变化,它将始终计算项目的较大版本并影响成本。

对于使用UpdateItem修改项目的情况,大小包括所有项目的现有属性,而不是像PutItem那样较大的版本,但也不仅仅是要添加或更新的属性。

0
0 Comments

这两者之间的主要区别在于,PutItem替换 整个项目,而UpdateItem则将其 更新

例如。

我有一个项:

userId = 1
Name= ABC
Gender= Male

如果我使用 PutItem 标志它

UserId = 1
Country = India

这将替换Name和Gender,现在新的项目是UserId和Country。
如果您想将项目从 Name = ABC 更新到 Name = 123,则必须使用 UpdateItem

您可以使用 PutItem 将项目更新,但您需要发送所有参数,而不仅仅是要更新的参数,因为它会将该项替换为新属性(在内部,它会删除该项并添加新项目)

希望这有意义。

0