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 次
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