pg_lake — Iceberg とデータレイク対応の PostgreSQL 拡張
概要
pg_lake は、PostgreSQL に Iceberg とデータレイク(オブジェクトストア上のファイル)へのネイティブなアクセスを提供する拡張です。Postgres のトランザクションモデルとクエリエンジンを利用して、Iceberg テーブルの作成・更新・クエリを SQL から直接行えます。さらに S3 等に置かれた Parquet や CSV といった生データファイルを直接参照でき、軽量なローカル lakehouse として運用可能です。導入は C 言語で書かれた PostgreSQL 拡張として提供され、ストレージやメタデータ管理を Postgres 側で一元化します。(約300字)
リポジトリの統計情報
- スター数: 170
- フォーク数: 0
- ウォッチャー数: 170
- コミット数: 5
- ファイル数: 33
- メインの言語: C
主な特徴
- PostgreSQL 拡張として Iceberg テーブルの作成・変更・クエリをサポート
- S3 等のオブジェクトストア上の Parquet/CSV 等の生データファイルを直接参照可能
- Postgres のトランザクション保証を活かした一貫したメタデータ管理
- 軽量なローカル lakehouse として Postgres を活用できる設計
技術的なポイント
pg_lake は PostgreSQL の拡張機構を利用して実装されており、C 言語で書かれたコードを通じて Iceberg のメタデータ操作とデータファイルアクセスを橋渡しします。Iceberg のテーブルフォーマット(メタデータファイル、スナップショット、パーティショニング)に対して SQL レイヤーから操作できる点が重要で、これにより Postgres のトランザクション管理と統合された変更履歴管理が可能になります。またオブジェクトストア(例: S3)上のファイルを直接スキャンする機能により、データを外部にロードせずにクエリを実行でき、ETL 前の生データ探索や軽量な分析に向きます。拡張は Postgres のプラガブルなアクセス経路(例: 外部テーブルやカスタムスキャン)を活用している想定で、クエリプランナーや I/O 層との連携でパフォーマンスを担保します。さらに .gitmodules 等の構成から依存モジュールやサブプロジェクトを管理しており、拡張のビルドや設定は PostgreSQL の拡張ビルド手順に従う形になっている可能性が高いです。(約700字)
プロジェクトの構成
主要なファイルとディレクトリ:
- .dir-locals.el: file
- .editorconfig: file
- .github: dir
- .gitignore: file
- .gitmodules: file
…他 28 ファイル
まとめ
Postgres をそのまま軽量な Iceberg 対応 lakehouse にする実用的な拡張です。(約50字)
リポジトリ情報:
- 名前: pg_lake
- 説明: pg_lake: Postgres with Iceberg and data lake access
- スター数: 170
- 言語: C
- URL: https://github.com/Snowflake-Labs/pg_lake
- オーナー: Snowflake-Labs
- アバター: https://avatars.githubusercontent.com/u/58992620?v=4
READMEの抜粋:
pg_lake: Postgres for Iceberg and Data lakes
pg_lake integrates Iceberg and data lake files into Postgres. With the pg_lake extensions, you can use Postgres as a stand-alone lakehouse system that supports transactions and fast queries on Iceberg tables, and can directly work with raw data files in object stores like S3.
At a high level, pg_lake lets you:
- Create and modify Iceberg tables directly from PostgreSQL, with full transactional guarantees a…