跳至正文
浏览文档
执行引擎

DuckDB

用 SQL 分析内存数据、文件及可连接的数据库。

配置

typescript
const ava = new AVA({
  llm: { model: 'YOUR_MODEL', apiKey: process.env.OPENAI_API_KEY },
  engine: {
    type: 'duckdb',
    memoryLimit: '512MB',
    threads: 1,
    queryTimeoutMs: 30000,
    maxTempDirectorySize: '1GB',
  },
});

DuckDB 是 Node.js 的默认引擎。它创建内存实例,将数据源注册为表或视图;生成 SQL 时使用 schema 和可选的 profile。

引擎选项

将 engine.type 设为 duckdb。engine 接受的全部额外字段如下。

字段类型必填含义与默认值
memoryLimitstring否内存限制,例如 '512MB',默认 '512MB'。
threadsnumber否工作线程数,默认 1。
maxTempDirectorySizestring否临时溢写目录的大小上限,例如 '1GB';不设置则不限制。
queryTimeoutMsnumber否单次查询超时,单位毫秒,默认 30000。
allowCommunityExtensionsboolean否数据源加载明确需要社区扩展时,允许启用 DuckDB 社区扩展。

资源限制

默认内存上限为 512 MB,使用一个工作线程,查询超时为 30 秒。maxTempDirectorySize 可选,省略时不会设置溢写目录大小上限。

这些选项与限制返回结果的 maxRows、maxResultBytes 相互独立。

数据源支持

支持内存 CSV、JSON、文本,本地或远程 CSV、JSON、Parquet、Excel,以及 MySQL、PostgreSQL、SQLite、MongoDB 数据源。配置方式见接入数据。

查询访问限制

注册数据源后,引擎会限制外部访问并锁定配置,查询方言会验证语句是否只读。社区扩展默认关闭;加载器会处理 MongoDB 等依赖社区扩展的数据源,需要时也可用 allowCommunityExtensions 显式允许。