DynamoDbのドキュメントに基づいて、誰がupdateItem
の代わりにputItem
を使用するのでしょうか?
PutItem
-単一のアイテムをテーブルに書き込みます。同じ主キーを持つアイテムがテーブルに存在する場合、操作はアイテムを置き換えます。プロビジョニングされたスループット消費を計算する場合、重要な項目サイズは2つのうち大きい方です。UpdateItem
-テーブル内の単一のアイテムを変更します。 DynamoDBは、更新の前後に表示されるアイテムのサイズを考慮します。消費されるプロビジョニングされたスループットは、これらの項目サイズのうち大きい方を反映しています。アイテムの属性のサブセットのみを更新しても、UpdateItem
はプロビジョニングされたスループットの全量を消費します(「前」と「後」のアイテムサイズの大きい方)。2つの主な違いは、PutItemはReplaceアイテム全体であるのに対し、UpdateItemはpdateそれです。
例えば。
私のようなアイテムがあります:
userId = 1
Name= ABC
Gender= Male
PUTアイテムを使用する場合
UserId = 1
Country = India
これにより、名前と性別が置き換えられ、新しいアイテムはユーザーIDと国になります。一方、Name = ABC to Name = 123
からアイテムを更新する場合は、UpdateItemを使用する必要があります
Putアイテムを使用して更新できますが、更新するパラメーターだけでなく、すべてのパラメーターを送信する必要があります。これは、アイテムを新しい属性で置き換えるためです(内部ではアイテムを削除し、新しいアイテムを追加します)。
これが理にかなっていることを願っています。
PutItem
は、渡される新しいバージョンでアイテム全体(すべての属性)を上書きしますが、UpdateItem
はpdate渡された属性のみを上書きします
パフォーマンス:PutItem
FindItem、DeleteOldVersion、AddNewVersionよりも多くの操作が含まれるため、アイテム全体を頻繁に上書きすると、UpdateItem
がパフォーマンスに影響を与える可能性があります
予想されるコストから、それも異なります:
AWSは、上書き/更新されるアイテムのサイズに完全に関連付けられた使用済みの読み取り/書き込みキャパシティーユニットに基づいてコストを計算します。
PutItem
の場合、サイズはアイテムの新しいバージョンと古いバージョンの大きい方になります。たとえば、2 KBのアイテムを1 KBに置き換えると、2つのWCUが消費されますが、後続のリクエストでは1つのWCUしか使用されません。頻繁に上書きする場合、アイテムのサイズが大きく変化すると、常にアイテムの大きなバージョンが計算され、コストに影響します。
UpdateItem
を使用してアイテムを変更する場合、サイズには、アイテムの既存の属性がすべて含まれます。PutItem
のような大きなバージョンではなく、追加または更新されるものだけではありません:(