web-dev-qa-db-ja.com

DynamoDb PutItemとUpdateItemの違いは?

DynamoDbのドキュメントに基づいて、誰がupdateItemの代わりにputItemを使用するのでしょうか?


  • PutItem-単一のアイテムをテーブルに書き込みます。同じ主キーを持つアイテムがテーブルに存在する場合、操作はアイテムを置き換えます。プロビジョニングされたスループット消費を計算する場合、重要な項目サイズは2つのうち大きい方です。
  • UpdateItem-テーブル内の単一のアイテムを変更します。 DynamoDBは、更新の前後に表示されるアイテムのサイズを考慮します。消費されるプロビジョニングされたスループットは、これらの項目サイズのうち大きい方を反映しています。アイテムの属性のサブセットのみを更新しても、UpdateItemはプロビジョニングされたスループットの全量を消費します(「前」と「後」のアイテムサイズの大きい方)。
39
Sindhu

2つの主な違いは、PutItemはReplaceアイテム全体であるのに対し、UpdateItemはpdateそれです。

例えば。

私のようなアイテムがあります:

userId = 1
Name= ABC
Gender= Male

PUTアイテムを使用する場合

UserId = 1
Country = India

これにより、名前と性別が置き換えられ、新しいアイテムはユーザーIDと国になります。一方、Name = ABC to Name = 123からアイテムを更新する場合は、UpdateItemを使用する必要があります

Putアイテムを使用して更新できますが、更新するパラメーターだけでなく、すべてのパラメーターを送信する必要があります。これは、アイテムを新しい属性で置き換えるためです(内部ではアイテムを削除し、新しいアイテムを追加します)。

これが理にかなっていることを願っています。

67
Harshal Bulsara

PutItemは、渡される新しいバージョンでアイテム全体(すべての属性)を上書きしますが、UpdateItempdate渡された属性のみを上書きします

パフォーマンスPutItem FindItem、DeleteOldVersion、AddNewVersionよりも多くの操作が含まれるため、アイテム全体を頻繁に上書きすると、UpdateItemがパフォーマンスに影響を与える可能性があります

予想されるコストから、それも異なります:

AWSは、上書き/更新されるアイテムのサイズに完全に関連付けられた使用済みの読み取り/書き込みキャパシティーユニットに基づいてコストを計算します。

PutItemの場合、サイズはアイテムの新しいバージョンと古いバージョンの大きい方になります。たとえば、2 KBのアイテムを1 KBに置き換えると、2つのWCUが消費されますが、後続のリクエストでは1つのWCUしか使用されません。頻繁に上書きする場合、アイテムのサイズが大きく変化すると、常にアイテムの大きなバージョンが計算され、コストに影響します。

UpdateItemを使用してアイテムを変更する場合、サイズには、アイテムの既存の属性がすべて含まれます。PutItemのような大きなバージョンではなく、追加または更新されるものだけではありません:(

4