Setting up PGAA#

PGDの階層化ストレージは、Postgres Analytics AcceleratorPGAA拡張機能を利用しています。 PGAAは、ベクトル化クエリエンジンとクラウドネイティブストレージハンドラーを提供し、PGDがデータパーティションをオブジェクトストレージにオフロードし、インプレースで照会できるようにします。

階層化テーブルの構成、アナリティクスへのレプリケート、またはデータのオフロードを行う前に、クラスター内のすべてのノードにPGAAをインストールし、オブジェクトストレージの宛先を定義する必要があります。ノードグループレベルでストレージターゲットを構成すると、すべてのノードが同じ場所に書き込みおよび読み取ります。

前提条件#

  • クラスター PGAAおよびPGFS拡張機能がインストールされたPGDバージョン6.1以降。

  • ストレージの場所 IcebergまたはDelta Lake形式を使用するローカル、S3、GCP、またはAzureストレージ。

  • カタログ 外部カタログサービスを使用する場合、Iceberg RESTカタログのみがサポートされます。

  • 権限 データベースユーザーには、PGDおよびPGAAファンクションに対するCREATE 、ALTER 、およびEXECUTE 特権が必要です。

注釈

保管場所またはカタログサービスに関連付けられている資格情報には、宛先バケットの読み取りおよび書き込み権限が必要です。次のファンクションを実行して、権限を確認できます。成功した場合は`NULL` を結果ます。

  • 保存場所の場合

SELECT pgaa.test_storage_location (my_storage_location, true);
  • カタログサービスの場合

SELECT pgaa.test_catalog(my_iceberg_catalog, test_writes := FALSE);

PGAA拡張機能のダウンロードとインストール#

PGDクラスター内のすべてのノードにPGAA拡張機能をインストールします。

  1. EDBリポジトリからパッケージをダウンロードします。

export EDB_SUBSCRIPTION_TOKEN=<your-token>
export EDB_SUBSCRIPTION_PLAN=<your-subscription-plan>
curl -1sSLf "https://downloads.enterprisedb.com/$EDB_SUBSCRIPTION_TOKEN/$EDB_SUBSCRIPTION_PLAN/setup.deb.sh" | sudo -E bash
sudo apt-get install -y <postgresql-distribution>-pgaa
export EDB_SUBSCRIPTION_TOKEN=<your-token>
EDB_SUBSCRIPTION_PLAN=<your-subscription-plan>
curl -1sSLf "https://downloads.enterprisedb.com/$EDB_SUBSCRIPTION_TOKEN/$EDB_SUBSCRIPTION_PLAN/setup.rpm.sh" | sudo -E bash
sudo dnf install -y <postgresql-distribution>-pgaa

そこで

  • $EDB_SUBSCRIPTION_TOKEN は、EDBサブスクリプションの登録時に受け取ったトークンです。 - $EDB_SUBSCRIPTION_PLAN は、 standard PGEまたはCommunity Postgresの場合またはenterprise EPASの場合。 - <postgresql-distribution> は、Postgresディストリビューションedb-postgresextended 、edb-as 、またはpostgres 、およびバージョンを指定します。

  1. postgresql.conf ファイルを更新します。 pgaa をshared_preload_libraries に追加すると、PostgresはバックグラウンドワーカーとしてSeafowlクエリエンジンのライフサイクルを管理できます。

shared_preload_libraries = pgaa
pgaa.autostart_seafowl = on
  1. Postgresサービスを再起動して、新しいライブラリをロードします。

オブジェクトストレージをポイントする#

コールドデータの宛先を定義します。分散PGDクラスター内で作業しているため、これらの構成呼び出しをbdr.replicate_ddl_command でラップして、設定がグループ内のすべてのノードに伝播されるようにする必要があります。

Tip

ノードグループを表示するには、 SELECT node_group_id FROM bdr.node_group; を使用します。

警告

ローカルファイルシステムの保存場所は、マルチノードPGD展開ではサポートされていません。書き込みリーダーフェイルオーバーが発生すると、新しいノードは以前のノードのファイルシステムにアクセスできず、レプリケーションがゼロからリスタートします。代わりにS3、GCS、またはAzureを使用してください。

  1. PGFS extension を使用してストレージの場所を作成し、ノードグループの分析ストレージとして設定します。

SELECT bdr.replicate_ddl_command($$
  SELECT pgfs.create_storage_location(
  my-storage-location,
  protocol://my-bucket-name/path/,
  {"region": "region-name"},
  {"access_key_id": "...", "secret_access_key": "..."}
  )
$$);
  1. analytics_write_catalog をクリアします。 analytics_storage_location を割り当てる前に、その値がNULL である必要があります。

SELECT bdr.alter_node_group_option(my-pgd-group, analytics_write_catalog, NULL);
  1. ノードグループの分析ストレージの場所を設定します。

SELECT bdr.alter_node_group_option(my-pgd-group, analytics_storage_location, my-storage-location);

注釈

PGD 6.5から、 analytics_storage_location または`analytics_write_catalog` 設定は、ターゲットが到達可能な読み取り/書き込みパスであることを検証し、それ以外の場合は構成を拒否します。

  1. external catalog への接続を構成します。

SELECT bdr.replicate_ddl_command($$
  SELECT pgaa.add_catalog(
    my-catalog-name,
    iceberg-rest,
    {
      "url": "https://my-catalog-rest-endpoint.com",
      "token": "MY_AUTH_TOKEN",
     }
  )
);
  1. analytics_storage_location をクリアします。 analytics_write_catalog を割り当てる前に、その値がNULL である必要があります。

SELECT bdr.alter_node_group_option(my-pgd-group, analytics_storage_location, NULL);
  1. カタログをデフォルトの分析の書き込み場所として設定します。

SELECT bdr.replicate_ddl_command($$
  SELECT bdr.alter_node_group_option(my-pgd-group, analytics_write_catalog, my-catalog-name)
);

注釈

PGD 6.5から、 analytics_storage_location または`analytics_write_catalog` 設定は、ターゲットが到達可能な読み取り/書き込みパスであることを検証し、それ以外の場合は構成を拒否します。

次のステップ#

PGDクラスターのストレージターゲットを定義したら、パフォーマンスと容量の要件に基づいて、テーブルがそのストレージとどのように相互作用するかを決定します。

  • 階層テーブルの実装 ローカルヒープストレージから経過期間のしきい値に基づいてターゲットとされる分析ストレージにパーティションを自動的に移行することにより、ゼロタッチデータライフサイクルを確立します。

  • アナリティクスへの複製 ローカルトランザクションヒープテーブルを維持すると同時に、大量の分析処理のためにカラムナコピーをストレージターゲットに同期します。

  • アナリティクスへのオフロード アナリティクスにレプリケートされる既存のテーブルからヒープディスク領域を再利用します。