平成31年度 春期 データベーススペシャリスト試験 午前II 問15
【問題15】
分散データベースシステムにおいて、複数のデータベースサイトを更新する場合に用いられる2相コミットの処理手順のうち、適切なものはどれか。
主サイトが各データベースサイトにコミット準備要求を発行した場合、各データベースサイトは、準備ができていない場合だけ応答を返す。
主サイトは、各データベースサイトにコミットを発行し、コミットが失敗した場合には、再度コミットを発行する。
主サイトは、各データベースサイトのロックに成功した後、コミットを発行し、各データベースサイトをアンロックする。
主サイトは、コミットが可能であることを各データベースサイトに確認した後、コミットを発行する。
【解説】
2相コミット(Two-Phase Commit, 2PC)は、分散トランザクションを一貫性を保ちながら確定または中止するためのプロトコルです。以下が2相コミットの一般的な手順です:
- 準備フェーズ(Prepare Phase)
主サイト(コーディネーター)は、各データベースサイト(パーティシパント)に対して「コミットの準備ができているか」を問い合わせます。各サイトはローカルな操作を記録し、準備が整えば「準備完了(Yes)」を応答します。準備ができていない場合は「準備不可(No)」を応答します。
- コミットフェーズ(Commit Phase)
主サイトは、全てのデータベースサイトから「準備完了」の応答を受け取った場合、コミットを発行します。一方で、1つでも「準備不可」の応答を受け取った場合は、全てのデータベースサイトにロールバックを指示します。
ア: 主サイトが各データベースサイトにコミット準備要求を発行した場合、各データベースサイトは、準備ができていない場合だけ応答を返す。
誤り。準備ができていない場合のみ応答を返すのではなく、全てのサイトが応答を返す必要があります。
イ: 主サイトは、各データベースサイトにコミットを発行し、コミットが失敗した場合には、再度コミットを発行する。
誤り。コミットが失敗した場合に再度コミットを発行することはありません。失敗した場合はロールバックを指示します。
ウ: 主サイトは、各データベースサイトのロックに成功した後、コミットを発行し、各データベースサイトをアンロックする。
誤り。ロックの成功・解除は2相コミットのプロセスには含まれません。
エ: 主サイトは、コミットが可能であることを各データベースサイトに確認した後、コミットを発行する。
正しい。準備フェーズで全てのデータベースサイトが「コミット可能」であることを確認し、その後コミットフェーズでコミットを発行するのが2相コミットの正しい手順です。
【答え】
エ: 主サイトは、コミットが可能であることを各データベースサイトに確認した後、コミットを発行する。
出典:平成31年度 春期 データベーススペシャリスト試験 午前II 問15