6 个版本 (重大更新)

0.5.0 2023 年 10 月 30 日
0.4.0 2023 年 10 月 27 日
0.3.1 2023 年 10 月 25 日
0.2.0 2023 年 10 月 24 日
0.1.0 2023 年 10 月 20 日

#1820数据库接口

每月下载量 38

MIT 许可证

39KB
1K SLoC

QuackDB

一个具有易用高级 API 的 DuckDB API,同时不牺牲低级访问能力。

duckdb-rs 相比

  • QuackDB 尽可能避免 API 上的生命周期
    • 数据库对象是引用计数的
    • 这避免了显式存储父对象的需求
  • QuackDB 不会尝试模仿 Rusqlite API
  • QuackDB 数据访问和处理以 Arrow 为中心

API 级别

主要 API 是高级、安全的 API。

quackdb-internal 包含对来自 libduckdb-sys 的类型的封装,这些类型仅用于对象生命周期管理。可以通过引用高级或封装结构来访问原始 FFI 处理。

API 支持

C API 高级
数据库
连接
配置
查询 Arrow
数据块
类型 部分
语句
追加器
表函数 几乎
替换扫描
  • 查询结果需要直接与 arrow RecordBatch 一起工作
  • 支持表函数,但必须通过 FFI 直接与数据块一起工作
  • 目前,DuckDB 类型、Arrow 类型和 Rust 类型尚未完全协调一致

API 习惯用法

  • 高级 API 将低级处理类型作为 pub handle 字段公开
  • 高级 API 遵循 Rust 命名
  • 低级 API 封装原始处理并执行所有基本操作
  • 低级 API 引用原始处理
  • 低级 API 使用 Rust 类型
  • 低级 API 遵循 DuckDB 命名

路线图

  • 支持 Arrow 流
  • 清理接收器
  • 清理表函数
  • 移除不需要 Drop 实现的中间处理
  • 支持 Serde
  • 支持数据块
  • 全面文档
  • 全面测试

依赖项

~16–25MB
~291K SLoC