どうじに かいても からまない、トランザクション
ともだちに 1まんえん おくるとします。じぶんの ざんだかから 1まんえん ひいて、ともだちの ざんだかに 1まんえん たします。ふたつ とも できて せいじょうです。でも ひくのだけ できて たすちょくぜんに でんげんが きえたら? じぶんの おかねは きえたのに ともだちは うけとっていない。こんな じこを ふせぐため、いくつかの しゅうせいを ひとつの たばとして あつかう やりかたが トランザクションです。
ふりこみは ひくと たす、ふたつで ペア
まえに データベースが
じょうほうを あんぜんに しまう そうこだと まなびました。
でも ひとつを なおすのではなく
ふたつを いっしょに なおす ことが あります。
ふりこみが まさに そう。
じぶんの ざんだかから おかねを ひき、
うけとる ひとの ざんだかに おなじだけ たす。
この ふたつは きりはなせない ペアです。
かたほうだけ できると すぐに じこが おきます。
ひくと たすを べつべつに おしてみて。かたほうだけ おすと おかねが きえたり とつぜん ふえたりします。
ひくだけ おすと じぶんの おかねが きえました。
たすだけ おすと なかった おかねが ふえます。
どちらも ただしくない。
ぜんたいの おかねの ごうけいが かわったからです。
ひくと たすの あいだの みじかい すきま、
まさに そこが あぶない くかんです。
その すきまに なにかが わりこむと
ちょうぼが くいちがって しまう。
だから ふたつを たばねる ほうほうが ひつようです。
ぜんぶ できるか、ぜんぶ できないか
かいけつほうは いがいと たんじゅんです。
ひくと たすを ひとつに たばねます。
この たばを トランザクションと いいます。
たばの なかの しゅうせいは すべて かりです。
ぜんぶ おわって はじめて いちどに ほんとうに はんえいし、
ひとつでも くいちがえば すべて とりけします。
だから はんぶんだけ のこる ことが ない。
ぜんぶ できるか、ぜんぶ できないか。
とちゅうの じょうたいは だれにも みえません。
ひとつの たばとして すすめてみて。ふたつ とも そろって はじめて かくてい、とりけすと りょうほう きえます。
ふたつ いっしょに かくていするので ごうけいが ぴったり。
とりけしを おすと どちらも きれいに きえます。
どちらでも おかねの ごうけいは そのまま。
たばとして あつかっただけで
あの あぶない すきまが きえたのです。
こう ぜんぶか ゼロかで あつかえば
ちょうぼは ぜったいに くいちがいません。
でも たばの なかで しごとを している とちゅうに
ほんとうに でんげんが きえたら どうなる?
とぎれても まるごと もどす
たばの なかの しゅうせいは かりだと いいました。
その かりこそが あんぜんそうちです。
しごとを はじめる まえの じょうたいを わすれず
べつに かいて おくからです。
だから とちゅうで でんげんが きえても
もどってきて みれば わかります。
この たばは おわらなかったな、と。
そうしたら はんぶんだけ のこさず
かいて おいた まえの じょうたいに まるごと もどします。
ひとつ すすめてから とぎれを おしてみて。はんぶんだけ のこさず はじめの じょうたいへ まるごと もどります。
とぎれたのに ちょうぼが ぶじですね。
はんぶんだけ のこって めちゃくちゃに なる かわりに
きれいに はじめの まえへ もどりました。
こう まるごと もどすのを ロールバックと いいます。
しっぱいしても あとが のこらないので
また さいしょから やれば いいだけ。
おかげで あんしんして しごとを まかせられます。
でも なんにんもが おなじ ざんだかを
どうじに かえようとしたら また どうなる?
どうじに きても じゅんに しょりする
OSで にたものを みた ことが あります。
ふたつが おなじ しげんを どうじに さわると
けっかが からまる きょうそうじょうたいです。
ざんだかも おなじ。
ふたりが どうじに ざんだかを よみ
それぞれ かえた あたいを かきこむと、
あとで かいた ひとが まえの けっかを うわがきします。
いちどの へんこうが まるごと きえるのです。
だから ひとりずつ じゅんに しょりさせて とめます。
ふたりを どうじに おくってみて。そのままだと かたほうが うわがきして からまり、じゅんに とめると りょうほう はんえい。
そのままだと かたほうの へんこうが きえました。
じゅんに しょりすると りょうほう うまく はんえい。
どうじに きても しばらく れつに ならべ、
ひとりが おわってから つぎの ひとを うけます。
じゅんばんを きめるだけで うわがきが きえます。
まえに みた たばね、ロールバックと あわせて
いまや どうじに かいても からまない。
この みっつが あつまると データは
しんじて まかせられるほど たよれます。
まとめて みましょう
ひとことに まとめると こうです。
ペアで なおすべき しゅうせいを ひとつに たばねる。
ぜんぶ できるか、ぜんぶ できないか。
とちゅうで くいちがえば はんぶんを のこさず
はじめの まえへ まるごと もどす。これが ロールバックです。
なんにんもが どうじに おなじ ところを かえようとしたら
じゅんに れつに ならべ うわがきを とめる。
ぜんぶか ゼロか、くいちがいは ロールバック、
どうじでも からまない。それが トランザクションです。
かなめを じゅんに おして ふりかえって。(ふりこみは ペア → ぜんぶか ゼロか → くいちがいは ロールバック → どうじでも からまない)
これで データを あんぜんに かえる
たよれる やくそくが わかりました。
おかねが きえる ひやりとした すきまも、
でんげんが きえて はんぶん のこる じこも、
どうじに かえて もつれる こんらんも
ひとつの たばという かんがえ ひとつで とけました。
おおくの ひとが ともに つかう システムほど
この やくそくが この うえなく たいせつです。
つぎも データを あつかう ちえを
いっしょに つづけて みていきましょう。