Pg_lake: Postgres with Iceberg and data lake access
4 months ago
- #Data Lake
- #PostgreSQL
- #Iceberg
- pg_lake将Iceberg和数据湖文件集成到Postgres中,使其可作为独立的湖仓一体系统运行
- 支持Iceberg表的事务处理和快速查询,并可直接操作S3等对象存储中的原始数据文件
- 允许通过PostgreSQL创建和修改具有事务保证的Iceberg表
- 支持查询和导入存储在S3或兼容对象存储中的Parquet、CSV、JSON及Iceberg文件数据
- 通过COPY命令将查询结果以Parquet/CSV/JSON格式导回S3
- 支持读取GeoJSON/Shapefile等地理空间格式,并兼容.gz/.zst压缩格式
- 内置map类型用于处理半结构化或键值对数据
- 在同一个SQL查询中组合堆表/Iceberg/外部文件,提供完整事务保证
- 能从Iceberg/Parquet/JSON/CSV等外部数据源自动推断表结构和字段类型
- 利用DuckDB查询引擎在Postgres内部实现高速执行
- 两种部署方式:Docker快速测试/源码编译手动部署
- 包含PostgreSQL扩展、pgduck_server应用及S3兼容存储配置
- pgduck_server作为独立进程使用DuckDB执行查询,通过5332端口的psql访问
- 支持为pgduck_server设置内存限制、初始化文件路径和缓存目录
- 依赖DuckDB的密钥管理器处理凭证,支持AWS/GCP云平台
- 通过'USING iceberg'语法创建Iceberg表并直接查询
- 使用COPY命令实现Parquet/CSV/JSON格式的数据导入导出
- 采用模块化设计,包含pg_lake_iceberg/pg_lake_table/pg_lake_copy/pg_lake_engine等组件
- 由CrunchyData开发后被Snowflake收购,2025年作为pg_lake开源
- 依赖Apache Avro和DuckDB第三方项目,构建时自动应用补丁