トランザクション処理とは、
トランザクションと呼ばれる不可分な操作の集まりを処理する情報処理の形態です。
トランザクションは、
データベースをある一貫した状態から別の一貫した状態へ変更する一連の操作をまとめたもので、
データベースの整合性を保つために重要な役割を果たします。
トランザクション処理の基本的な考え方は、複数の操作を一つの単位として扱い、それらが全て成功するか、全て失敗するかのどちらかを保証することです。たとえば、銀行の口座間でお金を移動させる操作を考えてみましょう。これは、ある口座からお金を引き出し、別の口座にお金を入金するという2つの操作から構成されます。もし引き出しは成功したが入金に失敗した場合、銀行の帳簿に不整合が生じます。
トランザクション処理は、このような不整合を防ぐために、全ての操作が成功するか、全てキャンセルされることを保証します。
トランザクション処理システムは、
トランザクション内の全ての操作がエラーなく完了した場合、その
トランザクションを「コミット」します。これにより、
データベースへの変更が永続的に保存されます。もし途中でエラーが発生した場合、システムは
トランザクションを「ロールバック」し、
データベースを
トランザクション開始前の状態に戻します。これにより、
データベースは常に一貫した状態に保たれます。
トランザクション処理は、
ハードウェアや
ソフトウェアの障害が発生した場合でも、
データベースの整合性を保つように設計されています。システムがクラッシュした場合、未コミットの
トランザクションは全てキャンセルされます。また、
トランザクションは厳密に時間順に処理され、ある
トランザクションが他の
トランザクションの操作対象となるデータにアクセスする場合、先行する
トランザクションが完了するまで待機します。
トランザクション処理システムでは、
データベースの整合性を維持するために様々な技法が用いられます。
ロールバック: トランザクションが失敗した場合に、データベースをトランザクション開始前の状態に戻す操作です。システムはトランザクションによる更新前のデータベースの状態(before image)を記録しておき、それを利用してロールバックを行います。
ロールフォワード: データベース障害時に、バックアップから
データベースを復元した後、ジャーナル(after image)を用いて
データベースを最新の状態にする操作です。これにより、障害発生前にコミットされた
トランザクションによる変更を反映させることができます。
デッドロック: 複数のトランザクションが互いに相手が使用しているリソースを待っている状態です。この状況を検知し、トランザクションをロールバックして再試行することで、システム全体の停止を防ぎます。
ACID特性
トランザクション処理システムは、ACID特性と呼ばれる4つの重要な特性をサポートします。
Atomicity(原子性): トランザクションは全て成功するか、全て失敗するかのどちらかであるという特性。
Consistency(一貫性): トランザクションの前後でデータベースの状態が一貫しているという特性。
Isolation(独立性): 複数の
トランザクションが同時に実行されても、お互いの処理に干渉しないという特性。
Durability(永続性): 一度コミットされたトランザクションの結果は、永続的にデータベースに保存されるという特性。
トランザクション処理システムは、1960年代から開発され始め、当初は特定のデータベース管理システム(DBMS)と密接に連携していました。近年では、分散システムやオンラインサービスにおける大量のトランザクションを処理するために、より柔軟なシステムが開発されています。
業界標準としては、X/Open Distributed Transaction Processing (DTP) が重要ですが、IBMのCICSなどの独自のシステムも広く利用されています。
まとめ
トランザクション処理は、データベースの整合性を保ち、システム全体の信頼性を高めるために不可欠な技術です。トランザクション処理の基本的な概念と、システムを支える様々な技術を理解することは、データベースシステムを扱う上で重要となります。
参考文献
Jim Gray, Andreas Reuter, Transaction Processing - Concepts and Techniques, 1993, Morgan Kaufmann, ISBN 1558601902
Philip A. Bernstein, Eric Newcomer, Principles of Transaction Processing, 1997, Morgan Kaufmann, ISBN 1-55860-415-4
Ahmed K. Elmagarmid (Editor), Transaction Models for Advanced Database Applications, Morgan-Kaufmann, 1992, ISBN 1558602143
関連項目
トランザクション
ACID
ツーフェーズコミット
オンライン
トランザクション処理
トランザクションモニター
CICS
IMS
Jakarta EE
Java Transaction API (JTA)
Transaction Processing Facility (z/TPF)