1. ホーム
  2. amazon-web-services

[解決済み] DynamoDB Upsert - Update or Create?

2022-03-03 21:54:33

質問

DynamoDBを使用しています UpdateItem .

これは、次のように、quot;upsert" として機能します。 ドキュメントより

<ブロッククオート

既存の項目の属性を編集し、まだ存在しない場合は新しい項目をテーブルに追加します。[...]

アイテムが作成されたか、既存のアイテムが更新されたかを判断するために、私たちはリクエストを行うとき、次のようにリクエストします。 ALL_OLD . これは素晴らしい機能で updatecreate .

また、追加要件として ALL_NEW が、実行された操作の種類を知ることができます。

質問です。これは1回のリクエストで可能ですか、それとも2回目の(get)リクエストをする必要がありますか?

どのように解決するのですか?

DynamoDBではデフォルトでサポートされていないため、このような場合は ALL または NEW_AND_OLD_IMAGES のように、DynamoDBのストリームにあるように、いつでもDIYすることができます。

を行うと UpdateItem を呼び出すと UpdateExpression これは基本的に、アイテムに適用する変更点のリストです。DynamoDBに、アイテムを以下のような形で返すように言ったとします。 以前 その操作によって、新しい状態をローカルに構築することができます。

のコピーを作成するだけです。 ALL_OLD レスポンスからの変更をローカルに適用します。 UpdateExpression を追加しました。実装が若干複雑になりますが、APIを2回呼び出すよりも断然速いです。