General rules for applications

General rules for applications#

背景#

PGDは、レプリカID値を使用して、変更する行を識別します。アプリケーションが同じ一意の識別子を挿入、削除、および後で再利用すると、問題が発生する可能性があります。これは、

ABA problem と呼ばれます。

PGDは、行が現在の行、最後の行、またはかなり古い行であるかどうかを知ることができません。

同様に、 PGDはテーブル名を使用して、変更が再生されるテーブルを識別するため、同じオブジェクト名を作成、ドロップ、および後で再利用するアプリケーションにも同様のABA問題が存在します。

アプリケーションのルール#

これらの問題により、アプリケーションが従うべき単純なルールがいくつか発生します。

  • 行の一意の識別子を使用します INSERT

  • 一意の識別子UPDATEの変更を避けます。

  • 削除された一意の識別子の再利用は避けてください。

  • ドロップされたオブジェクト名の再利用は避けてください。

一般に、これらのルールに違反すると、データの異常と発散が発生する可能性があります。アプリケーションは、特定の条件が満たされる限り、これらのルールを破ることができます。ただし、注意してください。異常が発生する可能性は低いですが、不可能ではありません。たとえば、ダウンしたノードを含むすべてのノードでDELETEが再生された限り、行値を再利用できます。これは通常1秒以内に発生しますが、1つのノードで重大な問題が発生し、正しく再起動できなかった場合には数日かかる場合があります。