【問163】ITパスポート 練習問題|トランザクションに求められる性質
情報デザイン・データベース・ネットワーク 問13/25難易度B(標準)
問題文
銀行の口座振替のように、出金と入金という二つの更新をひとまとまりの処理として扱う必要がある。この処理単位に求められる性質の説明として、最も適切なものはどれか。
- 1.途中で障害が起きた場合は、完了した更新だけを残して、残りは翌日に持ち越して整合をとる。
- 2.すべての更新が完了した状態か、一つも行われなかった状態かのいずれかになる。
- 3.複数の更新のうち先に成功したものだけを確定し、失敗したものは記録に残さず切り捨てる。
- 4.更新の順序は保証されないため、実行のたびに結果が変わることを前提として運用する。
解説
正解は2。出金と入金のように途中で分けられない一連の処理をトランザクションと呼び、その全体が完了して確定されるか、まったく行われなかった状態に戻されるかのどちらかになる性質を原子性という。正常に終われば更新内容を確定するコミットが行われ、途中で異常が起きれば開始前の状態へ戻すロールバックが行われる。1は誤り。出金だけが残った状態を翌日まで放置すれば口座の残高が合わなくなり、原子性を満たさない。3は誤り。成功した更新だけを確定する扱いも、中途半端な状態を残す点で同じ問題を生む。4は誤り。トランザクションには、他の処理から干渉されずに実行される独立性や、いったん確定した結果が障害の後も失われない耐久性も求められ、結果が実行のたびに変わることは前提としない。原子性、一貫性、独立性、耐久性の四つの頭文字をとってACID特性と呼ぶ点を押さえておきたい。