Postgres Analytics Accelerator(PGAA)1.10.0
日本語訳|Postgres Analytics Accelerator 1.10.0
※GoogleのAutoML Translationを使用して翻訳しております。
![]() |
![]() |
英語原文|Postgres Analytics Accelerator 1.10.0
![]() |
![]() |
概要
1. PGAAとは何か
Postgres Analytics Accelerator (PGAA) は、PostgreSQLディストリビューション(標準のPostgreSQL、EDB Postgres Extended Server、およびEDB Postgres Advanced Serverを含む)向けの高性能な拡張機能です。
オブジェクトストレージ上に Delta Lake、Apache Iceberg、Parquet などのオープンなテーブルフォーマットで保存されている大規模データに対して、Postgresから直接クエリを実行できるようにすることで、運用データベース(OLTP)とデータレイク(OLAP)のギャップを埋める役割を果たします。
2. PGAAのメリット
PGAAは、以下のような運用的およびアーキテクチャ的なメリットを提供します。
- コンピュートとストレージの分離: ローカルデータベースのストレージ容量に縛られることなく、分析用のコンピュートリソースを個別にスケールできます。
- コスト効率の高いデータ階層化: 頻繁にアクセスされる運用データ(ホットデータ)は高速なローカルSSDに保持し、頻度の低い歴史的データ(コールドデータ)は安価なクラウドオブジェクトストレージに列指向フォーマットで配置して階層管理できます。
- ベクトル化によるクエリ高速化: 従来の行単位の処理ではなく、最適化された列指向のバッチ(ベクトル)処理によって、大規模な分析クエリを大幅に高速化します。
- シームレスな統合とETLの削減: 面倒なETL処理やデータベースへのデータインポートを行うことなく、使い慣れたPostgresの接続プロトコルと標準的なSQLを使って直接データレイクをクエリできます。
- フェデレーション(連携)クエリ: 1つのクエリ内で、ローカルのトランザクションテーブルとリモートのデータレイクテーブルを結合して処理できます。
3. メリットを実現するPGAAの仕組み
PGAAは、以下のような技術的なアプローチを組み合わせることで最適化されたデータアクセスとクエリ実行を実現しています。
- TAM(テーブルアクセスメソッド)フック: PGAAはPostgresのクエリプランナーにフックしてカスタムストレージエンジンとして動作します。これにより、プランナーはリモートのオブジェクトストレージをローカルテーブルであるかのようにシームレスに扱えます。
- PGFSストレージ抽象化レイヤー: Postgres File System (PGFS)が、AWS S3、Google Cloud Storage (GCS)、Azure Blob Storage、およびローカルファイルシステムとの接続、認証(IAMやHMAC)、ファイル転送、メタデータやスキーマのキャッシュを包括的に管理します。
- 2つのベクトル化クエリ実行エンジン:
- Seafowl(デフォルト): Apache DataFusionベースのステートレスなベクトル化クエリエンジンです。CPUのSIMD(Single Instruction, Multiple Data)命令を活用してデータを列単位のバッチとして処理し、Postgresとの間は高性能なApache Arrow Flight RPCフレームワークを介して転送します。
- Spark Connect: マルチテラバイトやペタバイト規模の超大容量データに対しては、リモートのApache Sparkクラスターにクエリ処理をオフロードします。NVIDIA RAPIDSプラグインと組み合わせたGPUアクセラレーションもサポートしています。
- 2つのクエリ実行モード:
- DirectScan: 分析対象のテーブルのみを参照するクエリの場合、フィルタリング、結合、集計などのすべての処理をベクトル化エンジン(SeafowlまたはSpark)側で完全に実行し、最終的な結果セットのみをPostgresに返信します。
- CompatScan: ベクトル化エンジンが未対応の機能が含まれるクエリや、ローカルのPostgresテーブルとの結合を行う場合のハイブリッド実行モードです。Seafowl側で一次的なフィルタリングを施したデータをPostgresにストリーム送信し、残りの結合や複雑な処理をPostgres側で完了させます。
- コンピュートプッシュダウン: 結合処理(pgaa.enable_join_pushdown)や集計処理(pgaa.enable_groupby_pushdown)をリモートの実行エンジン側へプッシュダウンし、ネットワーク転送量を最小限に抑えます。
- マルチティアキャッシュ: ネットワーク遅延を低減するため、リモートのParquetファイル、メタデータ(マニフェストやスキーマ)、およびテーブルのサイズ統計情報をローカルにキャッシュします。
- PGD(Postgres Distributed)連携による自動階層化: PGD AutoPartition等と連携し、一定の経過時間を過ぎた古いデータを自動的にオブジェクトストレージへコピーしてPGAAテーブルに変換し、ローカルのSSD領域を解放するポリシーを自動実行できます。
4. リリース1.10.0の新機能・変更点
2026年7月にリリースされたバージョン1.10.0における、主な新機能や修正点は以下の通りです。
- SeafowlにおけるEPAS関数サポートの拡張: EDB Postgres Advanced Server (EPAS) 互換の各種関数(Oracle互換シンタックス)がSeafowlエンジンで認識されるようになり、DirectScanによる高速化の適用対象が広がりました。
- 日付演算: last_day, next_day, months_between, sysdate, systimestamp
- 文字列検索: INSTR, INSTRB, regexp_substr
- 数値・条件ロジック: to_number, width_bucket, decode
- MinIO AIStor Iceberg REST カタログのサポート: Iceberg RESTカタログのバックエンドとして、新たにMinIO AIStorがサポートされました。
- Struct および Map 型のサポート: Iceberg、Delta Lake、Parquetから複合的な構造体(Struct)やマップ(Map)型データを読み込み、Postgres側でJSONデータとして扱えるようになりました。
- DataFusionのアップグレード: 内部で動作するApache DataFusionエンジンがバージョン54にアップグレードされました。
- オブジェクトストレージキャッシュの強化: offset型およびsuffix型のGETリクエストに対するキャッシュ処理がサポートされました。
- 主な不具合修正:
- CTAS(Create Table As Select)実行時、出力先パスやアクセス権がない場合に、下流の別のエラーではなく、分かりやすい明確なエラーを返すように改善されました。
- CREATE TABLEの定義で一部の列のみを指定して作成されたPGAAテーブルに対し、SELECT *を実行した際の動作不良が修正されました。
- gprestoreの実行時に、すでにメタデータが存在するターゲットデータベースへのリストアをエラーにせず、スキップして安全にリストアを継続できるようになりました。
- マルチプライマリーキーレプリケーション時、1つ目の列値が NULL である場合の解析エラーや、TIMESTAMPTZ 列のレプリケーション時の精度損失が解消されました。





