問62
頻出度★☆☆
金融システムの口座振替では, 振替元の口座からの出金処理と振替先の口座への入金処理について, 両方の処理が実行されるか, 両方とも実行されないかのどちらかであることを保証することによってデータベースの整合性を保っている。データベースに対するこのような一連の処理をトランザクションとして扱い, 矛盾なく処理が完了したときに, データベースの更新内容を確定することを何というか。
この問題の解説と、これまでの解答の記録です。
金融システムの口座振替では, 振替元の口座からの出金処理と振替先の口座への入金処理について, 両方の処理が実行されるか, 両方とも実行されないかのどちらかであることを保証することによってデータベースの整合性を保っている。データベースに対するこのような一連の処理をトランザクションとして扱い, 矛盾なく処理が完了したときに, データベースの更新内容を確定することを何というか。
正解 正解はア「コミット」。トランザクションで行った一連の更新処理が矛盾なく最後まで完了したとき、その更新内容をデータベースへ正式に反映・確定する操作をコミットという。口座振替の例では、出金処理と入金処理の両方が問題なく終わった時点でコミットすることで更新が確定し、以降その結果が有効になる。逆に途中で異常があれば更新を取り消す(ロールバック)ことで「両方実行されるか、両方とも実行されないか」を保証でき、データベースの整合性が保たれる。設問が問う「更新内容を確定すること」はまさにコミットの定義に一致する。
スキーマはデータベースの構造(表の項目やデータ型、制約など)を定義したものを指す用語であり、トランザクションの更新を確定する操作ではないため誤り。
ロールフォワードは障害発生後にバックアップと更新後ログ(ジャーナル)を用いて、確定済みの更新を再現しデータベースを復旧する操作であり、通常処理で更新内容を確定する操作そのものではないため誤り。
ロックは複数の処理が同じデータへ同時にアクセスして矛盾が起きないよう、データの使用中に他の処理を待たせる排他制御の仕組みであり、更新を確定する操作ではないため誤り。