Consistency#
EDB Postgres Distributedは、アクティブ/アクティブまたはマルチマスターDBMSです。非同期で使用される場合、標準のデータ型を使用する場合、複数の異なるノードから同じまたは関連する行への書き込みにより、データが 競合 になる場合があります。
競合はエラーではありません。ほとんどの場合、これらは発生時にPGDが検出および解決できるイベントです。解決策はアプリケーションの性質とデータの意味によって異なるため、 PGDがアプリケーションにそれらを解決する方法に関して幅広い選択肢を提供することが重要です。
デフォルトでは、競合は行レベルで解決されます。 2つのノードからの変更が競合する場合、ローカルまたはリモートのタプルのいずれかが選択され、他方は破棄されます。たとえば、コミットタイムスタンプは、2つの競合する変更と新しい方が保持されると比較される場合があります。このアプローチでは、すべてのノードが同じ結果に収束し、クラスター全体でコミットオーダーのようなセマンティクスを確立します。
- 列レベルの競合の検出と解決は、
CLCD で説明しているPGDで利用できます。
- 競合を回避したい場合は、
グループコミット を Eager conflict resolution または競合のないデータ型CRDTとともに使用できます。 bdr.crdt_handlers で説明しています。