【ばっくわーどりかばり】

バックワードリカバリ とは?

💡 やり直しじゃなく「なかったことにする」データベースの巻き戻し術
📌 このページのポイント
バックワードリカバリの仕組み 時間 チェックポイント T1: COMMIT済 T2: 処理中(未完了) 障害発生! UNDO(巻き戻し) 更新前データ(Before Image) ← ログを逆順に辿って復元
バックワードリカバリ(UNDO)のイメージ
ひよこ ひよこ

バックワードリカバリって、なんだか難しそうな名前だね…

ペンギン先生 ペンギン先生

簡単に言うと「途中で失敗した作業をなかったことにする」仕組みだよ。たとえば銀行の振込処理が途中でシステム障害になったとき、中途半端にお金が引かれた状態を元に戻すイメージだね

ひよこ ひよこ

どうやって元に戻すの?

ペンギン先生 ペンギン先生

データベースは更新のたびにログファイルに「更新前のデータ」を記録しているんだ。障害が起きたら、そのログを後ろから順番にたどって、変更を一つずつ取り消していくんだよ

ひよこ ひよこ

フォワードリカバリっていうのもあるよね?違いは何?

ペンギン先生 ペンギン先生

フォワードリカバリは逆に「完了した処理をやり直す」方法だよ。バックアップからデータを復元して、その後のログを使って最新状態まで進めるんだ。バックワードは巻き戻し、フォワードは早送りってイメージだね

ひよこ ひよこ

チェックポイントっていうのも関係あるの?

ペンギン先生 ペンギン先生

いいところに気づいたね!チェックポイントはデータベースが定期的に作る「セーブポイント」みたいなもので、回復時にそこまで戻ればいいから処理が速くなるんだ。チェックポイントがないと障害のたびに膨大なログを全部辿ることになるよ

ひよこ ひよこ

実際のデータベースだと自動でやってくれるの?

ペンギン先生 ペンギン先生

そうだよ。OraclePostgreSQLなどの主要なDBMSはトランザクションログ(WAL)の仕組みを内蔵していて、障害時のロールバックは自動で行われるんだ。DBAが手動でログを操作することはほとんどないけど、仕組みを知っておくと障害対応のときに冷静に判断できるよ

ひよこ ひよこ

情報処理試験にも出るのかな?

ペンギン先生 ペンギン先生

データベーススペシャリスト試験の定番テーマだよ。ARIES(アリエス)というリカバリアルゴリズムが特に有名で、UNDO(バックワード)とREDO(フォワード)を組み合わせた仕組みなんだ。試験対策にも実務にも役立つ知識だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
バックワードリカバリって出てきたら「未完了の処理を巻き戻して元に戻すこと」と思えればだいたいOK!
📖 おまけ:英語の意味
「Backward Recovery」 = 後方回復
💬 Backward(後方へ)+Recovery(回復)で、ログを後ろから辿って元に戻すイメージだよ
← 用語集にもどる