ロールバックとロールフォワードはどちらもデータベースの内容を復旧させる操作です。
以下でそれぞれの違いを解説していきます。
ロールバック
トランザクション(いくつかの処理をまとめたもの)の処理中にトラブルが発生して、データベースの更新に失敗した!
ここで、トラブル発生までの処理を取り消し、更新前の状態に戻すのがロールバックです。
例として、下記のようにトランザクション(処理1〜4)を行って、データベースを更新します。
※「ジャーナル」とはデータベースの情報を持ったファイルだと思ってください。
処理3の途中でトラブルが発生し、処理が止まってしまいました。
このような場合に、処理4は行わず、ジャーナルの情報を元に、処理を行う前のデータベースの状態に戻します。
ロールフォワード
処理は全て終わって更新したけど、データベースそのものが壊れてしまった!
このような時に、バックアップデータとジャーナルを用いて更新後の状態に戻すのがロールフォワードです。
例として、下記のようにトランザクション1,2を行って更新したデータベースがあるとします。
更新した情報はジャーナルに書き込まれます。
しかし、何らかの理由で更新したデータベースが故障しました。
まずは、バックアップデータから更新前の状態に戻します。
続いて、トランザクション1,2を実行した際に作られたジャーナル(更新情報が書かれている)を使って、またデータを更新します。
まとめ
ロールバックとは?
・トランザクションの処理中に、データベースにトラブルが発生した時の操作
・更新前の状態に戻す操作
ロールフォワードとは?
・トランザクションの処理中以外で、データベースにトラブルが発生した時の操作
・更新後の状態に戻す操作
コメント