Offloading to analytics#

ハイブリッド分析およびトランザクション処理HTAPテーブルは、 PostgresアナリティクスアクセラレーターPGAAを使用して、 Postgres DistributedPGDクラスターとオブジェクトストレージの分析コピーを継続的に同期し、両方の冗長ストレージを犠牲にして、トランザクションパフォーマンスに影響を与えることなく、大量の分析を有効にしますローカルヒープとデータレイク。

HTAPテーブルの分析へのオフロードは、ローカルヒープコピーを削除し、ディスク領域を再利用するために使用される手動の外科的操作です。テーブルをオフロードすると、システムは次のことを行います。

  • ローカルヒープテーブルを切り捨て、PGDノードのディスク領域をすぐに解放します。

  • データレイクへのリアルタイムレプリケーションを停止します。

  • テーブルアクセス方法をPGAAに変更し、Postgresテーブル定義をオブジェクトストレージ内の既存のデータを直接ポイントします。

その結果、Postgresを介して完全に照会可能なままですが、ローカルストレージを消費しないコールドテーブルが生成されます。将来的に再びトランザクション書き込みが必要な場合は、テーブルを復元し、データをレイクからローカルヒープにストリーミングして戻すことができます。

プロセスの概要#

テーブルをデータレイクに外科的にオフロードするには、次の手順を実行します。

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

  2. テーブルのオフロード 。

  3. トランザクションアクセスが再度必要な場合は、 アナリティクスからの復元 ヒープに戻します。

テーブルのオフロード#

pgaa.convert_to_analytics() ファンクションを使用して、同期されたHTAPテーブルをコールドの分析テーブルに変換し、ローカルディスクからデータを削除します。

CALL pgaa.convert_to_analytics(my-table::regclass);

ファンクションはローカルデータを削除し、テーブルのアクセス方法をPGAAに再定義して、外部のIcebergまたはDeltaファイルのみを指すようにします。

または、ALTER TABLE コマンドでアクセス方法を切り替えます。 pgaa.auto_truncate オプションを使用して、ローカルディスク領域がすぐに解放されるようにします。

保存場所の場合

ALTER TABLE public.my_table
  SET ACCESS METHOD pgaa,
  SET (
    pgaa.auto_truncate = true,
    pgaa.format = iceberg,
    pgaa.storage_location = my-storage-location,
    pgaa.path = public.my_table
  );

カタログ管理テーブルの場合

ALTER TABLE public.my_catalog_managed_table
  SET ACCESS METHOD pgaa,
  SET (
      pgaa.auto_truncate = true,
      pgaa.format = iceberg,
      pgaa.managed_by = my_iceberg_catalog,
      pgaa.catalog_namespace = public,
      pgaa.catalog_table = my_remote_table_name
  );

アナリティクスからの復元#

トランザクション書き込みを再開するか、データをローカルの高性能トランザクションストレージに戻す必要がある場合は、 pgaa.restore_from_analytics() ファンクションを使用します。

CALL pgaa.restore_from_analytics(public.transactional_table);

ファンクションは、PGAAテーブルの構成を確認し、オブジェクトストレージ内の外部Iceberg/Deltaパスを特定し、データをテーブルのローカルストレージ構造に書き換えます。データがローカルに存在すると、ファンクションはテーブルのアクセス方法をローカルトランザクションエンドポイントに再度設定します。

ALTER TABLE コマンドを使用して、テーブルをデータレイクのコールド状態からローカルトランザクションヒープテーブルに復元することもできます。この手動方法は、ローカルストレージへの移行をきめ細かく制御します。

ALTER TABLE public.my_table
SET ACCESS METHOD heap;

警告

テーブルをヒープアクセス方法に復元しても、オブジェクトストレージからファイルは削除されません。オブジェクトストレージプロバイダーを介してデータを手動で削除するか、PyIcebergのようなツールを使用してカタログからテーブルを削除します。