データベース & DynamoDB 初学者です。
DynamoDB のトランザクションについて勉強中に、トランザクションと別トランザクションの衝突、もしくはトランザクションと PutItem などのリクエストの衝突が発生した際の挙動についての自分の理解が間違っていないか不安で質問させていただきました。
自分の理解
以下の形式で書かせていただきます
-
トランザクションの衝突のケース
→ その際の挙動に対する自分の理解 -
とある項目に対する PutItem、UpdateItem、または DeleteItem リクエストが、同じ項目を含む実行中のトランザクション (TransactWriteItems) と衝突した場合
→ DynamoDB のトランザクションはロックを取得しないため、トランザクション処理完了前に他の PutItem などのリクエストによって対象項目が更新される可能性がある。その場合、トランザクションは失敗する。 -
同じ項目に対する TransactWriteItems 同士が衝突
→ どちらのトランザクションもロックを取得しないため、どちらのトランザクションも項目の操作はできる。先に処理が完了した方のトランザクションが成功し、後のトランザクションは失敗する -
とある項目に対する PutItem、UpdateItem、または DeleteItem リクエストが、同じ項目を含む実行中のトランザクション (TransactGetItems) と衝突した場合
→ DynamoDB のトランザクションはロックを取得しないため、トランザクション処理完了前に他の PutItem などのリクエストによって対象項目が更新される可能性がある。その場合、トランザクションは失敗する -
同じ項目に対する TransactGetItems 同士が衝突した場合
→ 先に処理が完了した方のトランザクションが成功し、後のトランザクションは失敗する (?) -
同じ項目に対してトランザクションA (TransactGetItems) とトランザクションB (TransactWriteItems) と衝突した場合
→ 先に処理が完了した方のトランザクションが成功し、後のトランザクションは失敗する (?)
上記の理解のうち間違っているところがございましたらご指摘いただけますと幸いです。
調べたサイト
New – Amazon DynamoDB Transactions
最後に
TeratilのようなQ&Aサイトに初めて質問をポストするので拙い文章で大変お手数をおかけいたします。DynamoDBのトランザクションについてご教示いただけますと大変幸いです。何卒よろしくお願いいたします。
あなたの回答
tips
プレビュー