Hasty Briefsbeta

双语

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第三方项目,构建时自动应用补丁