見出し画像

【デスペ5問】2相コミット制御(データベーススペシャリスト)


このNoteには、データベーススペシャリスト(デスペ)のAMIIの「2相コミット制御」についてまとめました。

デスペのAMIIはざっくり5年分解けば、全パターンが把握できます。

私が合格した時の学習ノートを基に、ジャンル毎に問題をまとめました。


このNoteの解説は、私がIT専門学校での授業内容を基にしています。

それでは始めましょう!





「2相コミット制御」の基本


分散データベースでは、主サイト(調停者)従サイト(参加者)に、トランザクション処理について問い合わせや指示を出します。

「2相コミットメント制御」は、分散データベースにおけるトランザクションの処理結果を確定(コミット)する手順です。

2相コミット制御は、2つの段階でコミット処理を行います。

  1. 各データベースサイトに「コミットできるか?」と聞く

  2. 全サイトから「コミットできます」と返事が出揃ったら「コミットしてください」と指示を出す

もし「コミットできます」返答が出揃わなかったら、「ロールバック(なかったことに)してください」と指示します。


各サイトが「コミットできますか?」に返答してから、「コミットしてください」などの指示が届くまでの間を「セキュア状態」と言います。


セキュア状態は、まだコミット(確定)していないため、コミットでもロールバックもできる状態です。

各サイトは、主サイトから指示がくるまでセキュア状態。コミットすべきかロールバックすべきか判断できず、待ち続けます。

「3相コミット制御」では、セキュア状態にまま一定時間が過ぎれば(タイムアウト)ロールバックと判断します。セキュア状態から脱することができます。



問題演習 | 制御の流れ


2相コミット制御の流れにおいて、③の動作はどれか。

ア:アンロックの実行の指示
イ:コミット可否の問い合わせ
ウ:コミット実行の指示
エ:ログ取得の指示

データベーススペシャリスト 平成26年午前2問12より改変

正答はウ。

①~④をセリフでまとめました。なお、コミットできない場合についても書きました。

  • ①:「コミットできますか?」

  • ②:「コミットできますよ/できませんよ」

  • ③:「コミットしてください/ロールバックしてください」

  • ④:「コミットしました/ロールバックしました」

各サイトに①が届いてから③が届くまでの間が「セキュア状態」です。



分散データべースでは、トランザクションは複数のサブトランザクションに分割され、複数のデータベースサイトで実行される。このシステムにおけるコミット制御について適切なものはどれか。

ア:全てのサイトから主サイトにコミット了承の応答があっても、主サイトはロールバックを指示する場合がある。
イ:2相コミットを用いても、主サイトの指示が各サイトに届かず、各サイトがコミットすべきかロールバックすべきか判断できないことも生じる。
ウ:トランザクションがロールバックされても、コミットされる場合がある。
エ:各サイトが独自にコミットをしても、データベースの一貫性は保証できる

データベーススペシャリスト 平成27年午前2問12より改変
平成24年午前2問12より改変
平成30年午前2問13より改変
令和03年午前2問12より改変

正答はイ。

  • ア:全サイトから「コミットできます」と返答が出揃ったなら、コミット指示を出します。ロールバック指示は、返答が出揃わなかったときです。

  • イ:正しい。例えばコミット指示を出す直前に主サイトが停止したり、通信障害が起きたりすれば、各サイトはセキュア状態にままになります。

  • ウ:全サイトに同じ指示を送信します。ロールバック指示が出たなら、データベースは完全にトランザクション前に戻ります。

  • エ:全サイトで変更するかしないかを統一せねば、全体として矛盾が生じます。そもそも各サイトがコミットを独自判断もしません。調停者の指示に従います。



分散データシステムにて、複数のデータベースを更新する時に用いる「2相コミット」の処理手順として適切なものはどれか。

ア:主サイトが各データベースサイトにコミット準備要求を発した時、各データベースサイトはコミットする準備ができていない場合だけ応答を返す。
イ:主サイトは、コミットができるかを確認した後、コミットを発行する。
ウ:主サイトは、各データベースサイトにコミットを発行して失敗した時、再度コミットを発行する。
エ:主サイトは、各データベースサイトのロックに成功した後、コミットを発行し、その後アンロックする。

データベーススペシャリスト 平成28年午前2問14より改変
平成31年午後2問15より改変

正答はイ。

  • ア:コミットの準備ができてるときも返答します

  • イ:正しい

  • ウ:再度コミットの指示はせず、ロールバック指示を出します

  • エ:2相コミット制御ではロックをしません。




問題演習 | 障害と絡める


分散データベースでは、ネットワーク障害によって調停者から参加者へ指示が届かず、参加者がコミットすべきかロールバックすべきか判断できなくなることがある。そのような状況になるネットワーク障害はどれか。

ア:調停者がコミットやロールバック可否の問い合わせを参加者に送る直前に障害が起こった。
イ:調停者がコミットやロールバックの決定を参加者に送る直前に障害が起こった。
ウ:参加者が調停者にコミットやロールバック可否への返答をする直前に障害が起こった。
エ:参加者が調停者にコミットやロールバック完了を報告する直前に障害が起こった。

データベーススペシャリスト 平成25年午前2問13より改変

正答はイ。

コミットするかロールバックするかが決まっていない状態は「セキュア状態」です。セキュア状態は、参加者が「コミットできますか」に返答してから、次の指示が来るまでの間です。

よってイの「コミット/ロールバックの決定を送る直前」に調停者がダウンが該当します。

  • ア:トランザクション終了処理が始まってません。あまりに時間が経てば、タイムアウトとしてロールバックします。

  • イ:正しい。セキュア状態のまま待っていて、決定が届かないので判断できない状態です。参加者は他の参加者がコミットできる返答をしたか分かりません。

  • ウ:調停者は参加者からの可否返答が出揃わなかったら、全参加者にロールバック指示します。他参加者はロールバックすべきだと分かります。

  • エ:参加者はコミット指示に従ってコミット処理をしたので、判断はできています。



2相コミットに関する記述で適切なものはどれか。

ア:2相コミットとは、トランザクションの処理中のデータを他のトランザクションからアクセスできなくする制御方式のこと。
イ:2相コミットで更新するとき、分散データベースに各サイト全てから更新可能である応答が必要となる。
ウ:2相コミットを採用すれば、ロールバックは発生しない
エ:2相コミットを使えば、分散データベースで調停者から各参加者への通信障害が発生しても、トランザクションをコミットできる。

データベーススペシャリスト 平成29年午前2問14より改変

正答はイ。

  • ア:ロックを使った排他制御のこと。

  • イ:正しい。全サイトから応答があれば、調停者はコミット指示を出します。

  • ウ:調停者からの「コミットできますか?」問い合わせが届かなかったり、「ロールバックしてください」指示が届いたときはロールバックが実行されます。

  • エ:調停者からの通信について。「コミットできますか?」が届かなければ、参加者はロールバックと判断。「コミット/ロールバックしてください」が届かなければ、セキュア状態のまま待ち続けます。勝手にコミットはしません。



p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。

でわでわ(・ω・▼)ノシ


この記事が参加している募集

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ