令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5 2相コミットプロトコル

Tech

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問5 2相コミットプロトコル

分散データベースの整合性を保つ2相コミットプロトコルの動作プロセスと、主サイト・従サイト間の決定ルールを問う問題です。

【問題】

分散データベースシステムにおいて、2相コミットプロトコルを用いてトランザクションを同期制御する。主サイト(コーディネーター)が全従サイト(コホート)にコミットの準備(Prepare)を要求した後の動作として、適切なものはどれか。

ア 一部の従サイトから否決(VOTE_ABORT)の応答を受け取った場合でも、過半数の従サイトから合意(VOTE_COMMIT)の応答があれば、主サイトはコミットを決定する。 イ すべての従サイトから合意(VOTE_COMMIT)の応答を受け取った場合、主サイトはコミットを決定し、全従サイトへコミット指示(GLOBAL_COMMIT)を送信する。 ウ 従サイトは、主サイトからの準備要求を受信した時点で、ローカルなコミット処理を完全に完了させてから合意応答を返信する。 エ 準備要求送信後、特定の従サイトからの応答が一定時間内にない場合、主サイトは通信障害とみなし、単独でコミットを強行する。

【解説】

2相コミットプロトコル(Two-Phase Commit Protocol: 2PC)は、分散データベース環境において、複数のノード(サイト)にまたがるトランザクションの原子性(Atomicity:すべて実行されるか、全く実行されないかのどちらかである性質)を保証するためのプロトコルです。

このプロトコルは、以下の2つのフェーズ(相)に分かれて実行されます。

1. 第1相:投票フェーズ(Prepare Phase)

主サイト(調整者)がすべての従サイト(参加者)に対し、コミットの準備が可能かどうかの問い合わせ(Prepare)を送信します。 各従サイトは、自身のローカルな更新処理が問題なく完了できる状態(ログの書き出し完了など)であれば「合意(VOTE_COMMIT)」、不可であれば「否決(VOTE_ABORT)」を主サイトに応答します。

2. 第2相:決定フェーズ(Commit Phase)

主サイトは、すべての従サイトからの応答を回収し、次のルールに基づいて最終決定を下します。

  • 全員が「合意」の場合:主サイトはコミットを決定し、全員に「コミット指示(GLOBAL_COMMIT)」を送ります。

  • 1つでも「否決」または「タイムアウト(無応答)」がある場合:主サイトはロールバックを決定し、全員に「ロールバック指示(GLOBAL_ABORT)」を送ります。

sequenceDiagram
    autonumber
    Participant Coordinator as 主サイト
    Participant Cohort as 従サイト
    Note over Coordinator, Cohort: Phase 1 (Prepare Phase)
    Coordinator ->> Cohort: Prepare
    Note over Cohort: Check local state
    Cohort -->> Coordinator: VOTE_COMMIT
    Note over Coordinator, Cohort: Phase 2 (Commit Phase)
    Note over Coordinator: Decision (All Yes)
    Coordinator ->> Cohort: GLOBAL_COMMIT
    Note over Cohort: Execute commit
    Cohort -->> Coordinator: ACK

【選択肢の吟味】

選択肢 判定 解説
誤り 2相コミットでは、1サイトでも否決(VOTE_ABORT)を返した場合は、過半数に関わらず全体をロールバック(GLOBAL_ABORT)します。
正解 すべての従サイトから合意(VOTE_COMMIT)を得られた場合にのみ、主サイトはコミットを決定し、GLOBAL_COMMITを送信します。
誤り 準備要求(Prepare)の段階では、従サイトはコミットできる状態にする(ログへの記録など)だけであり、最終指示があるまでコミットは完了しません。
誤り 応答が一定時間ない(タイムアウト)場合、主サイトは障害とみなして「ロールバック(GLOBAL_ABORT)」を指示します。強行コミットは行いません。

【ポイント】

  • 全員一致が原則:1つでも否決やタイムアウトがあれば、全体がロールバックされる(All or Nothingの徹底)。

  • 2段階のフェーズ:第1相で「準備(Prepare)と合意(Vote)」、第2相で「最終決定(Commit / Abort)」。

  • 主従の役割:主サイト(コーディネーター)が全体の合否を判定し、従サイト(コホート)は自サイトの成否を返す。

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました