- pg_lake adalah ekstensi berbasis Postgres yang mengintegrasikan tabel Iceberg dan file data lake secara langsung, mendukung transaksi dan kueri berkecepatan tinggi
- Dapat langsung menanyakan, mengimpor, dan mengekspor file Parquet, CSV, JSON, dan Iceberg di object storage seperti S3
- Memanfaatkan mesin kueri DuckDB secara internal untuk memastikan performa eksekusi cepat di dalam lingkungan Postgres
- Menyediakan fitur lakehouse data melalui satu antarmuka SQL, seperti pembuatan tabel Iceberg, inferensi skema otomatis untuk file eksternal, dan I/O S3 melalui perintah COPY
- Setelah Snowflake mengakuisisi Crunchy Data pada 2025, proyek ini dirilis sebagai open source, menjadi fondasi untuk memperluas integrasi data lake di ekosistem Postgres
Ikhtisar pg_lake
- pg_lake adalah ekstensi yang mengintegrasikan file Iceberg dan data lake ke Postgres, sehingga Postgres dapat digunakan sebagai sistem lakehouse mandiri
- Menjamin transaksi untuk tabel Iceberg dan mendukung kueri cepat
- Dapat mengakses langsung file data mentah di object storage seperti S3
- Fitur utama
- Membuat dan memodifikasi tabel Iceberg serta dapat dikueri dari mesin lain
- Menanyakan dan mengimpor file data berformat Parquet, CSV, JSON, dan Iceberg
- Mengekspor hasil kueri ke object storage dalam format Parquet, CSV, dan JSON melalui perintah COPY
- Membaca format data geospasial seperti GeoJSON dan Shapefile yang didukung GDAL
- Menyediakan tipe map bawaan untuk data semi-terstruktur
- Dapat menggabungkan heap, Iceberg, dan file eksternal dalam satu kueri SQL
- Inferensi otomatis kolom dan tipe dari sumber data eksternal
- Eksekusi cepat melalui mesin DuckDB
Instalasi dan konfigurasi
Contoh penggunaan
- Membuat tabel Iceberg
CREATE TABLE iceberg_test USING iceberg AS
SELECT i as key, 'val_'|| i as val FROM generate_series(0,99)i;
- Setelah dibuat, hasil
SELECT count(*) FROM iceberg_test; adalah 100
- Lokasi metadata Iceberg dapat diperiksa
- COPY I/O ke dan dari S3
COPY (SELECT * FROM iceberg_test) TO 's3://.../iceberg_test.parquet';
COPY iceberg_test FROM 's3://.../iceberg_test.parquet';
- Mendukung format Parquet, CSV, dan JSON
- Membuat file S3 sebagai tabel eksternal
CREATE FOREIGN TABLE parquet_table()
SERVER pg_lake
OPTIONS (path 's3://.../*.parquet');
- Kolom diinferensikan secara otomatis dan dapat dikueri (
SELECT count(*) FROM parquet_table; → 100)
Arsitektur
- Komponen
- PostgreSQL + ekstensi pg_lake
- pgduck_server (menjalankan DuckDB dan mengimplementasikan protokol Postgres)
- Cara kerja
- Pengguna terhubung ke Postgres dan menjalankan SQL
- Sebagian kueri dijalankan melalui DuckDB dengan pendekatan paralel dan berorientasi kolom
- DuckDB tidak di-embed ke dalam proses Postgres, sehingga menghindari masalah keamanan thread dan memori
- Mesin DuckDB dapat diakses langsung melalui klien Postgres standar
Daftar detail komponen
- pg_lake_iceberg: implementasi spesifikasi Iceberg
- pg_lake_table: implementasi FDW untuk file di object storage
- pg_lake_copy: mendukung COPY I/O ke dan dari data lake
- pg_lake_engine: modul umum
- pg_extension_base: komponen dasar untuk ekstensi lain
- pg_extension_updater: fitur pembaruan otomatis ekstensi
- pg_lake_benchmark: menjalankan benchmark tabel lake
- pg_map: generator tipe map yang digeneralisasi
- pgduck_server: server yang memuat DuckDB dan mengeksposnya melalui protokol Postgres
- duckdb_pglake: menambahkan fungsi kompatibel Postgres ke DuckDB
Riwayat pengembangan dan rilis
- Pengembangan dimulai pada awal 2024 di Crunchy Data untuk menghadirkan Iceberg ke Postgres
- Awalnya fokus pada integrasi DuckDB dan penyediaan fitur bagi pelanggan Crunchy Bridge
- Setelah itu diimplementasikan dukungan protokol Iceberg v2 dan transaksi
- Diluncurkan kembali pada November 2024 sebagai Crunchy Data Warehouse
- Pada Juni 2025, Snowflake mengakuisisi Crunchy Data, lalu pada November 2025 pg_lake dirilis sebagai open source
- Versi awalnya adalah 3.0 (termasuk dua generasi sebelumnya)
- Pengguna Crunchy Data Warehouse yang ada mendapatkan jalur upgrade otomatis
Lisensi dan dependensi
- Lisensi Apache 2.0
- Bergantung pada proyek Apache Avro dan DuckDB
- Patch diterapkan ke ekstensi Avro dan DuckDB saat build
Belum ada komentar.