分散データベースと2相コミットとは?ぶんさんでーたべーすとにそうこみっと
分散データベースと2相コミットとは、複数の拠点やノードにまたがるトランザクションを、全部コミットか全部ロールバックのどちらかへ揃えるための調停手順。第1フェーズで調整役が全員に「コミットできる状態か」を問い、全員が準備完了と答えたときにだけ、第2フェーズで確定を指示する。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
データが1か所にあるうちは、確定するかどうかを決める主体も1つで済む。分散すると各ノードが独立に成功・失敗するため、片方だけ確定した中途半端な状態が生まれ得る。2相コミットは、確定の判断を「書ける状態にしておく」段階と「確定を宣言する」段階へ割り、全員が前段を越えたことを確認してから後段へ進むことでこの中途半端を消す。複数の機器を一括で新しい版へ切り替える場面など、確定の同時性が要る設計へそのまま流用できる発想である。
具体例
車両の複数ECUをまとめてOTA更新するとき、各ECUが新しいイメージの書込みと検証を終えた状態を「準備完了」とし、全ECUの完了を確認してから一斉に起動面を切り替える。1台でも書込みに失敗すれば誰も切り替えず、全台が旧面のまま走り続ける。片方だけ新しい版になって、バス上のメッセージ仕様が食い違う状態を避けられる。
試験での引っ掛け
2相コミットの「2相」は2相ロックの「2相」とは別物で、前者は分散環境での原子性、後者は同時実行制御の話。また万能ではなく、準備完了と答えた後に調整役が落ちると、各ノードはコミットもロールバックもできず資源をロックしたまま待ち続ける(ブロッキング)。タイムアウトと調整役の冗長化まで決めていなければ、可用性はかえって下がる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。