どうも!ひよこSE(@PiyoOct)です。
コミットって何?
データベースにおけるコミットとは、「ゲームを始めてやめる前にセーブして電源を切る」のように、トランザクション(まとまった処理)を確定した上で終了させることです。
コミットをしないでトランザクションを終了してしまう(セーブをせずに電源を切る)と、トランザクションを開始する前(ゲームを始める前)の状態のデータに戻ってしまいます。
※なお、政治におけるコミットは、「CO2を5%減らす」的な「将来の約束事」です。
コミットとは、DBのトランザクション処理を確定すること
コミットとは、DBのトランザクション処理を確定することです。
その前に
について簡単に説明するので、知ってるよという人は飛ばしてください(-_-;)。
DB(データベース)とはデータを入れる入れ物
DB(データベース)とはデータを入れる入れ物のこと。
社員番号なら、社員番号というデータをDBに保存する的なイメージです。
トランザクションとは1つのまとまった処理
トランザクションは、1つのまとまった処理のことです。
ゲームするときに例えるのがたぶんイメージしやすくて
- 電源をつける
- プレイする
- 電源を切る
というまとまった処理のことで「処理を分けることはできない」(電源を付けただけじゃゲームしたことにならない)みたいに考えるのがいいかと。
DBの世界で言えば、SQLを使うなりしてデータを入れ替えする一連の処理が、トランザクションですね。
コミットでは、トランザクションを確定したうえで終了させる
コミットでは、トランザクションを確定したうえで終了させます。
つまりは、ゲームを始めて、終了する前にデータをセーブするイメージ。
今のゲームはほとんど、オートセーブがついているからわかりづらいかもですが、セーブせずに電源切ったら、データは保存されないですよね(*´ω`)。
それまで、何時間プレイしていようとも、電源をつける前の状態に戻ります。
DBの世界でも全く同じです。
トランザクション、つまりはデータを入れ替えする作業を始めたら、「入れ替え終わったよ~」と言って、データを確定してあげる必要があります。
コミットをしたら、トランザクションは確定された状態で終了します。
逆にキャンセルするならロールバック
逆に、もし「データを入れ替え終わったけど間違えたから取り消したい」となったらロールバックです。
ゲームで言えば、リセット(ドラクエのカジノでよくやるよね)のことです。
ロールバックをしたら、トランザクションは開始する前の状態に戻ったうえで終了(何もなかったことになって終了)します。
コミットをせずにトランザクションを終了しても、ふつうはロールバックと同じ動きをしますが、データベースによって仕様は、まちまちです。元に戻したい場合は、ハッキリとロールバックを宣言するべきだし、していないプログラムは本番データを書き換えてしまう可能性ありです。
まとめ
コミットときたら、「トランザクションを確定させること」だと思ってください。
何かまとまった処理のトランザクションを開始して、問題なければ、コミットをしてトランザクション(データの入れ替え)を確定して終了します。
逆にコミットをせずにトランザクションを終了したら、何もしなかったのと同じになると思ってくださいまし(-_-;)。
コメント