An Overview of Durability options
=================================

概要
----

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

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

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

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

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

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

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

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

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

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

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

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

..  Note Legacy synchronization availability ::
   下位互換性のため、PGDは`synchronous_commit` および`synchronous_standby_names` を使用した同期レプリケーションの構成を引き続きサポートしています。このオプションの詳細については、 :ref:`Legacy synchronous replication using PGD <Legacy synchronous replication using PGD>` を参照してください。代わりに :ref:`PGD Synchronous_Commit <PGD Synchronous Commit>`  を使用することをお勧めします。 !!!
