DVAAWSのサービスを使用した開発

ECサイトを運営する開発者が、DynamoDBを使った注文処理ロジックを実装しています。顧客が商品を注文した際、「在庫テーブル」の在庫数を1減らし、同時に「注文テーブル」に新しい注文レコードを追加する必要があります。この2つの操作は必ず両方成功するか、両方失敗する(アトミック)ことが要件です。この要件を最も適切に満たすDynamoDB APIはどれですか?

A
BatchWriteItem を使用して2つの書き込み操作をまとめて実行する
BatchWriteItemはベストエフォート型で原子性を保証しません。
B
TransactWriteItems を使用して2つの操作をトランザクションとして実行する
✓ 正解
TransactWriteItemsは最大100アイテムへの書き込み操作をACIDトランザクションとして実行します。全操作が成功するか全て失敗するかのいずれかで、部分的な更新は発生しません。
C
PutItem と UpdateItem を順番に呼び出し、片方が失敗した場合は手動でロールバックする
PutItemとUpdateItemを順番に呼び出す方法は複雑で信頼性がありません。
D
UpdateItem の ConditionExpression を使用して条件付き書き込みを行う
ConditionExpressionは単一アイテムへの条件付き操作であり、複数テーブルをまたぐアトミック性は持ちません。

解説

TransactWriteItemsは最大100アイテムへの書き込み操作をACIDトランザクションとして実行します。全操作が成功するか全て失敗するかのいずれかで、部分的な更新は発生しません。 選択肢AのBatchWriteItemはベストエフォート型で原子性を保証しません。 選択肢CのPutItemとUpdateItemを順番に呼び出す方法は複雑で信頼性がありません。 選択肢DのConditionExpressionは単一アイテムへの条件付き操作であり、複数テーブルをまたぐアトミック性は持ちません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る