応用情報技術者 2019年 秋期 午前2 問30
問題文
分散トランザクション管理において、複数サイトのデータベースを更新する場合に用いられる2相コミットプロトコルに関する記述のうち、適切なものはどれか。
選択肢
ア:主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合、 コミット準備が完了した従サイトに対してだけコミット要求を発行する。
イ:主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合、全ての従サイトに対して再度コミット準備要求を発行する。
ウ:主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合、 全ての従サイトに対してコミット要求を発行する。(正解)
エ:主サイトが全ての従サイトに対してコミット準備要求を発行した場合、 従サイトは、コミット準備が完了したときだけ応答メッセージを返す。
分散トランザクション管理における2相コミットプロトコル【午前2 解説】
要点まとめ
- 結論:主サイトは全従サイトからコミット準備完了を受け取った後、全従サイトにコミット要求を送るのが正しい動作です。
- 根拠:2相コミットは「準備フェーズ」と「コミットフェーズ」の2段階で全サイトの合意を得てから確定処理を行うため、全員の準備完了が必須です。
- 差がつくポイント:一部サイトだけにコミット要求を送るのは不整合を招くため誤り。全サイトへの一斉通知が重要です。
正解の理由
選択肢ウは、2相コミットプロトコルの基本的な流れを正確に表しています。主サイト(コーディネータ)は全ての従サイト(参加者)から「コミット準備完了」の応答を受け取った後、全サイトに対して「コミット要求」を一斉に送信します。これにより、全サイトが同時にトランザクションを確定し、一貫性を保ちます。
よくある誤解
一部の従サイトだけにコミット要求を送ると整合性が保てると誤解しがちですが、これは分散トランザクションの根幹を崩す行為です。全サイトの合意が不可欠です。
解法ステップ
- 主サイトが全従サイトに「コミット準備要求」を送る。
- 各従サイトはトランザクションの準備ができたら「コミット準備完了」メッセージを返す。
- 主サイトは全従サイトからの準備完了を待つ。
- 全ての準備完了を確認後、主サイトは全従サイトに「コミット要求」を送る。
- 従サイトはコミット要求を受けてトランザクションを確定する。
選択肢別の誤答解説
- ア:一部の従サイトにだけコミット要求を送るのは不整合を招き、誤りです。
- イ:再度コミット準備要求を送るのは誤りで、通常はタイムアウトやエラー処理を行います。
- エ:従サイトは準備完了時に必ず応答メッセージを返しますが、選択肢の表現は曖昧で誤解を招きます。
補足コラム
2相コミットプロトコルは分散システムにおけるデータ整合性を保証する代表的な手法です。欠点としては、主サイトの障害時に全体が停止する「ブロッキング問題」があります。これを解決するために3相コミットやPaxosなどのアルゴリズムも研究されています。
FAQ
Q: 2相コミットで全サイトの準備完了が必要な理由は?
A: 全サイトの合意がなければ一部だけコミットして不整合が生じるため、全員の準備完了が必須です。
A: 全サイトの合意がなければ一部だけコミットして不整合が生じるため、全員の準備完了が必須です。
Q: 主サイトが応答を受け取れない従サイトがある場合は?
A: タイムアウト後にロールバックを行い、トランザクションを中止します。
A: タイムアウト後にロールバックを行い、トランザクションを中止します。
関連キーワード: 分散トランザクション、2相コミット、データベース整合性、トランザクション管理、コミットプロトコル

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

