SE基本情報に出るIT用語

ロールバックとは?DBのトランザクション処理を開始前に巻き戻すこと

どうも!ひよこSE(@PiyoOct)です。

ロールバックって何?

DB(データベース)におけるロールバックとは、「ゲームをやっている途中で、セーブせずにリセットする」のように、トランザクション(まとまった処理)を開始前に巻き戻すことです。

早い話、ロールバックは、ゲームで言うリセットです。

ロールバックしてトランザクションを終了すると、トランザクションを開始する前(最後にセーブした状態)のデータに戻ってしまいます。

スポンサーリンク

ロールバックとは、トランザクションを開始前に巻き戻すこと

ロールバックとは、トランザクションを開始前に巻き戻すことです。

その前に

について簡単に説明するので、知ってるよという人は飛ばしてください(-_-;)。

DB(データベース)とはデータを入れる入れ物

DB(データベース)とはデータを入れる入れ物のこと。

データベースとはデータを入れる入れ物のこと

学生番号なら、学生番号というデータをDBに保存する的なイメージです。

トランザクションとは1つのまとまった処理

トランザクションは、1つのまとまった処理のことです。

ゲームするときに例えるのが、トランザクションを理解しやすくて

  • 電源をつける
  • プレイする
  • 電源を切る

みたいに、電源を付けただけじゃゲームしたことにならない感じ。

「処理を分けることはできないし、それ1つだけでは意味がなくて、まとまった処理として考えて初めて意味がある」のがトランザクションです。

コミットとはトランザクションを確定

DBの世界で言えば、SQLを使うなりしてデータを入れ替えする一連の処理が、トランザクションですね。

ロールバックでは、トランザクションを確定せずに巻き戻して終了

ロールバックでは、トランザクションを確定せずに巻き戻して終了させます。

ゲームを始めたはいいけど、ドラクエのカジノでコインがなくなったり。

セーブしたくない出来事があったから、セーブせずにリセットしちゃうイメージ。

ロールバックとはトランザクションを巻き戻し

今のゲームはほとんど、オートセーブがついているからわかりづらいかもですが、セーブせずに電源切ったら、データは保存されないですよね(*´ω`)。

リセットさえすれば、ドラクエのカジノならコインは元通りです(*´ω`)。

DB(データベース)の世界でも全く同じです。

トランザクション、つまりはデータを入れ替えする作業を始めたけど、元に戻したいとなれば、「入れ替え終わったけど、やっぱ元に戻すね!」と言って、ロールバックしてあげます。

ロールバックをしたら、トランザクションは確定せずに巻き戻された状態で終了します。

逆に確定するならコミット

逆に、もし「データを入れ替え終わったから確定したい」となったらコミットです。

ドラクエのカジノが大当たりすれば、教会においのりしてセーブ(=コミット)する感じです。

そして、データベースの世界でトランザクションを開始したら

  • 「入れ替え終わったよ~確定!」と言って、コミットする
  • 「入れ替え終わったけど、やっぱ元に戻すね!」と言って、ロールバックする

のどちらかを宣言して、データの状態を決めてあげる必要があります。

どちらも宣言せずにトランザクションを終了しても、ふつうはロールバックと同じ動きをしますが、データベースによってまちまちです。元に戻したい場合は、ハッキリとロールバックを宣言したほうがいいです。

まとめ

ロールバックときたら、「トランザクションを巻き戻すこと」だと思ってください。

何かまとまった処理のトランザクションを開始したけど、間違えたからロールバックしてトランザクション(データの入れ替え)を始める前の状態に戻して終了します。

ロールバックをしたら、「何もしなかったのと同じになる」と思ってくださいまし(-_-;)。

スポンサーリンク

コメント

タイトルとURLをコピーしました