DBデータベーススペシャリスト試験 午前Ⅱ

平成23年度特別 データベーススペシャリスト 午前Ⅱ 問12

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
  2. イ
    主サイトは,各データベースサイトにコミットが可能であることを確認した後,コミットを発行する。
  3. ウ
    主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
  4. エ
    主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
解き方のヒントを見る

トランザクション境界の見極め

処理の開始から終了までを一つのまとまりとして捉え、途中で起こり得る状態変化と、他の処理から見えるタイミングを整理しましょう。

この問題で問われていること

複数の操作がどの範囲で一つの処理として扱われるかに注目し、途中状態と処理完了後の状態を区別して考えましょう。

視点

まず処理のまとまりを区切り、各操作が同じ処理に属するかを確認します。そのうえで、途中の状態が外部から参照される可能性や、異常時にどの範囲を見直す必要があるかを整理してください。

確認ポイント

  • 処理の開始点と終了点を整理する
  • 途中状態と完了後の状態を区別する
  • 異常発生時に確認すべき処理範囲を考える
正解と解説を見る

正解

イ

解説

二相コミットは、主サイトが各データベースサイトへ準備を確認し、全サイトがコミット可能であることを確認してから、確定処理を指示する手順です。

理由

二相コミットでは、まず各データベースサイトがコミットできる状態かを確認する。すべてのサイトが準備できていると判断された後、主サイトがコミットを指示し、複数サイトの更新結果を整合させる。

比較

準備できていない場合だけ応答するのではなく、各サイトの準備結果を処理に利用する。また、単純な再試行やロック操作そのものが二相コミットの本質ではありません。

選択肢ア

これは不正解だよ。各データベースサイトは、コミット準備要求に対して準備できたかどうかを主サイトへ応答する必要がある。準備ができていない場合だけ応答するという条件では、全サイトの準備状況を確認できず、二相コミットの第1段階を正しく表していない。

選択肢イ(正解)

これは正解だよ。二相コミットでは、主サイトが各データベースサイトへ準備を確認し、すべてのサイトでコミット可能であることを確認した後に、コミットを指示する。この順序により、複数サイトの更新をそろえて確定できる。

選択肢ウ

これは不正解だよ。二相コミットは、コミットに失敗したサイトへ主サイトが単純に再度コミットを発行する手順ではない。まず各サイトの準備状態を確認し、その結果に基づいて確定処理を進めるため、失敗時の再発行だけを示す説明は不適切である。

選択肢エ

これは不正解だよ。データベースサイトのロック取得とアンロックは、同時実行制御に関係する処理であり、二相コミットの基本的な処理手順そのものではない。二相コミットでは、ロック成功後の操作ではなく、各サイトのコミット準備を確認してから確定指示を行う。

学習のポイント

準備フェーズとコミットフェーズの役割、処理順序、サイト間の整合性を学ぶ。

出典:独立行政法人 情報処理推進機構(IPA)平成23年度特別 データベーススペシャリスト試験 午前Ⅱ 問12(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針