ITPub博客

首页 > 数据库 > 国内数据库 > DuckDB-Paimon v0.0.3:谓词下推能力全面升级

DuckDB-Paimon v0.0.3:谓词下推能力全面升级

原创 国内数据库 作者:数据Cool 时间:2026-04-24 16:10:13 0 删除 编辑

DuckDB-paimon 是由 PolarDB 团队开发的一款 DuckDB 扩展插件,允许通过 SQL 直接查询 Apache Paimon 表,无需任何 ETL 搬运,无需 Flink/Spark 集群,打开 DuckDB Shell 即可对 Paimon 表执行 SQL 分析。

近期发布 v0.0.3-variegata 版本带来了一项系统性的改进:谓词下推(Predicate Pushdown)能力的全面覆盖。

谓词下推意味着什么

"谓词"这个词听起来有些学术,其实就是 SQL 中 WHERE 后面的那些过滤条件,比如  WHERE age > 18 或  WHERE region = 'cn-hangzhou'。


当 DuckDB 通过 duckdb-paimon 查询一张 Paimon 表时,有两种处理方式:


方式一(没有谓词下推):DuckDB 向 Paimon 发起请求,Paimon 把表里所有的数据都从数据湖存储层读出来,通过网络传给 DuckDB,再由 DuckDB 的执行器在内存里逐行检查哪些符合 WHERE 条件。如果这张表有 1 亿行,哪怕最终只需要 1000 行,也得先把 1 亿行全部搬过来。


方式二(有谓词下推):DuckDB 在发起请求的同时,把 WHERE 条件也一并告知 Paimon。Paimon 在自己的存储层读取文件

时,就能利用列式存储的文件级统计信息(比如每个文件中某列的最小值/最大值),直接跳过那些肯定不包含目标数据的文件,甚至在行组(row group)级别提前过滤,只把可能命中的数据传出来。


Paimon 的数据通常存放在对象存储(如阿里云 OSS、AWS S3)上,每次 I/O 都有网络开销。谓词下推减少的不只是计算量,更是从 Paimon 数据湖存储层实际读出的数据量本身。对于存储在对象存储上的大表,这个差别非常明显——扫描 1 TB 和扫描 100 GB,不只是速度上的区别,也是存储读取成本上的区别。


v0.0.2 已经具备了基本的扫描能力,但谓词下推覆盖还不完整。v0.0.3 把这部分补全,覆盖了日常 SQL 里最常见的那几类过滤条件。

谓词下推意味着什么新增支持的谓词类型

比较运算符

=、 !=、 <、 >、 <=、 >= 这几个基础运算符现在都能下推。这是最高频的过滤场景,比如:

SELECT * FROM paimon_table WHERE age > 18;
SELECT * FROM paimon_table WHERE status != 'deleted';

NULL 判断

SELECT * FROM paimon_table WHERE email IS NULL;
SELECT * FROM paimon_table WHERE phone IS NOT NULL;

BETWEEN

范围查询是时序数据和日志表里最常见的过滤方式:

SELECT * FROM paimon_table WHERE event_time BETWEEN '2026-01-01' AND '2026-04-01';

NOT BETWEEN 同样支持。

IN / NOT IN

SELECT * FROM paimon_table WHERE region IN ('cn-hangzhou', 'cn-shanghai');
SELECT * FROM paimon_table WHERE category NOT IN ('test', 'demo');

LIKE

字符串前缀、后缀、模糊匹配:

SELECT * FROM paimon_table WHERE name LIKE 'Zhang%';

AND / OR 逻辑组合

多个条件组合后整体下推,DuckDB 解析出的谓词树按原结构传递给 Paimon:

SELECT * FROM paimon_table
WHERE region = 'cn-hangzhou'  
AND event_time >= '2026-04-01'  
AND status IN ('active', 'pending');

AND 和 OR 的嵌套组合均支持。

其他改动

安全修复:Paimon secret 中的  key_id 字段现在会在日志和错误信息中自动脱敏,避免敏感凭据被意外打印。

DuckDB 升级:底层 DuckDB 从 v1.5.1 升级至 v1.5.2。

获取方式

点击下方阅读原文,从 [ GitHub Releases] 下载 Linux amd64 或 arm64 预编译包。

也可参考项目 README 从源码构建。

本期互动

评论区分享您的应用场景和使用体验,截至4月28日(含),留言且留言处点赞数前三,随机赠送社区礼品。

图片


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049330/viewspace-3116742/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2026-01-19

  • 博文量
    751
  • 访问量
    690383