Replicating to analytics#

Postgres DistributedPGDクラスター内でPostgresアナリティクスアクセラレーターPGAAを使用して、ローカルヒープテーブルをハイブリッドトランザクションおよび分析処理HTAPテーブルに変換することにより、分析データレイクと同期します。

この状態では、すべてのINSERT 、UPDATE 、およびDELETE オペレーションがキャプチャされ、ほぼリアルタイムでオブジェクトストレージにストリーミングされます。テーブルはアプリケーションの標準のトランザクションエンドポイントであり続けますが、 PGDはバックグラウンドで高忠実度の分析レプリカを維持し、運用パフォーマンスに影響を与えることなくBIツールとクエリエンジンでデータをすぐに利用できるようにします。

このプロセスの主な利点は次のとおりです。

  • ニアリアルタイム分析 バッチETLプロセスを待たずに、データレイクの最新のトランザクションデータにアクセスします。

  • デュアルステートのアクセシビリティ トランザクション用のローカルの高性能ストレージを維持しながら、大量の分析クエリ用のカラムナバージョンを提供します。

  • 統合管理 標準のSQLおよびPGAA機能を介して、データのライフサイクルとレプリケーション設定を直接管理します。

  • マージオンリードの効率 PGAAは、Iceberg Merge-on-ReadMoRを使用してデータを同期します。行が変更されるたびに大きなファイルを書き換える代わりに、単に削除ファイルに変更を記録します。これにより、レプリケーションの高速性が維持され、オブジェクトストレージの負荷が大幅に削減されます。

プロセスの概要#

テーブルの継続的レプリケーションを有効にするには、次の手順を実行します。

  1. Setting up PGAA 保存場所またはカタログサービスのいずれかを選択します。

  2. レプリケーションの有効化 データストリームを開始します。

  3. レプリケーションラグのモニタリング ステータスとヘルス。

  4. レプリケーションの無効化 同期が必要でなくなった場合。

レプリケーションの有効化#

pgaa.enable_analytics_replication() ファンクションを使用して、既存のヒープテーブルを構成して、データをオブジェクトストレージにストリーミングします。ファンクションは、ヒープテーブルを分析HTAPテーブルに変換し、論理レプリケーションワーカーを起動します。

CALL pgaa.enable_analytics_replication(my_table::regclass, purge_analytics_target := TRUE);

レプリケーションが開始される前に、ターゲットの場所にある既存のデータをパージするようにpurge_analytics_target:= TRUE を設定します PGD 6.3以降が必要です。

または、テーブルオブジェクトでレプリケーション状態を直接切り替えます。

ALTER TABLE my_table SET (pgd.replicate_to_analytics = TRUE);

bdr.prefer_analytics_engine パラメーターを有効にして、クエリをPGAAエンジン SeafowlまたはSparkにルーティングできます。

SET bdr.prefer_analytics_engine = TRUE;

無効にすると、クエリーは標準のPostgresエンジンによってローカルヒープに対して実行されます。

注釈

Barmanを使用して、HTAPテーブルを含むPGDクラスターをバックアップする場合、pgaa.enable_analytics_replication() オペレーション中にターゲット時間を含むポイントインタイムリカバリPITRは、展開を部分的に復旧した状態のままにする場合があります。詳細とクリーンアップの手順については、

Known limitation: PITR restore after enabling analytics replication を参照してください。

モニタリングレプリケーション#

レプリケーションが有効になると、テーブルがローカルリレーションリストと分析メタデータの両方に表示されることを確認することにより、HTAPステータスを確認できます。

ローカルテーブルと分析ターゲット間のマッピングを表示します。

SELECT * FROM bdr.analytics_table;

現在PGAAによって管理されているすべてのテーブルをリストします。

SELECT * FROM pgaa.list_analytics_tables();

レプリケーションの無効化#

レプリケーションを無効にすると、論理ワーカーによる変更のキャプチャが停止されます。ローカルテーブルは標準のヒープテーブルに戻り、オブジェクトストレージのリモートコピーはデータの静的スナップショットになります。

pgaa.disable_analytics_replication() ファンクションを使用して同期を停止します。

CALL pgaa.disable_analytics_replication(my_table::regclass);

または、 ALTER TABLE を使用します。

ALTER TABLE my_table SET (pgd.replicate_to_analytics = FALSE);
SET bdr.prefer_analytics_engine= FALSE;

注釈

以前に無効になったテーブルでレプリケーションを再度有効にすると、システムは完全なリロードを実行します。このプロセスは、オブジェクトストレージ内の既存の分析データを効果的に削除し、現在のローカルヒープデータを全体的に再アップロードし、継続的同期を開始します。 !!!