Postgres Analytics Accelerator(PGAA)1.6.0
日本語訳|Postgres Analytics Accelerator 1.6.0
※GoogleのAutoML Translationを使用して翻訳しております。
![]() |
![]() |
英語原文|Postgres Analytics Accelerator 1.6.0
![]() |
![]() |
概要
1. PGAA 1.6.0 とは?
Postgres Analytics Accelerator (PGAA) は、オペレーショナルデータベース(運用DB)とデータレイクの間のギャップを埋める、PostgreSQL向けの高性能な拡張機能です。これにより、Postgresエコシステムから離れることなく、Delta Lake、Apache Iceberg、Parquetなどのオープンテーブルフォーマットで保存された大規模データをPostgresから直接クエリできるようになります。重い分析クエリをベクター化実行エンジン(組み込みのSeafowlエンジン、または外部のApache Sparkクラスター)にオフロード(処理を委譲)することで、PGAAはPostgresをトランザクション(OLTP)と分析(OLAP)の両方のワークロードを処理できる統合プラットフォームへと進化させます。
2. PGAAのユースケース
PGAAは、データレイクのアーキテクチャをPostgres経由で直接活用したいと考えている組織向けに設計されています。主なユースケースは以下の通りです:
- データレイクへの直接クエリ: Postgresにデータを移動させることなく、ペタバイト規模のオブジェクトストレージに対して直接、複雑なOLAPクエリ(大規模な結合や集計を伴うもの)を実行します。
- データのエクスポート(アーカイブ): CREATE TABLE AS SELECT (CTAS) 構文を使用して、標準的なローカルのPostgresテーブルからデータレイク(IcebergまたはDelta Lake形式)へ履歴データをエクスポートし、長期保存します。
- データ変換: あるオブジェクトストレージの場所からデータを読み取り、結合や集計を実行して、最適化された結果を別のクラウドディレクトリに書き戻します。
- フェデレーテッド結合 (統合結合): ローカルのリレーショナルPostgresテーブルとリモートのオブジェクトストレージテーブルを結合(例:最新の運用データとレイクハウスの履歴データを結合)し、その結果を返したり、クラウドに書き込んだりします。
3. PGAA 1.6.0 のメリット
- 圧倒的なパフォーマンス: 高速なベクター化クエリ実行をPostgresにもたらし、分析ワークロードを大幅に高速化します。
- シームレスな開発者体験: ユーザーは標準的なPostgresのSQLを使用して、ペタバイト級のデータをクエリできます。データレイクにアクセスするために新しい言語を学んだり、別のツールを使用したりする必要はありません。
- コンピュートとストレージの分離: 柔軟なスケーリングを可能にします。トランザクションデータベースのコンピュートリソース(計算資源)とは独立して、オブジェクトストレージを拡張できます。
- オープンフォーマットの互換性: Apache Iceberg、Delta Lake、Parquetなどのオープンソースのストレージフレームワークをネイティブにサポートすることで、ベンダーロックインを回避します。
- ネットワークおよびI/Oオーバーヘッドの削減: 高度なプッシュダウン機能により、数十億行ものデータをネットワーク経由で引き出すのではなく、フィルタリング済みの関連する結果セットのみが確実にPostgresに返されます。
4. これらのメリットを実現するPGAAの仕組み
PGAAは、分離されたアーキテクチャと高度な実行戦略により、このパフォーマンスと柔軟性を実現しています:
- PGFSストレージの抽象化: Postgres File System (PGFS) レイヤーを使用して、クラウドストレージ (AWS S3、Google Cloud Storage、Azure Blob) に安全に接続し、認証とネットワークの耐障害性を処理します。
- ベクター化実行エンジン: デフォルトでは、Postgresの従来の行単位(ローバイロー)のアプローチではなく、(最新のCPU SIMD命令を活用して)データを列指向のバッチで処理するSeafowl(DataFusionベースのエンジン)を使用します。
- Apache Spark統合: ペタバイト規模の巨大なワークロードに対しては、PGAAはSpark Connectを通じて、クエリ実行を意図的に分散型Apache Sparkクラスターに引き継ぐことができます。
- スマートなクエリ実行モード:
- DirectScan: クエリは完全にSeafowl/Sparkエンジンにオフロードされます。エンジンがファイルを読み取り、すべてのロジック(フィルター、集計、結合)を処理し、最終結果のみをPostgresに返します。
- CompatScan: リモートデータとローカルのPostgresテーブルを結合する場合や、サポートされていないPostgres関数を使用する場合に使用されるハイブリッドモードです。フィルターやプロジェクション(列の選択)をリモートエンジンにプッシュダウンし、最適化されたデータをPostgresにストリーミングして最終処理を行います。
- マルチティア(多層)キャッシュ: ネットワークの遅延に対処するため、PGAAは実際のデータブロック(オブジェクトストアキャッシュ)、テーブル構造(メタデータキャッシュ)、および物理テーブルサイズ(統計キャッシュ)をローカルのSSDにキャッシュします。
5. リリース 1.6.0 の新機能
リリース 1.6.0 では、いくつかの主要な機能強化、最適化、およびバグ修正が導入されています:
- Azureのネイティブサポート: Azure Blob Storage および Azure Data Lake Storage Gen2 (ADLS) 内のデータをクエリするための公式サポートが追加されました。
- Parquetサポートの拡張: Parquetストレージ形式が、file:// および s3:// プロトコルの両方を使用するPGFSロケーションでフルサポートされるようになりました。
- 高度なクエリプッシュダウン: 結合およびGROUP BY集計をリモートのベクター化エンジンに直接オフロードする機能が新たにサポートされ、CompatScan 実行時のパフォーマンスが大幅に向上しました。
- レプリケーションとデータ型の強化: Postgresの UUID、BYTEA、および配列型(BPCHAR や UUID の配列など)を、ネイティブのレイクハウス型に直接レプリケーション(複製)するサポートが追加されました。また、BIGINTより小さい整数型は、安全に INTEGER に強制変換されるようになりました。
- エンジンのアップグレード: 安定性とパフォーマンス向上のため、基盤となるDataFusionエンジンがバージョン51に、rustc が1.92.0にアップデートされました。
- カタログとメンテナンスの改善: Iceberg REST接続がOAuth2認証をサポートするようになりました。また、新しいヘルパー関数(例: Sparkでのデータ最適化用の pgaa.execute_compaction、テーブル監視用の pgaa.list_analytics_tables())が追加されたほか、カタログを削除する際に誤ったデータ損失を防ぐため、明示的に cascade パラメータを要求するなどの安全性の向上が図られています。





