DVAAWSのサービスを使用した開発
ECサイトを運営する開発者が、DynamoDBを使った注文処理ロジックを実装しています。顧客が商品を注文した際、「在庫テーブル」の在庫数を1減らし、同時に「注文テーブル」に新しい注文レコードを追加する必要があります。この2つの操作は必ず両方成功するか、両方失敗する(アトミック)ことが要件です。この要件を最も適切に満たすDynamoDB APIはどれですか?
ABatchWriteItem を使用して2つの書き込み操作をまとめて実行する
BatchWriteItemはベストエフォート型で原子性を保証しません。
BTransactWriteItems を使用して2つの操作をトランザクションとして実行する
✓ 正解
TransactWriteItemsは最大100アイテムへの書き込み操作をACIDトランザクションとして実行します。全操作が成功するか全て失敗するかのいずれかで、部分的な更新は発生しません。
CPutItem と UpdateItem を順番に呼び出し、片方が失敗した場合は手動でロールバックする
PutItemとUpdateItemを順番に呼び出す方法は複雑で信頼性がありません。
DUpdateItem の ConditionExpression を使用して条件付き書き込みを行う
ConditionExpressionは単一アイテムへの条件付き操作であり、複数テーブルをまたぐアトミック性は持ちません。
解説
TransactWriteItemsは最大100アイテムへの書き込み操作をACIDトランザクションとして実行します。全操作が成功するか全て失敗するかのいずれかで、部分的な更新は発生しません。
選択肢AのBatchWriteItemはベストエフォート型で原子性を保証しません。
選択肢CのPutItemとUpdateItemを順番に呼び出す方法は複雑で信頼性がありません。
選択肢DのConditionExpressionは単一アイテムへの条件付き操作であり、複数テーブルをまたぐアトミック性は持ちません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →