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拡張機能をインストールします。
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は、standardPGEまたはCommunity Postgresの場合またはenterpriseEPASの場合。 -<postgresql-distribution>は、Postgresディストリビューションedb-postgresextended、edb-as、またはpostgres、およびバージョンを指定します。
postgresql.confファイルを更新します。pgaaをshared_preload_librariesに追加すると、PostgresはバックグラウンドワーカーとしてSeafowlクエリエンジンのライフサイクルを管理できます。
shared_preload_libraries = pgaa
pgaa.autostart_seafowl = on
Postgresサービスを再起動して、新しいライブラリをロードします。
オブジェクトストレージをポイントする#
コールドデータの宛先を定義します。分散PGDクラスター内で作業しているため、これらの構成呼び出しをbdr.replicate_ddl_command
でラップして、設定がグループ内のすべてのノードに伝播されるようにする必要があります。
Tip
ノードグループを表示するには、 SELECT node_group_id FROM bdr.node_group; を使用します。
警告
ローカルファイルシステムの保存場所は、マルチノードPGD展開ではサポートされていません。書き込みリーダーフェイルオーバーが発生すると、新しいノードは以前のノードのファイルシステムにアクセスできず、レプリケーションがゼロからリスタートします。代わりにS3、GCS、またはAzureを使用してください。
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": "..."}
)
$$);
analytics_write_catalogをクリアします。analytics_storage_locationを割り当てる前に、その値がNULLである必要があります。
SELECT bdr.alter_node_group_option(my-pgd-group, analytics_write_catalog, NULL);
ノードグループの分析ストレージの場所を設定します。
SELECT bdr.alter_node_group_option(my-pgd-group, analytics_storage_location, my-storage-location);
注釈
PGD 6.5から、 analytics_storage_location または`analytics_write_catalog` 設定は、ターゲットが到達可能な読み取り/書き込みパスであることを検証し、それ以外の場合は構成を拒否します。
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",
}
)
);
analytics_storage_locationをクリアします。analytics_write_catalogを割り当てる前に、その値がNULLである必要があります。
SELECT bdr.alter_node_group_option(my-pgd-group, analytics_storage_location, NULL);
カタログをデフォルトの分析の書き込み場所として設定します。
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クラスターのストレージターゲットを定義したら、パフォーマンスと容量の要件に基づいて、テーブルがそのストレージとどのように相互作用するかを決定します。
階層テーブルの実装 ローカルヒープストレージから経過期間のしきい値に基づいてターゲットとされる分析ストレージにパーティションを自動的に移行することにより、ゼロタッチデータライフサイクルを確立します。
アナリティクスへの複製 ローカルトランザクションヒープテーブルを維持すると同時に、大量の分析処理のためにカラムナコピーをストレージターゲットに同期します。
アナリティクスへのオフロード アナリティクスにレプリケートされる既存のテーブルからヒープディスク領域を再利用します。