可用引擎
| 引擎 | 描述 | 适用场景 |
|---|---|---|
auto | 自动为每项操作选择最合适的引擎 | 常规用途 (默认) |
chdb | 强制所有操作都通过 ClickHouse SQL 执行 | 大型数据集、聚合操作 |
pandas | 强制所有操作都通过 pandas 执行 | 兼容性测试、pandas 特有功能 |
配置引擎
全局配置
查看当前引擎
自动模式
auto 模式 (默认) 下,DataStore 会为每个操作选择最佳引擎:
在 chDB 中执行的操作
- 与 SQL 兼容的过滤 (
filter(),where()) - 列选择 (
select()) - 排序 (
sort(),orderby()) - 分组和聚合 (
groupby().agg()) - 连接 (
join(),merge()) - 去重 (
distinct(),drop_duplicates()) - 限制返回结果数量 (
limit(),head(),tail())
在 pandas 中执行的操作
- 自定义 apply 函数 (
apply(custom_func)) - 带有自定义聚合的复杂数据透视表
- 无法用 SQL 表达的操作
- 当输入已经是 pandas DataFrame 时
示例
chDB 模式
适用场景
- 处理大型数据集 (数百万行)
- 高强度聚合类工作负载
- 需要最大化 SQL 优化时
- 需要在所有操作中保持行为一致时
性能表现
| 操作类型 | 性能 |
|---|---|
| GroupBy/聚合 | 极佳 (最高可提升 20 倍) |
| 复杂过滤 | 极佳 |
| 排序 | 非常好 |
| 简单单条件过滤 | 良好 (有轻微开销) |
限制事项
- 可能不支持自定义 Python 函数
- 某些 pandas 特有功能需要先进行转换
pandas 模式
何时使用
- 与 pandas 的兼容性测试
- 使用 pandas 专有功能
- 调试与 pandas 相关的问题
- 当数据已为 pandas 格式时
性能特性
| 操作类型 | 性能 |
|---|---|
| 简单单项操作 | 良好 |
| 自定义函数 | 极佳 |
| 复杂聚合 | 慢于 chDB |
| 大型数据集 | 内存占用高 |
跨 DataStore 引擎
示例
引擎选择逻辑
自动模式决策树
函数级别覆盖
性能对比
| 操作 | pandas (ms) | chdb (ms) | 加速比 |
|---|---|---|---|
| GroupBy 计数 | 347 | 17 | 19.93x |
| 组合操作 | 1,535 | 234 | 6.56x |
| 复杂管道 | 2,047 | 380 | 5.39x |
| 过滤+排序+Head | 1,537 | 350 | 4.40x |
| GroupBy 聚合 | 406 | 141 | 2.88x |
| 单一过滤 | 276 | 526 | 0.52x |
- chDB 在聚合和复杂管道方面表现尤为出色
- 对于简单的单步操作,pandas 略快一些
- 使用
auto模式可同时兼顾两者的优势