平成26年度 秋期 ITパスポート試験 公開問題 問71 解説 トランザクションのコミット
図は処理1,処理2の順でデータベースを更新するトランザクションの処理フロー を示している。図中のa〜cのうち,コミット処理(処理1,処理2の更新結果を確定 させる処理)に該当する箇所だけを全て挙げたものはどれか。
- ア a ✓ 正答
- イ a, b
- ウ b, c
- エ c
解説
この問題は、トランザクションにおけるコミットとロールバックの役割を理解しているかを確認するものです。
正解にたどり着くための判断根拠は、トランザクションの原則である「全か無か(All or Nothing)」です。すべての処理が正常に完了したことを確認した直後の地点がコミット(確定)であり、いずれかの処理が失敗した地点がロールバック(取り消し)となります。図では、処理1と処理2の両方が正常終了した後に到達する「a」のみがコミット処理に該当します。
トランザクション処理とACID特性
データベースにおけるトランザクションとは、一連の処理を一つの塊として扱う仕組みのことです。この処理が正しく行われるためには、ACIDと呼ばれる4つの特性を満たす必要があります。
今回の問題に関連するのは、原子性(Atomicity)という概念です。これは「処理がすべて完了するか、あるいは何もしなかったことと同じ状態(失敗した場合は最初からやり直す)にする」という性質を指します。
- コミット(Commit): トランザクション内のすべての処理が成功したときに、その結果をデータベースに恒久的に保存する操作です。図中の「a」がこれにあたります。
- ロールバック(Rollback): 処理の途中でエラーが発生した際に、それまでのデータベースの更新内容を無効にし、処理開始前の状態に戻す操作です。図中の「b」および「c」がこれにあたります。
なぜこの知識が重要なのか
ITパスポート試験でこの知識が問われるのは、システム開発におけるデータの整合性(データの正確さや矛盾のない状態)を維持するための基礎だからです。
例えば、銀行の振込システムを想像してみてください。Aさんの口座からお金を引き出し、Bさんの口座に振り込むという処理において、システムが途中で停止したとします。もしここで「引き出し」だけが確定し、「振込」が失敗したまま放置されたらどうなるでしょうか。Aさんの預金だけが消え、Bさんにはお金が届かないという致命的なトラブルが発生します。
このような事態を防ぐために、一連の更新処理をすべて正常に行うことを保証するコミットの概念が不可欠なのです。システムエンジニアや利用者は、データベースを操作する際に「成功したときには何が起きるのか」「失敗したときにはどのような状態に戻るのか」を正しく設計・管理する必要があります。試験ではこの原則を正しく理解できているかが問われています。