IT用語入門:2相コミットメント【分散トランザクションを矛盾なく確定する仕組み】

PR
PR

PR

バナー

2相コミットメントとは

2相コミットメントは、分散データベースで1つのトランザクションを複数のデータベースにまたがって確実に確定させるための方式です。コミットの手続きを二段階に分けることで、どこか一つだけ反映されてしまう矛盾を防ぎます。ネットワーク越しに複数のサイトが関与する処理で用いられます。

例えば、在庫システムと決済システムを同時に更新する注文処理では、片方だけ成功してもう片方が失敗すると整合性が崩れます。2相コミットメントは、このような分散トランザクションで「全部成功」か「全部取り消し」のどちらかに必ず揃えます。

第1相(準備)では、調整役が各データベースに「今の更新を確定できるか」を問い合わせます。参加側はロックやログ記録を行い、コミットもロールバックも可能な中間の安全状態で待機し、可否を返します。全員が「可能」と答えたら第2相でコミットを指示し、誰かが不可ならロールバックを指示します。

この手順により、原子性と一貫性が保たれ、分散環境でも信頼できる更新が行えます。一方で、待機中はロックで資源が占有されるため、遅延や障害時の影響を考慮した設計が必要です。役割としては、分散トランザクションを安全に束ねる調停の仕組みと覚えると理解しやすいでしょう。