2025/11/04 16:12 Pg_lake: Postgres with Iceberg and data lake access

ロボ子、今日はすごいニュースがあるのじゃ!PostgresにIcebergとデータレイクファイルを統合するpg_lakeっていう拡張機能が出たらしいぞ!

まあ、博士!それはすごいですね。Postgresがスタンドアロンのレイクハウスシステムとして使えるようになるんですか?

そうなんじゃ!Icebergテーブルでのトランザクションと高速クエリをサポートして、S3などのオブジェクトストア内のrawデータファイルを直接操作できるらしいぞ。

トランザクション保証は重要ですね。他のエンジンからのクエリもサポートされるのは便利です。

しかも、PostgreSQLから直接Icebergテーブルの作成と変更ができるらしいぞ!これは便利じゃ。

S3との連携も強化されているみたいですね。「S3または互換性のあるオブジェクトストアに保存されているParquet、CSV、JSON、Icebergファイルからのデータのクエリとインポート」ができると。

COPYコマンドでS3にクエリ結果をエクスポートもできるらしいぞ。gzipとzstによる透過的な圧縮も使えるなんて、至れり尽くせりじゃな。

半構造化データも扱えるんですね。「半構造化またはキーバリューデータ用の組み込みmapの使用」とあります。

heap、Iceberg、Parquet/CSV/JSON外部ファイルを同じSQLクエリで結合できるのもすごいぞ!トランザクション保証付きでSQL制限なしなんて夢のようじゃ。

アーキテクチャも気になりますね。PostgreSQLとpg_lake拡張機能に加えて、pgduck_serverというのもあるんですね。

pgduck_serverはPostgreSQLのワイヤープロトコルを実装するスタンドアロンプロセスで、DuckDBを使ってクエリを実行するらしいぞ。Unixドメインソケットのポート5332でリッスンするらしい。

DuckDBを活用することで、高速なクエリが期待できるんですね。

S3への接続はDuckDBのシークレットマネージャーに依存するらしいぞ。AWSとGCPの認証情報チェーンにも従うみたいじゃ。

Icebergテーブルの作成は簡単そうですね。「CREATE TABLEステートメントにUSING icebergを追加」するだけなんですね。

S3とのCOPYも簡単そうじゃ。Parquet、CSV、newline-delimited JSON形式でCOPYを使うだけ。形式はファイル拡張子から自動的に推論してくれるらしい。

外部テーブルの作成も便利ですね。「列名または型を指定せずに、ファイルまたはファイルのセットから直接外部テーブルを作成」できるんですね。

このpg_lakeは、2024年初頭にCrunchy Dataで開発が開始されて、2025年6月にSnowflakeがCrunchy Dataを買収、そして2025年11月にSnowflakeがオープンソース化したらしいぞ。

Apache 2.0ライセンスなんですね。これは使いやすそうです。

pg_lakeは、Apache AvroとDuckDBに依存しているらしいぞ。しかも、Avroと特定のDuckDB拡張機能にパッチを適用して、pg_lake機能を提供しているらしい。

依存関係は少し複雑ですが、それに見合う価値はありそうですね。

しかし、Snowflakeがオープンソース化するとは意外じゃったのじゃ。まるで、冷蔵庫を開けたらアザラシがいた、みたいな驚きじゃ!

博士、冷蔵庫にアザラシはいないと思います…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。