ホーム > データベーススペシャリスト試験 > 2016年

データベーススペシャリスト試験 2016年 午前214


分散データベースシステムにおいて, 複数のデータベースを更新する場合に用いられる2相コミットの処理手順として, 適切なものはどれか。
主サイトが各データベースサイトにコミット準備要求を発行した場合, 各データベースサイトは, 準備ができていない場合だけ応答を返す。
主サイトは, コミットが可能であることを各データベースサイトに確認した後, コミットを発行する。(正解)
主サイトは, 各データベースサイトにコミットを発行し, コミットが失敗した場合には、再度コミットを発行する。
主サイトは, 各データベースサイトのロックに成功した後, コミットを発行し, 各データベースサイトをアンロックする。

解説

2相コミットプロトコルの処理手順と選択肢の解説

2相コミットとは

分散データベースシステムにおける2相コミット(Two-Phase Commit)は、複数のデータベース(ノード)に対する更新処理を全て成功させるか、全てキャンセル(ロールバック)するかを保証するためのプロトコルです。これにより、一貫性が保たれ、途中で処理が中断して不整合が起きることを防ぎます。

2相コミットの処理手順

2相コミットは、その名前の通り2つのフェーズに分かれています。

1. 準備フェーズ (Prepare Phase)

  • コーディネータ(主サイト)が各参加ノード(各データベースサイト)へ、「コミットしても良いか?」とコミット準備要求 (prepare request) を送る。
  • 各参加ノードは、ローカルトランザクションを適用しても良い状態(ロックを確保できるなど)であれば「準備OK(commit OK)」の応答を返す。
  • もし何らかの問題でコミットできなければ「準備不可(abort)」の応答を返す。

2. コミットフェーズ (Commit Phase)

  • コーディネータは、全ての参加ノードから「準備OK」の応答が返って来たら、今度は「コミットを実行しろ」というコミット命令 (commit command) を参加ノードに送る。
  • 各ノードはコミットを実施し、ロックを解除する。
  • 逆にもし一つでも「準備不可」があった場合は、コーディネータは「ロールバック命令 (abort command)」を送る。

選択肢の評価

選択肢番号内容評価
主サイトが各データベースにコミット準備要求を出し、準備ができていない場合のみ応答を返す。誤り。準備できている場合にも応答が返る必要があるため。通常は「準備OK」または「準備不可」の両方の応答を返す。
主サイトがコミット可能かどうかを各データベースに確認した後、コミットを発行する。正解。2相コミットの正しい処理手順。
主サイトが各データベースにコミットを発行し、失敗した場合に再度コミットを発行する。誤り。コミット失敗時に再度コミットを出しても意味がない。失敗時はロールバック命令を送る。
主サイトはロックに成功した後にコミットを発行し、終了後にアンロックする。不正確。ロックは各ノードが準備段階で行うものであり、主サイト単独の判断ではない。

まとめ

2相コミットの正しい流れは:
  1. 主サイトが各データベースサイトにコミット準備要求を送り、状態を確認する。
  2. 全ての参加サイトが「準備OK」と回答したら、主サイトがコミット命令を送信し、
  3. 各サイトがコミットを実行し、完了報告を返す。
このことから、選択肢イの処理手順が最も適切な説明となります。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ