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 パラメータを要求するなどの安全性の向上が図られています。