0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ロールバック/ロールフォワードとは?

0
Posted at

今回はデータベースに障害が起きたときにデータを守る
ロールバック」と「ロールフォワード」の2つについて解説します。

「ロールバック」:取り消して過去に”戻す”処理

処理中(未コミット)だったトランザクションを取り消し、
データ更新前の状態に戻す処理です。

RPGで例えると、
ボス戦の途中でバグってフリーズ(トランザクション処理の失敗)したときに、
「最後にセーブした地点まで戻して、今回の戦いをなかったことにする」のがロールバックにあたります。

「ロールフォワード」:やり直して未来へ”進める”処理

バックアップと更新履歴(ジャーナル)を使って、完了済(コミット済)だったトランザクションを再実行し、障害発生直前まで進める処理です。

RPGで例えると、
ゲーム機本体が物理的に壊れてしまった(物理的なデータベース障害)ときに、
「過去のバックアップ(セーブデータ)から復元し、残っていたプレイログ(操作履歴)を使って、壊れる直前の最新状態まで自動で進めて再現する」行為にあたります。

ロールバックとロールフォワードの違い

まず「発生タイミング」が異なります。

  • ロールバックは、トランザクション処理の失敗時。
  • ロールフォワードは、物理的に壊れた時。

どちらも「障害前の状態に復旧する」という目的は同じですが、

  • セーブ地点まで戻すだけなのがロールバック。
  • セーブ地点まで戻した後、ゲームオーバーまでにやっていたことを再現して進めるのがロールフォワードというイメージです。

ロールバックは、主にトランザクション処理の途中で失敗したときにやります。
やりかけのトランザクション処理を取り消すのがロールバックです。
ロールフォワードは、例えばデータベースが物理的に壊れたりした場合にやります。
バックアップを適用した後で、バックアップ以降にやっていたことを再現するのがロールフォワードです。
引用:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

まとめ

  • ロールバック:未完了の処理を取り消して、過去に「戻す」。
  • ロールフォワード:完了済の処理を再実行して、最新状態に「進める」。

🍌NanoBanana君による解説漫画

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?