这个项目能做什么
duckbridge 是一个 Trino 连接器插件,允许您对 DuckDB 数据库(无论是嵌入式文件还是使用 Quack RPC 协议的远程服务器)运行 SQL 查询,并支持投影、域谓词、LIMIT/ORDER BY … LIMIT 以及广泛的标量函数下推。与典型的基于 JDBC 的连接器不同,duckbridge 将支持的操作推送到 DuckDB 中,而不是将数据拉取到 Trino 中进行评估,并通过验证 DuckDB 的表达式评估方式与 Trino 一致(包括 NULL、Unicode 以及日期/时区规则)来确保正确性。该连接器被打包为标准的 Trino 插件,可部署在协调节点(coordinator)和工作节点(workers)上。
**核心特性:**
- **连接性:** 通过 JDBC (`jdbc:duckdb:`) 连接嵌入式 DuckDB,或通过 Quack 协议 (`jdbc:quack://`) 连接远程 DuckDB。远程服务器只需运行 `CALL quack_serve(…)`,无需在连接器端安装。
- **下推:** 投影和谓词下推始终开启。LIMIT、TopN 和大量标量函数将作为原生 DuckDB SQL 下推。对于 DuckDB 无法原生匹配的一小部分函数(例如 ICU 大小写折叠、加密哈希),由可选的 `trino_parity` DuckDB 扩展提供支持。
- **字符串下推模式:** 一个可配置的调节开关用于控制字符串谓词的处理方式——从不进行下推 (`NULL_ONLY`) 到带有运行时验证的全量下推 (`PARITY`)。默认的 `PARITY` 模式在首次连接时会探测 DuckDB 的二进制排序规则和扩展可用性,如果检测到差异将报错。
- **扩展:** `trino_parity` 扩展发布在 DuckDB 的社区扩展仓库中。对于嵌入式模式,已签名的 Linux 二进制文件包含在发行版中;在其他平台上,您可以安装一次或在 `GUARDED` 模式下运行。远程服务器必须在启动时加载该扩展(或提供服务器端路径)。
- **可选数据扫描:** 可以按目录启用针对 Lance 数据集和 Vortex 文件的实验性表函数,包括向量、全文和混合搜索。
- **动态目录管理:** 当 Trino 的动态目录管理启用时,可以通过 `CREATE CATALOG … USING duckbridge` 在运行时创建目录。
- **类型映射:** 为 DuckDB 类型提供无损映射,包括 UUID、`TIMESTAMPTZ`、`UBIGINT`(映射为 `DECIMAL(20,0)`)和 `VARBINARY`。不支持的类型(如 `HUGEINT`)将被拒绝。
Duckbridge 为 Trino 483 构建并嵌入了 DuckDB 1.5.5。该项目包含一个基于 Arrow 的实验性列式引擎用于直接数据传输,未来计划包括聚合下推和 Doris 兼容变体。
评论
0 评分人数达到10人后显示
登录后参与讨论。