←講義のツボメニューへ
トランザクション処理とデータベース制御 概説、一貫性制御
2000.12.14 第9回
- 概説
コンピュータによる処理は、一連の意味のある処理で構成される。
それをトランザクションと呼ぶ。トランザクション処理では、複数のファイルや一つのデータベース内の複数のデータを順番にみながら、処理をするのが普通である。トランザクション処理について、次の二つの課題が存在する。
- 一つのトランザクション処理でのデータの読み書きは一つずつ順番に行われる。
- ファイルの問題点として、複数のファイルにデータが散在しているため、内容にずれが発生する。そのような問題点に対して、一つの処理プログラムで関連するファイルのデータを一気に扱うか、あるいはデータベースを採用して複数のデータ間の関連を扱うかの二つの解決策がある。そのいずれの解決策でも、一つのプログラムの処理の中では、複数のデータの読み書きは、一気に行われるのではなく、一つずつ順番に実施される。
データを更新するようなトランザクションがあったとする。そのトランザクションが何らかの判別できない理由(データが読めない、プログラムの特別な処理の部分にバクがあった、データが書けない、端末からの入力データが間違っていてそれをプログラムが判別できず、プログラムが暴走した等)で処理が不成功になったとする。このトランザクションの処理の結果、データの更新は終わったのであろうが、終わらなかったのであろうか、はトランザクションのどこで障害が発生したかによって、変わってくる。したがって、処理が失敗したと言うことだけでは、どちらか判別できないという困った状況が発生する。このようなことが起こらないような対策が必要である。これを一貫性制御と呼び、以下で詳細に説明する。
- 一貫性制御
-
トランザクションの一貫性とは、一つのトランザクションでは、処理が成功したか失敗したかのいずれかであり、部分的な処理というものがないことをさす。
トランザクションは何段階かの処理のステップを順番に実施する。もしも、そのいずれかの処理で処理の続行ができなくなる場合があると、トランザクションの一部は実施され、ファイルやデータベース上のデータが変更されているが、そのほかの部分は変更されていないという状況が存在すると、データの間で矛盾した内容になっている恐れがあり、以後の処理で正しくない結果が発生する。そこでトランザクションは、一連の処理がすべて成功するか、または、不成功の場合はトランザクション全体がなかったものとするという一貫性が必要になる。