pg_lake_engine

用于数据湖查询的查询引擎

概览

扩展包名版本分类许可证语言
pg_lake3.4OLAPApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
2560pg_lakelake
2561pg_extension_baseextension_base
2562pg_extension_updaterextension_updater
2563pg_mapmap_type
2564pg_lake_engine__lake__internal__nsp__
2565pg_lake_iceberglake_iceberg
2566pg_lake_table__pg_lake_table_writes
2567pg_lake_copypg_catalog
相关扩展pg_extension_base pg_map
下游依赖pg_lake_copy pg_lake_iceberg pg_lake_table

Query-engine component. pg_extension_base auto-loads its module; delegated DuckDB execution additionally requires the separately running PG-major pgduck_server. Extension SQL/control version is 3.4; source and DEB/RPM package version is 3.4.0.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY3.41817161514pg_lakepg_extension_base, pg_map
RPMPIGSTY3.4.01817161514pg_lake_$v-
DEBPIGSTY3.4.01817161514postgresql-$v-pg-lake-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/AN/AN/AN/A
el8.aarch64N/AN/AN/AN/AN/A
el9.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
el9.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
el10.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
el10.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d12.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d12.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d13.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d13.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u22.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u22.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u24.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u24.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u26.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u26.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A

构建

您可以使用 pig build 命令构建 pg_lake 扩展的 RPM / DEB 包:

pig build pkg pg_lake         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_lake 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_lake;          # 当前活跃 PG 版本安装
pig ext install -y pg_lake -v 18  # PG 18
pig ext install -y pg_lake -v 17  # PG 17
pig ext install -y pg_lake -v 16  # PG 16
dnf install -y pg_lake_18       # PG 18
dnf install -y pg_lake_17       # PG 17
dnf install -y pg_lake_16       # PG 16
apt install -y postgresql-18-pg-lake   # PG 18
apt install -y postgresql-17-pg-lake   # PG 17
apt install -y postgresql-16-pg-lake   # PG 16

预加载配置

shared_preload_libraries = 'pg_extension_base';

创建扩展

CREATE EXTENSION pg_lake_engine CASCADE;  -- 依赖: pg_extension_base, pg_map

用法

来源:

pg_lake_engine是pg_lake表、复制和Iceberg扩展共享的执行层。它重写符合条件的PostgreSQL工作以供pgduck_server使用,映射PostgreSQL和DuckDB值,并跟踪在中止或表变更后必须删除的远程文件。它是内部依赖项而非独立的分析接口。

部署边界

通过顶级扩展安装它,使其依赖图和预加载指令保持一致:

shared_preload_libraries = 'pg_extension_base'
CREATE EXTENSION pg_lake CASCADE;

pg_lake_engine需要pg_extension_basepg_map。查询执行还需要一个运行中的本地pgduck_server;仅创建此扩展不会提供可用的湖表。

用户可见对象

  • 角色lake_readlake_writelake_read_write:被其他组件消费的共享权限组。
  • to_postgres(any):返回其输入并强制该表达式在PostgreSQL中而不是推送到湖引擎中进行评估。
  • to_date(double precision):将常见的Parquet中的天数自Unix纪元值转换为PostgreSQL date
  • lake_engine.deletion_queue:跟踪已提交的孤儿文件清理;可由lake_write读取。
  • lake_engine.in_progress_files:跟踪未提交事务产生的文件。
  • lake_engine.flush_deletion_queue(regclass)flush_in_progress_queue():用于维护路径的特权清理函数。
SELECT to_postgres(application_only_function(payload))
FROM external_events;

仅在表达式无法或不应下推时使用to_postgres();将数据拉回PostgreSQL可能会显著增加传输和执行成本。

内部状态与注意事项

  • __lake__internal__nsp__函数是规划器/解析器占位符,不是受支持的直接SQL API。
  • 不要手动更新或删除队列行。清理函数需要扩展的对象存储凭证和特权角色,并且仅应在操作工具文档中指定的情况下调用。
  • 版本3.4resolve_metadata添加到删除队列,以便在VACUUM期间可以将Iceberg元数据展开为精确引用的文件,从而将对象存储遍历移出DROP路径。
  • 角色是集群范围的对象,在一个数据库中可能会超出扩展实例的存在;在移除pg_lake时需单独审查成员资格。