Postgres Analytics Accelerator(PGAA)1.9.0

日本語訳|Postgres Analytics Accelerator 1.9.0

※GoogleのAutoML Translationを使用して翻訳しております。

英語原文|Postgres Analytics Accelerator 1.9.0

概要

1. PGAAとは何か?
Postgres Analytics Accelerator (PGAA) は、標準のPostgresを強力な分析エンジンに変換する高性能な拡張機能(エクステンション)です。

Postgresからオブジェクトストレージ(AWS S3、Google Cloud Storage、Azure Blob Storageなど)に保存されたペタバイト規模の大規模データセットに対するクエリを可能にすることで、運用データベース(OLTP)とデータレイク(OLAP)の間のギャップを埋めます。

データをデータベース内に移動させる代わりに、コンピュート(計算)とストレージを分離したモデルを使用し、PostgresからApache Iceberg、Delta Lake、Parquetのようなオープンテーブルフォーマットをシームレスに読み書きできるようにします。

2. PGAAの機能と仕組み
主な機能:

  • オープンテーブルフォーマットのサポート: Apache Iceberg、Delta Lake、Parquetフォーマットへのクエリおよび書き込みをネイティブにサポートします。
  • 外部カタログ連携: 一元的なメタデータ管理のために、Iceberg RESTカタログ(Snowflake Polaris、Tabularなど)やAWS S3 Tablesと連携します。
  • デュアル実行エンジン:
    • Seafowl (デフォルト): 高速なシングルノードCPU処理に最適化された、DataFusionベースの組み込み型ベクター化実行エンジン。
    • Apache Spark Connect: リモートのSparkクラスタへ大規模な分散クエリをオフロードできます。GPUアクセラレーションクエリのためのNVIDIA RAPIDSサポートも含まれます。
  • データライフサイクル管理 (PGDとの連携): EDB Postgres Distributedと統合し、データを自動的に階層化します。アクティブな「ホット」データはローカルのPostgresメモリ内に保持し、履歴などの「コールド」データは安価なオブジェクトストレージにアーカイブします。
  • エクスポート / 変換: CREATE TABLE AS SELECT (CTAS) をサポートし、ローカルのPostgresデータを直接データレイクのフォーマットへエクスポートまたは変換できます。

仕組み:

  • Table Access Method (TAM): PGAAはPostgres内部のクエリプランナにフックし、リモートのオブジェクトストレージのディレクトリをローカルのPostgresテーブルであるかのようにマッピングします。
  • スマートクエリルーター (スキャンタイプ):
    • DirectScan: クエリはベクター化エンジン(Seafowl / Spark)に完全にオフロードされます。エンジン側(ストレージ層)で直接フィルタリング、結合、集計を処理し、最終結果のみをPostgresに返します。
    • CompatScan: ローカルのPostgresテーブルとリモートのデータレイクタブルを結合する場合や、Postgres固有の関数を使用する場合に使用されるハイブリッドモードです。
  • 多層キャッシング: オブジェクトストア、メタデータ、およびテーブル統計情報のキャッシュを利用して、ネットワーク遅延を排除し、不要なデータブロックを即座にスキップします。

3. ユーザーが得られるメリット

  • 高速な分析パフォーマンス: 標準的な行単位のPostgres処理を、列指向のベクター化バッチ処理(Seafowl)や超並列GPU実行(Spark)に置き換えることで、複雑な分析クエリが飛躍的に高速化されます。
  • ゼロETLアーキテクチャ: 既存のPostgresインターフェースから直接、標準SQLを使用してデータレイクにクエリを実行できます。これにより、システム間でデータを移動させる複雑で壊れやすく、高コストなETLパイプラインが不要になります。
  • 大幅なコスト削減: 履歴データや「コールド」データをクエリ可能な状態を保ったまま安価なクラウドオブジェクトストレージに安全にオフロードすることで、高価で高性能なローカルSSDの容量を解放できます。
  • 無限の拡張性 (スケーラビリティ): コンピュートとストレージが分離されているため、ストレージ(S3 / Azure / GCS)を無制限に拡張でき、重い処理をリモートのSparkクラスタにルーティングすることでコンピュート能力を動的に拡張できます。
  • ベンダーロックインの排除: オープンソースフォーマット(Iceberg / Delta / Parquet)を利用するため、データはユーザーのデータエコシステム内の他のあらゆるエンジンからもアクセス可能な状態が保たれます。

4. リリース 1.9.0 の新機能・変更点
1.9.0リリースでは、いくつかの重要な機能拡張とパフォーマンスの向上が導入されています。

  • WarehousePGのサポート: PGAAがWarehousePG(EDBの超並列処理: MPPデータベース)で利用可能になりました。これにより、複数のセグメントホストにまたがるMPPスケールで、オブジェクトストレージに対する分散分析クエリが可能になります。
  • 大幅なパフォーマンス向上: PGAA内の行フェッチング(データ取得)パフォーマンスが最大4倍向上しました。
  • エンジンとインフラのアップグレード: ベースとなるSeafowlエンジンのDataFusionコアがバージョン53にアップグレードされました。
  • 新しいバージョン確認関数: pgaa.seafowl_version() 関数が非推奨となり、代わりに pgaa.engine_version() が導入されました。現在アクティブなエンジン(Seafowl または Spark Connect)のバージョン情報をインテリジェントに判定して返します。
  • 高度なメモリ制御: pgaa.autostart_seafowl_memory_pool_type パラメータが追加され、メモリ割り当て方式を greedy(最高速度を優先)または fair_spill(高同時実行時の安定性を優先)から選択できるようになりました。
  • 操作性の改善 (QoL向上): PGAAテーブルに対して VACUUM または VACUUM FULL を実行しても、クラッシュやエラーが発生しなくなりました。オブジェクトストレージ内のデータはPostgresのバキューム処理を必要としないため、適切に NOTICE メッセージを発行して処理をスキップするようになりました。

CloudNativePG

次の記事

CloudNativePG 1.29.0