【デスペ5問】2相コミット制御(データベーススペシャリスト)
このNoteには、データベーススペシャリスト(デスペ)のAMIIの「2相コミット制御」についてまとめました。
デスペのAMIIはざっくり5年分解けば、全パターンが把握できます。
私が合格した時の学習ノートを基に、ジャンル毎に問題をまとめました。
このNoteの解説は、私がIT専門学校での授業内容を基にしています。
それでは始めましょう!
「2相コミット制御」の基本
分散データベースでは、主サイト(調停者)が従サイト(参加者)に、トランザクション処理について問い合わせや指示を出します。
「2相コミットメント制御」は、分散データベースにおけるトランザクションの処理結果を確定(コミット)する手順です。
2相コミット制御は、2つの段階でコミット処理を行います。
各データベースサイトに「コミットできるか?」と聞く
全サイトから「コミットできます」と返事が出揃ったら「コミットしてください」と指示を出す
もし「コミットできます」返答が出揃わなかったら、「ロールバック(なかったことに)してください」と指示します。
各サイトが「コミットできますか?」に返答してから、「コミットしてください」などの指示が届くまでの間を「セキュア状態」と言います。
セキュア状態は、まだコミット(確定)していないため、コミットでもロールバックもできる状態です。
各サイトは、主サイトから指示がくるまでセキュア状態。コミットすべきかロールバックすべきか判断できず、待ち続けます。
「3相コミット制御」では、セキュア状態にまま一定時間が過ぎれば(タイムアウト)ロールバックと判断します。セキュア状態から脱することができます。
問題演習 | 制御の流れ
正答はウ。
①~④をセリフでまとめました。なお、コミットできない場合についても書きました。
①:「コミットできますか?」
②:「コミットできますよ/できませんよ」
③:「コミットしてください/ロールバックしてください」
④:「コミットしました/ロールバックしました」
各サイトに①が届いてから③が届くまでの間が「セキュア状態」です。
正答はイ。
ア:全サイトから「コミットできます」と返答が出揃ったなら、コミット指示を出します。ロールバック指示は、返答が出揃わなかったときです。
イ:正しい。例えばコミット指示を出す直前に主サイトが停止したり、通信障害が起きたりすれば、各サイトはセキュア状態にままになります。
ウ:全サイトに同じ指示を送信します。ロールバック指示が出たなら、データベースは完全にトランザクション前に戻ります。
エ:全サイトで変更するかしないかを統一せねば、全体として矛盾が生じます。そもそも各サイトがコミットを独自判断もしません。調停者の指示に従います。
正答はイ。
ア:コミットの準備ができてるときも返答します
イ:正しい
ウ:再度コミットの指示はせず、ロールバック指示を出します
エ:2相コミット制御ではロックをしません。
問題演習 | 障害と絡める
正答はイ。
コミットするかロールバックするかが決まっていない状態は「セキュア状態」です。セキュア状態は、参加者が「コミットできますか」に返答してから、次の指示が来るまでの間です。
よってイの「コミット/ロールバックの決定を送る直前」に調停者がダウンが該当します。
ア:トランザクション終了処理が始まってません。あまりに時間が経てば、タイムアウトとしてロールバックします。
イ:正しい。セキュア状態のまま待っていて、決定が届かないので判断できない状態です。参加者は他の参加者がコミットできる返答をしたか分かりません。
ウ:調停者は参加者からの可否返答が出揃わなかったら、全参加者にロールバック指示します。他参加者はロールバックすべきだと分かります。
エ:参加者はコミット指示に従ってコミット処理をしたので、判断はできています。
正答はイ。
ア:ロックを使った排他制御のこと。
イ:正しい。全サイトから応答があれば、調停者はコミット指示を出します。
ウ:調停者からの「コミットできますか?」問い合わせが届かなかったり、「ロールバックしてください」指示が届いたときはロールバックが実行されます。
エ:調停者からの通信について。「コミットできますか?」が届かなければ、参加者はロールバックと判断。「コミット/ロールバックしてください」が届かなければ、セキュア状態のまま待ち続けます。勝手にコミットはしません。
p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。
でわでわ(・ω・▼)ノシ