SuperAPI AI 工具集

openduck-distributed-duckdb

通用与其它

查看项目

更新于 10-15 21:05

技能介绍

用途:OpenDuck 是开源分布式 DuckDB 实现,让 DuckDB 客户端可透明访问远程数据库,并把单条查询拆分到本地与远程 worker 混合执行。架构灵感来自 MotherDuck,但协议完全开放(gRPC + Arrow IPC)。

主要能力:差分存储(基于 Postgres 元数据与对象存储的追加式不可变层、快照隔离、单写多读);混合双执行(网关将算子标记为 LOCAL 或 REMOTE,并在边界插入 Bridge 算子);透明远程挂载,远程表作为一等 DuckDB catalog 条目出现。协议仅定义两个 gRPC RPC:ExecuteQuery 与 StreamResults,任何实现这两个 RPC 的服务都可作为后端。

使用方式:需 Rust 工具链、C++ 构建工具、vcpkg、bison 及 DuckDB 开发头文件。构建后端:git clone https://github.com/CITGuru/openduck 后 cargo build --workspace;构建扩展:cd extensions/openduck && make;可选安装 Python 客户端:pip install -e clients/python。启动:export OPENDUCK_TOKEN=your-secret-token,然后 cargo run -p openduck-cli -- serve -d mydb -t $OPENDUCK_TOKEN,也可分别运行 gateway 与 worker。连接时设置 allow_unsigned_extensions,LOAD 扩展后执行 ATTACH 'openduck:mydb?endpoint=http://localhost:7878&token=...' AS cloud; 即可查询 cloud 下的表。

适用场景:本地数据与远程数据联合查询、远程表读写、将远程查询结果导出为本地 Parquet,以及与 DuckLake 分层配合使用。

限制:扩展需与 DuckDB 版本匹配,且必须允许未签名扩展;服务端与客户端 token 必须一致;默认端口 7878;macOS 构建可能需 brew install bison 并调整 PATH。收费、价格与平台支持等资料暂未提供。