Quorum Commit#
コミットスコープの種類 QUORUM COMMIT
概要#
標準の同期レプリケーションは、リモートノードがデータを受信したことを確認しますが、2つのノードが独立して競合する変更をコミットすることを妨げるものではありません。 2つのノードはそれぞれ同じ行を読み取り、ローカル検証チェックを通過し、両方とも正常にコミットできます。クラスターは一貫性のない状態で、どちらの側でもエラーは報告されません。たとえば、決済システムでは、それぞれがローカルで口座残高をチェックする2つのノードは、両方ともアカウント制限を超える同時出金を承認できます。
クォーラムコミットは、ノードがコミットする前にノードの大部分の同意を必要とすることにより、この発散を防ぎます。クラスターが合意に達できない場合、トランザクションはどこでもロールバックされます。その結果、すべてのノードにわたって単一の一貫した状態が得られ、事実後に解決する発散や競合はありません。
クォーラムコミットは、下位互換性のためのみに保持されているグループコミットを置き換えます。不一貫を許可するように構成を誤る可能性のある柔軟な構文を提供したグループコミットとは異なり、クォーラムコミットは一貫性を保証できるものに構文を制限します。
クォーラムコミットを使用する場合#
不一貫が発生した後に解決できないワークロードには、クォーラムコミットを使用します。決済とコアバンキングが最も明確に適合し、クラスター全体で確認できないトランザクションはどこにもコミットしません。通信料金請求、厳しい監査とコンプライアンス要件を伴う規制業界、およびグローバル一貫性保証に依存する独自のデータベースからの移行も、同様に良い候補です。これらのワークロードには、従来、独自のデータベースが必要でした。 Quorum Commitは、Postgresに同じ保証を提供します。