応用情報22年秋 午前 問30
【中分類】
データベース−5. データベース応用−(2)分散データベース
【問題を解く前に】
問題文を見てみましょう。聞いていることは結局、
「更新処理を確定する方式」です。更新処理を確定するのは、コミットですが、
コミットに関することは、(ア)しかないので、答えは、(ア)・・・なんですが、じゃあ、その前についている、なが〜い文はなにか・・・
これ、二相コミットの具体的な説明です。
二相コミットは、分散データベースにおける、コミット処理です。
1つのデータベースなら、そのデータベースがコミット処理すればいいです。
でも、コミットしようとするデータが、複数データベースにまたがっている場合、全部をコミットするか、ロールバックしないと一貫性が保てなくなります。
だから、1つのDBをコミットしたら、次のDBへ・・・という方法はだめです。
AというDBを更新した・・・
BというDBを更新しに行こうとしたら、BのDBの電気が切れてた。
やば、AのDBの更新取り消そう
と思ったら、AのDBの電源が切れていた・・・
どうしよう・・・Aは更新したけど、Bは、更新してないよう・・・となってしまいます。
そこで、分散データベースでは、
<<第一段階 1相=フェーズ1>>
・まず一度、トランザクション処理に関する各データベースに対して、
こういう更新処理をしますけど、いっすか?と問い合わせます
↓
・OKという返事を各DBがします。このとき、各DBは、ロックとかは
必要ならするけど、この時点では、コミットでもロールバックでもOK
な状態にしておきます(セキュアっていいます)
<<第二段階 2相=フェーズ2>>
・全員OKなら、コミット指示、だめな人がいたり、なんか他に問題が
あるときは、ロールバック指示を全DBに送ります
↓
・指示に基づき、コミット、またはロールバックします。
っていう処理を行います。
【解き方】
ってことで、知っていたら、すぐに答えが出ます。
【答え】
(ア)
【解き終わって】
知っていれば終わりという問題。