人気ブログランキング | 話題のタグを見る
障害回復処理
データベースの耐久性(Durability)は、障害回復処理によって実現されます。
障害回復処理をかんがえてみましょう。

毎日、データを入力しているエクセルのファイルがあるとします。
しごとが終わってから帰るまえに、
昼間作業した分をフロッピーにコピーしているとしましょう。
つまり日次バックアップです。

さて、今日は張り切ってたくさんデータを追加入力しました。
ところが、突然、ハードディスクがいかれてしまったとします。
さあ困りました。
昨日までのデータは、フロッピーにバックアップしてあります。
すっからかんにならなくてよかったです。
まずこれを復元します。
さて、今日やっとのことで入力したたくさんのデータを、
もう一度はじめから入力しなおすことにしましょう。
これが、ロールフォワードです。

あるデータを入力している最中に、
とつぜん、エクセルのマクロが異常終了してしまったとします。
途中まで入力したままそれが一件となってしまうとまずいです。
一件のデータは、全部入力したか、
まったく入力していないかのどちらかでないと、
統計が狂ってしまいます。
この、完全に実行されたかまったくされなかったかの
どちらかでないといけないことを原子性(Atomicity)といいます。
まずはとりあえず、
そのデータはなかったことにしましょう、
というのがロールバックです。

さて、エクセルで入力している最中に、
とつぜん異常終了することがあるので、
ある程度入力したら、
フロッピーのバックアップファイルに「上書き保存」をする習慣にしています。
この上書き保存が、チェックポイントです。
上書き保存してしまえば、
それ以前に入力したデータは保証されます。

入力している一件のデータにはいろんな項目があり、
いくつかのマクロがながれてはじめて成立しているとします。
データの入力はじめが、
トランザクションの開始(BIGIN TRANZACTION)です。
データ一件が最後まで入力されて、
すべてのマクロがながれおわると、
トランザクションの終了、コミット(COMMIT)です。
トランザクションが異常終了して、
ロールバック(ROLLBACK)すると、
そのトランザクションはなかったものとして、BIGINの位置まで戻ります。

例えが低俗ですみません。

どこで上書き保存(チェックポイント)するかによって、
障害回復処理がかわってきます。

ハード的な障害なら、
コミットしていない(完了していない)部分は、
ログの順序どおり、
チェックポイントからもういちど再実行するしか方法がありません。

トランザクション障害(処理実行中の障害)なら、
そのトランザクション(実行中だった処理全体)はなかったものとする、
つまりロールバックです。

この、チェックポイントというのが、
上書き保存のようなものだとわかったら、
障害回復処理はわかったようなものです。
by nwdb | 2004-11-22 08:42 | データベース
<< ライブドアブログの著作権に関わ... TACの解答例が送ってきました。 >>