An Overview of Durability options

目次

An Overview of Durability options#

概要#

EDB Postgres分散PGDでは、 コミットスコープ を使用して、耐久性、一貫性、可用性、パフォーマンスのニーズに基づいて、いくつかのレプリケーション構成から選択できます。

基本構成では、 PGDは非同期レプリケーションを使用します。ただし、コミットスコープは、デフォルトとトランザクションごとの動作の両方を変更できます。

ビルトインの物理または論理レプリケーションと同じ方法で、標準のsynchronous_standby_names を使用して古いPostgres同期レプリケーションを構成することもできます。ただし、コミットスコープは、レプリケーション動作の柔軟性と制御を提供します。

さまざまな同期設定は、関連しているがすべて個別に実装できるアプリケーションの3つのプロパティに影響を与えます。

  • 耐久性 複数のノードに書き込むと、クラッシュ耐性が向上し、クラッシュと再起動後にデータを復旧できます。

  • 可視性 クライアントへのコミット確認により、データベースは、一部のノードセットでコミットされたトランザクションの即時の可視性を保証します。

  • 競合処理 競合はコミット後に楽観的に処理でき、コミットタイムスタンプに基づいてトランザクションがレプリケートされるときに競合が解決されます。または、プリコミット時に悲観的に処理できます。クライアントは、最終的にすべてのノードに適用されるトランザクションに依存して、さらなる競合または中止を取得して、クライアントにエラーを直接通知できます。

コミットスコープでは、トランザクションの4種類の制御耐久性が許可されます。

  • グループコミット この種のコミットスコープは、トランザクションがコミット可能であると考えられる前に、どのおよびいくつのノードがコンセンサスに到達する必要があり、レプリケーションのどのステージでコミットされたと考えられるかを制御します。このオプションを使用すると、トランザクションの可視性の順序を制御することもできます。

  • CAMOまたはコミット・アット・モスト・ワンス この種のコミットスコープはグループコミットのバリアントであり、クライアントは再試行する前にトランザクションがコミットされたことを確認する責任を負います。

  • 遅延制御 この種のコミットスコープは、コミットを続行する前にレプリケーションの観点からノードがどれだけ遅れていてもよいかを制御します。

  • PGD Synchronous Commit この種のコミットスコープでは、オリジンノードが大部分のノードの確認を待機する動作が可能になり、ネイティブのPostgres同期コミットのように動作します。