どうも!ひよこSE(@PiyoOct)です。
ロールバックって何?
DB(データベース)におけるロールバックとは、「ゲームをやっている途中で、セーブせずにリセットする」のように、トランザクション(まとまった処理)を開始前に巻き戻すことです。
早い話、ロールバックは、ゲームで言うリセットです。
ロールバックしてトランザクションを終了すると、トランザクションを開始する前(最後にセーブした状態)のデータに戻ってしまいます。
ロールバックとは、トランザクションを開始前に巻き戻すこと
ロールバックとは、トランザクションを開始前に巻き戻すことです。
その前に
について簡単に説明するので、知ってるよという人は飛ばしてください(-_-;)。
DB(データベース)とはデータを入れる入れ物
DB(データベース)とはデータを入れる入れ物のこと。
学生番号なら、学生番号というデータをDBに保存する的なイメージです。
トランザクションとは1つのまとまった処理
トランザクションは、1つのまとまった処理のことです。
ゲームするときに例えるのが、トランザクションを理解しやすくて
- 電源をつける
- プレイする
- 電源を切る
みたいに、電源を付けただけじゃゲームしたことにならない感じ。
「処理を分けることはできないし、それ1つだけでは意味がなくて、まとまった処理として考えて初めて意味がある」のがトランザクションです。
DBの世界で言えば、SQLを使うなりしてデータを入れ替えする一連の処理が、トランザクションですね。
ロールバックでは、トランザクションを確定せずに巻き戻して終了
ロールバックでは、トランザクションを確定せずに巻き戻して終了させます。
ゲームを始めたはいいけど、ドラクエのカジノでコインがなくなったり。
セーブしたくない出来事があったから、セーブせずにリセットしちゃうイメージ。
今のゲームはほとんど、オートセーブがついているからわかりづらいかもですが、セーブせずに電源切ったら、データは保存されないですよね(*´ω`)。
リセットさえすれば、ドラクエのカジノならコインは元通りです(*´ω`)。
DB(データベース)の世界でも全く同じです。
トランザクション、つまりはデータを入れ替えする作業を始めたけど、元に戻したいとなれば、「入れ替え終わったけど、やっぱ元に戻すね!」と言って、ロールバックしてあげます。
ロールバックをしたら、トランザクションは確定せずに巻き戻された状態で終了します。
逆に確定するならコミット
逆に、もし「データを入れ替え終わったから確定したい」となったらコミットです。
ドラクエのカジノが大当たりすれば、教会においのりしてセーブ(=コミット)する感じです。
そして、データベースの世界でトランザクションを開始したら
- 「入れ替え終わったよ~確定!」と言って、コミットする
- 「入れ替え終わったけど、やっぱ元に戻すね!」と言って、ロールバックする
のどちらかを宣言して、データの状態を決めてあげる必要があります。
どちらも宣言せずにトランザクションを終了しても、ふつうはロールバックと同じ動きをしますが、データベースによってまちまちです。元に戻したい場合は、ハッキリとロールバックを宣言したほうがいいです。
まとめ
ロールバックときたら、「トランザクションを巻き戻すこと」だと思ってください。
何かまとまった処理のトランザクションを開始したけど、間違えたからロールバックしてトランザクション(データの入れ替え)を始める前の状態に戻して終了します。
ロールバックをしたら、「何もしなかったのと同じになる」と思ってくださいまし(-_-;)。
コメント