2015年2月11日水曜日

データベースまとめ 「トランザクション処理:ロールバックとロールフォーワード」


トランザクションとは?
・・・複数のデータの更新処理をまとめたもの.

概念図は以下の通り.

ここで重要なのは,すべての処理が成功しなければ,トランザクションとして成功したとは言えない点です.(ACID特性のAtomicity)


ロールフォーワードとロールバック

この二つの根本的な違いは,”いつ”これを実行するかという点にある.
つまり,
・ロールバック・・・トランザクション処理の際に起きた障害に対する復旧方法
・ロールフォーワード・・・データの保存されている記憶媒体に障害が発生した際の復旧方法


・ロールバック

先述した通り,ロールバックはトランザクション処理の際に起きた障害に対する復旧方法であり,
トランザクションにおける障害とは,トランザクションを構成する処理が一つでも失敗した場合です.

処理が一つでも失敗した場合,トランザクションを開始する以前の状態まで戻すために,
ログファイル(ジャーナルファイルともいう)という,ログファイル獲得時点のデータの状態を記録したファイルを利用して,データをもとの状態に戻すことが”ロールバック”

時系列的に,戻るのでロールバックです.


・ロールフォーワード

一方,ロールフォーワードは,データベースを記憶している記憶媒体に物理的に障害が起きたときの復旧方法.

記憶媒体に障害が発生した場合,新たな記憶媒体を用意して業務を続行する必要がある.





ある記憶媒体でデータベースを管理しており,その媒体が更新を3回行ったところで壊れたことを想定する.

バックアップファイルは,定期的(チェックポイントが来るたび)に保存しておくが,更新毎に新しいバックアップファイルを作ると,コストがかかるため,このような処理をする.→次項で説明.

チェックポイントでバックアップされているデータと,更新ログファイル(②③④)を適用することで,図の一番右下の新しい記憶媒体は,ログファイル④獲得時の旧記憶媒体と同じ情報が入っていることになる.



・ログファイルとバックアップファイル


イメージ的には以下みたいな感じ.

バックアップファイルは,表全体を保持しているため,データ量が多い.
ログファイルは,軽いが,もとのデータがなければ何の意味もなさない.

そのため,ロールフォーワードでは,バックアップファイルからログファイルを用いて,復元する.










0 件のコメント:

コメントを投稿