PGD overview - architecture and performance#

アーキテクチャオプションとパフォーマンス#

常時接続アーキテクチャ#

多数の異なるアーキテクチャを構成できますが、それぞれが異なるパフォーマンスとスケーラビリティ特性があります。

グループは、2つ以上のノードサーバーで構成される基本的なビルディングブロックです。グループでは、各ノードは専用のルーターとバックアップを備えた異なるアベイラビリティーゾーンにあり、即時のスイッチオーバーと高可用性を提供します。各グループには、専用のレプリケーションセットが定義されています。グループがノードを失った場合、グループから既存のノードをコピーすることにより、簡単に修復または置換できます。

Always-onアーキテクチャは、1つの場所にある1つのグループ、または2つの別の場所にある2つのグループから構築されます。各グループは高可用性を提供します。 2つのグループが遠隔地で活用される場合、それらは一緒にディザスターリカバリーDRも提供します。

テーブルは両方のグループにまたがって作成されるため、変更はローカルグループのノードだけでなく、すべてのノードに適用されます。

各グループの1つのノードがグループの書き込みリーダーとして選択されます。プロキシは、アプリケーションの書き込みと照会を書き込みリーダーに転送します。他のノードは書き込みリーダーのレプリカです。任意の時点で、書き込みリーダーが使用できない場合、グループ内の残りのノードはグループから新しい書き込みリーダーを選択し、プロキシはトラフィックをそのノードに転送します。スケーラビリティはこのアーキテクチャの目標ではありません。

書き込みは主に1つのノードのみに行われるため、ノード間の競合の可能性はほぼゼロに減少します。その結果、パフォーマンスへの影響が大幅に削減されます。

セカンダリアプリケーションはシャドウノードに対して実行される場合がありますが、メインアプリケーションがそのノードの使用を開始すると、これらは削減または中断されます。

将来的には、1つのノードが他のグループのメインレプリケーターとして選択され、クラスターの成長に応じてレプリケーションのCPUオーバーヘッドを制限し、他のグループへの帯域幅を最小化します。

サポートされているPostgresデータベースサーバー#

PGDは、 PostgreSQL 、 EDB Postgres Extended Server 、および EDB Postgres Advanced Server と互換性があり、 BDRという名前の標準のPostgres拡張機能として展開されます。サポートされているバージョンの組み合わせの詳細については、 Compatibility を参照してください。

一部の主要なPGD機能は、ターゲットPostgresデータベースサーバーで使用可能な特定のコア機能に依存しています。したがって、 PGDユーザーは、ビジネスニーズに最適なPostgresデータベースサーバーディストリビューションも採用する必要があります。たとえば、 PGD機能のCommit At Most OnceCAMOを使用することがユースケースにとってミッションクリティカルである場合、コミュニティPostgreSQLディストリビューションを採用しないでください。 CAMOを処理するために必要なコア機能がありません。

PGDは、ネイティブに近いPostgresの互換性を提供します。ただし、一部のアクセスパターンは、単一のインスタンスで行う場合と同じようにマルチノード設定で必ずしも機能するとは限りません。マルチノード設定で安全に複製できるものには、いくつかの制限があります。 Application usage は、アプリケーション開発の観点からPGDがどのように動作するかについて詳しく説明します。

パフォーマンスに影響を与える特性#

デフォルトでは、 PGDはグループ内の各ノードに各テーブルのコピーを1つ保持し、変更はグループ内のすべてのノードに伝播します。

データのコピーはどこにでもあるため、SELECTはローカルノードにアクセスすることのみが必要です。読み取り専用クラスターでは、ノードのパフォーマンスはノード数の影響を受けず、長時間実行されたSELECTクエリによって発生する他のノードでのレプリケーション競合の影響を受けません。したがって、ノードを追加すると、可能な合計SELECTスループットが線形に増加します。

INSERT、UPDATE、およびDELETEDMLがローカルで実行される場合、変更はグループ内のすべてのノードに伝播します。 DML applyのオーバーヘッドは、元の実行よりも少なくなります。したがって、複数のノードで純粋な書き込みワークロードを同時に実行する場合、マルチノードクラスターは、シングルノードよりも多くのTPSを処理できます。

競合処理にはコストがかかり、スループットを低下させます。スループットは、実際にアプリケーションが表示する競合の量によって異なります。競合が非常に低いアプリケーションは、単一ノードよりも優れたパフォーマンスを示します。競合の多いアプリケーションは、単一ノードよりもパフォーマンスが低下する場合があります。これらの結果は、マルチマスターテクノロジーと一貫性があり、PGDに固有ではありません。

同期レプリケーションオプションは、変更をマルチプルのノードに同時に送信できるため、レプリケーション遅延を最小限に抑えることができます。ノードを追加するということは、レプリケーションにより多くのCPUを使用することを意味するため、各ノードが追加されるとピークTPSがわずかに減少します。

ワークロードがすべてのCPUリソースを使用しようとすると、このリソースがレプリケーションを制約し、レプリケーションラグに影響を与える可能性があります。

要約すると、すべての書き込みがすべてのノードで再生されるため、ほとんどのテーブルがレプリケートされる場合、PGDグループにマスターノードを追加しても、大幅な書き込みスループットの増加はありません。 PGD書き込みは、一般にSQLを介してPostgresクライアントからの書き込みよりも効果的であるため、パフォーマンスを向上させることができます。読み取りスループットは、一般にノードの数に線形にスケールします。