文章摘要
Snowflake-Labs开发的pg_lake项目将PostgreSQL与Iceberg表格式集成,使Postgres能够访问数据湖中的数据,扩展了其数据处理能力。
文章总结
GitHub项目:pg_lake - 支持Iceberg和数据湖访问的PostgreSQL扩展
项目概述
pg_lake是由Snowflake-Labs开发的开源项目,旨在将PostgreSQL与Apache Iceberg及数据湖文件(如Parquet、CSV、JSON)深度集成。通过该扩展,用户可直接在PostgreSQL中创建、管理Iceberg表,并高效查询存储在S3等对象存储中的原始数据,同时支持事务性操作和跨格式数据联合查询。
核心功能
Iceberg表支持
- 直接通过PostgreSQL创建、修改Iceberg表,兼容其他查询引擎。
- 示例:
CREATE TABLE iceberg_test USING iceberg AS SELECT ...
数据导入/导出
- 通过
COPY命令与S3交互,支持Parquet、CSV、JSON格式,自动推断压缩类型(如.gz)。 - 示例:导出到S3
COPY (SELECT * FROM iceberg_test) TO 's3://path/file.parquet'
- 通过
外部数据查询
- 无需预定义表结构,直接映射S3文件为外部表,支持通配符路径匹配。
- 示例:
CREATE FOREIGN TABLE parquet_table() SERVER pg_lake OPTIONS (path 's3://path/*.parquet')
地理空间与半结构化数据
- 支持GDAL地理格式(如GeoJSON)和内置
map类型处理键值数据。
- 支持GDAL地理格式(如GeoJSON)和内置
高性能执行
- 通过
pgduck_server集成DuckDB引擎,实现并行化查询加速。
- 通过
架构设计
- 模块化扩展:包括
pg_lake_iceberg(Iceberg协议实现)、pg_lake_copy(数据迁移)、pg_lake_table(外部表管理)等组件。 - 进程分离:
pgduck_server作为独立服务运行DuckDB,通过PostgreSQL协议通信,避免内存安全问题。
部署方式
- Docker:快速体验(参考docker/README)。
- 源码编译:手动构建(需配置S3凭证,详见文档)。
背景与许可
- 历史:项目始于2024年Crunchy Data,后随公司被Snowflake收购而开源(2025年11月)。
- 许可证:Apache 2.0,依赖组件(如DuckDB、Avro)保留原始许可。
资源
- 详细文档:docs目录
- 项目状态:169 Stars,活跃维护中(最新提交于2025年11月)。
通过pg_lake,PostgreSQL用户可无缝接入现代数据湖生态,兼具事务保证与高性能分析能力。
评论总结
以下是评论内容的总结,平衡呈现不同观点并保留关键引用:
主要观点
高度赞赏与市场前景
- 多位评论者认为这是Postgres生态的重大进步,填补了市场空白。
- 引用:
- "This is huge!... open source Snowflake" (ozgune)
- "Man, we are living in the golden era of PostgreSQL." (gajus)
技术优势与创新
- 结合DuckDB作为OLAP查询引擎的方案受到关注,认为简化了数据湖架构。
- 引用:
- "put DuckDB over Postgres for the OLAP query engine... very interesting" (dkdcio)
- "a nice use of FDW" (inglor)
与竞品(如DuckLake)的比较
- 部分用户质疑为何不直接使用DuckLake,认为其复杂度更低。
- 引用:
- "Why not just use Ducklake? That reduces complexity" (boshomi)
- "How does it compare with ducklake?" (oulipo2)
实际应用与需求
- 用户期待托管服务(如AWS集成)和混合行列存储功能。
- 引用:
- "I’d love to be able to run a managed instance on AWS" (anentropic)
- "mix row- and column-oriented tables... Hopefully one day" (drchaim)
质疑与改进建议
- 包括权限控制、元数据同步、类型支持等技术细节问题。
- 引用:
- "how access control works to the underlying s3 objects?" (mberning)
- "a lot of the postgres types are missing" (inglor)
商业动机疑惑
- 有人质疑Snowflake开源此举可能蚕食其主业。
- 引用:
- "Doesn’t this cannibalize their main product?" (dharbin)
总结
评论普遍认可该技术的创新性,尤其对Postgres生态的扩展表示兴奋,但也提出与竞品的对比、实际落地场景及技术细节等关键问题。部分用户期待更成熟的托管服务和功能完善。