平成21年度 春期 午前 問33
データベース
2相コミットに関する問題
分散データベースにおいて図のようなコマンドシーケンスがあった。調停者がシーケンス a で発行したコマンドはどれか。ここで,コマンドシーケンスの記述に UML のシーケンス図の記法を用いる。
〔シーケンス図の逐語〕
- 登場するオブジェクトは左から :要求者 / :調停者 / :システム1 / :システム2 の4つ。
- 要求者 →(UPDATE 要求)→ 調停者
- 調停者 →(UPDATE 要求)→ システム1
- 要求者 →(UPDATE 要求)→ 調停者
- 調停者 →(UPDATE 要求)→ システム2
- 要求者 →(COMMIT 要求)→ 調停者
- 調停者 →(COMMIT 可否問合せ)→ システム1
- 調停者 →(COMMIT 可否問合せ)→ システム2
- システム1 --(可)--> 調停者 (破線=応答)
- システム2 --(否)--> 調停者 (破線=応答)
- 調停者 →(a)→ システム1
- 調停者 →(a)→ システム2
- アCOMMIT の実行要求
- イROLLBACK の実行要求
- ウ判定レコードの書出し要求
- エログ書出しの実行要求
答えと解説を見る
✓ これが正解イROLLBACK の実行要求
解説
1つでも否があったので取り消しの指示を出します。
この設問は、分散データベースで 2 相コミットを進めているとき、投票の集計を受けて次に何を指示するかを問うています。ですから、集めた投票のうち少しでも否があったときに、調停者が全参加者に対して発するべき指示は何か、という一点で見分けます。2 相コミットの流れは、まず各参加者に対して確定して構わないかを問い合わせて可否を集める段階、次にその集計に基づいて全参加者に確定または取り消しを一斉に指示する段階、の2つに分かれます。全員が可を返したときだけ確定へ進み、1人でも否があったときは全員に取り消しへ回るよう指示します。設問のシーケンス図では、システム 1 が可、システム 2 が否を返しています。ですから、確定へは進めず、両方の参加者に対して取り消しを行うよう指示することになり、この段階の a に入るのは取り消しの指示になります。
ほかの選択肢はなぜ違うのか
- アCOMMIT の実行要求:確定処理の実行を要求するコマンド、と述べています。確定は全参加者から可の応答がそろったときにだけ発することができ、片方が否を返した集計と噛み合いません。
- ウ判定レコードの書出し要求:判定レコードの書出しを要求するコマンド、と述べています。手順の全体で扱っているのは可否の集計とその結果に基づく指示の伝達で、内部ログ側の書出し指示を指しているわけではありません。
- エログ書出しの実行要求:ログ書出しの実行を要求するコマンド、と述べています。ここで必要なのは、全参加者に一斉に伝えるべき次の動作であり、ログ書出しそのものを指示として送る手順ではありません。
この問題の用語
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
- ログいつ誰が何をしたかを、機器やソフトウェアが自動で残していく記録です。あとから出来事をたどれるので、事故の調査や不正の発見に使われます。
出典:平成21年度 春期 応用情報技術者試験 午前 問33
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)