General rules for applications#
背景#
- PGDは、レプリカID値を使用して、変更する行を識別します。アプリケーションが同じ一意の識別子を挿入、削除、および後で再利用すると、問題が発生する可能性があります。これは、
ABA problem と呼ばれます。
PGDは、行が現在の行、最後の行、またはかなり古い行であるかどうかを知ることができません。
同様に、 PGDはテーブル名を使用して、変更が再生されるテーブルを識別するため、同じオブジェクト名を作成、ドロップ、および後で再利用するアプリケーションにも同様のABA問題が存在します。
アプリケーションのルール#
これらの問題により、アプリケーションが従うべき単純なルールがいくつか発生します。
行の一意の識別子を使用します INSERT
一意の識別子UPDATEの変更を避けます。
削除された一意の識別子の再利用は避けてください。
ドロップされたオブジェクト名の再利用は避けてください。
一般に、これらのルールに違反すると、データの異常と発散が発生する可能性があります。アプリケーションは、特定の条件が満たされる限り、これらのルールを破ることができます。ただし、注意してください。異常が発生する可能性は低いですが、不可能ではありません。たとえば、ダウンしたノードを含むすべてのノードでDELETEが再生された限り、行値を再利用できます。これは通常1秒以内に発生しますが、1つのノードで重大な問題が発生し、正しく再起動できなかった場合には数日かかる場合があります。