スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.2966
分散データベース管理システムにおいて、分散トランザクションの原子性を保証するためのコミットプロトコルの一つであり、2相コミットメントプロトコルが持つ「通信障害時にブロッキングが発生する」という欠点を解消するために、合意形成のプロセスに中間状態(プリコミット状態)を導入したプロトコルはどれか。

【正解の解説】

3相コミットメント

みんなで大きなプロジェクトを進めるとき、全員の賛同を得る前に「よし、次は最終確認だね」というワンクッション(プリコミット状態)を挟むようなものです。2相コミットメントだとリーダーが倒れた時にみんなが作業を止めて待ちぼうけになってしまいますが、3相なら「途中で止まったらどう動くべきか」の共通認識があるため、全員が立ち往生せずに安全に行動できるようになります。

スポンサーリンク

【その他の選択肢の解説】

2相コミットメント

問題文にある「3相」のベースとなった一世代前の方式です。レストランの注文で、調理場全員の返事を待つ段階で親方(コーディネーター)が突然いなくなったら、新人がどう動いていいか分からず全員が直立不動で待ち続けるしかない、という致命的な弱点があります。この「待ちぼうけ状態(ブロッキング)」の欠点を解決するために、本問の3相コミットメントが生み出されました。

分散ロック制御

トランザクションのコミット合意手順の話ではなく、一つのトイレの個室に複数の人が同時に駆け込まないように「使用中」の鍵をかける排他制御の技術です。データの整合性を守るという目的は似ていますが、障害時のブロッキング解消を目的としたコミットプロトコルとはアプローチが全く異なるため、試験のひっかけとしてよく登場します。

タイムスタンプ順序方式

整理券を配るように、データにアクセスした順番のタイムスタンプを記録して処理の衝突を防ぐ仕組みです。コーディネーターと各ノード間で合意形成を行うコミットプロトコルの話とはレイヤーが異なり、データの直列化を実現するための別のアプローチであるため、問題文の「合意形成に中間状態を導入する」という説明とは一致しません。