Consistency¶
EDB Postgres Distributedは、アクティブ/アクティブまたはマルチマスターのDBMSです。非同期で使用すると、複数の異なるノードから同じまたは関連する行に書き込むと、標準データ型を使用するとデータ CRDTデータ型を使用した列の競合の処理 が得られる可能性があります。
競合はエラーではありません。ほとんどの場合、それらはPGDが発生時に検出および解決できるイベントです。解像度はアプリケーションの性質とデータの意味によって異なるため、PGDがアプリケーションにそれらを解決する方法に関する幅広い選択肢を提供することが重要です。
デフォルトでは、競合は行レベルで解決されます。 2つのノードからの変更が競合する場合、ローカルまたはリモートのタプルが選択され、もう一方は破棄されます。たとえば、2つの競合する変更のコミットタイムスタンプを比較し、新しい方を保持する場合があります。このアプローチにより、すべてのノードが同じ結果に収束し、クラスター全体でコミットオーダーのようなセマンティクスが確立されます。
CLCD で説明されているように、列レベルの競合検出と解決はPGDで使用できます。
- 競合を回避したい場合は、 Group Commit を Eager conflict resolution または
CRDTデータ型を使用した列の競合の処理 で説明されている競合のないデータ型(CRDT)とともに使用できます。
- Conflicts
- 競合はどのように発生するか
- 紛争の種類
- PRIMARY KEYまたはUNIQUEの競合
- INSERT / INSERTの競合
- 複数のUNIQUE制約に違反するINSERT操作
- UPDATE / UPDATEの競合
- PRIMARY KEYでのUPDATEの競合
- 複数のUNIQUE制約に違反するUPDATE操作
- UPDATE/DELETEの競合
- INSERT / UPDATEの競合
- INSERT/DELETEの競合
- DELETE/DELETEの競合
- 3つ以上のノードとの競合
- 外部キー制約の競合
- TRUNCATEの競合
- 除外制約の競合
- ロールとテーブルスペースの違いによるデータの競合
- ロックの競合とデッドロックの中止
- 発散する競合
- TOASTサポート詳細
- 競合の回避または許容
- 競合検出
- autovacuum_freeze_max_ageの90%
- Column-level conflict detection
- Conflict-free replicated data types
- Eager conflict resolution