DBMSの障害対応について
DBログ
- ログとはデータのACID特性を実現するための変更内容の記録のことである。
- アルファペットは覚えられないので原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、耐久性(Durability)、原一独耐で覚えることにする。
- ログはログバッファとしてメモリ上に保存され、DBMSが記憶装置のログファイルに出力する。
- ログには更新前ログファイルと更新後ログファイルの2種類がある。
- ログにはデータ更新時に更新前の状態とと更新後の状態に加えてcommitもログに書き出す。
- チェックポイントでハードディスクへの書き込みが行われる。
- WAL(Write Ahead logログ先行書き出し)プロトコルとは更新前レコードの書き出し、更新後レコードの書き出し、実データの更新の順にデータ処理を行うことである。
障害対応
- コミット前の障害は更新前ログからロールバックして復旧する。
- コミット後の障害は更新後ログからロールフォワードして復旧する。
- UNDOはロールバックの操作である。
- REDOはロールフォワードの操作である。
- UNDOとREDOは冪等性を持つ。
- 冪等性(idempotent)とは1回実行したときと複数回実行した時が同じ結果になることである。
障害回復処理
- トランザクション障害とはDBMSは正常に動いているが、DBMS内部で起きた障害のことである。ロールバックを行う。
- ソフトウェア障害およびシステム障害はDBMS自体が正常に動かない場合やアプリケーションでの障害である。
- ログを確認してコミットの状態に応じてロールバックまたはロールフォワードのどちらを行うか判断する。
- ハードウェア障害およびメディア障害はバックアップを用いてロールフォワードを実行する。
- バックアップにはフルバックアップ、差分バックアップ、増分バックアップがある。
分散データベース
- 分散データベースとは複数のDBMSが連携して一つのDBMSとして動作するデータベースである。
- ネットワーク経由で結合する(仮想サーバみたいだな)
- CAP定理とACID特性のうちC、Consistencyは共通のため、グラフになるのではないか
- これも覚えられないので一貫性(Consistency)、可用性(Availability)、分断耐性(Partition-tolerance)、一可分耐で覚える。
- 分散データベースの位置に対する透過性とはユーザは一つのデータがどこに格納されているかを意識しなくて済むこと
- 分散データベースの分割に対する透過性とはユーザは一つのデータが物理的に分割されていても意識しなくて済むこと
- 分散データベースの複製に対する透過性とはユーザは一つのデータが複数のサイトに格納されていても意識しなくて済むこと
- 2相コミットで担保する。