选择引擎
在 AVA 构造函数中设置引擎。JavaScript API 省略该配置时始终选择 DuckDB,不会根据数据源类型自动切换。
| 引擎 | 支持的数据源 | 运行环境 |
|---|---|---|
| DuckDB | 内存数据、文件、MySQL、PostgreSQL、SQLite、MongoDB | Node.js |
| JavaScript | 内存 CSV、JSON、文本 | Node.js 和浏览器 |
| Python | 内存 CSV / JSON;CSV / JSON / Parquet / Excel 文件 | Node.js + Python 执行器 |
| Supabase | Supabase 项目 | Node.js,远程 PostgreSQL |
| ClickHouse | ClickHouse 数据库 | Node.js,远程 ClickHouse |
引擎配置
| 字段 | 类型 | 必填 | 默认值与行为 |
|---|---|---|---|
engine.type | 'duckdb' / 'javascript' / 'python' / 'supabase' / 'clickhouse' / 已注册的名称 | 提供 engine 时必填 | 省略 engine 时选择 DuckDB。 |
其他字段取决于 type,详见 DuckDB 选项和 Python 选项。JavaScript、Supabase、ClickHouse 没有额外的构造函数引擎字段;数据库凭证放在数据源参数中。
希望在自己的服务中执行 Python,参见提供 Python 执行器。希望在应用中提供自己的引擎,参见自定义引擎。
共同约定
引擎负责加载数据、发现结构、计算统计、根据传入上下文生成查询、执行查询和释放资源。AVA 管理 schema 与 profile 缓存,并决定何时需要发现结构或计算统计信息。
应用通常直接使用 AVA API。引擎实现者应遵循引擎接口约定,分别实现 load() 和 schema()。
注册
Node.js 入口注册全部五种引擎,浏览器入口只注册 JavaScript。注册表让核心 AVA 类无需直接依赖各平台专用模块。
扩展 SDK 时,先调用 registerEngine('sales', SalesEngine),再设置 engine: { type: 'sales' }。接口约定和完整示例见自定义引擎。CLI 仅接受内置引擎名。