Apache Arrow ADBC:节点.js 驱动管理器
节点.js 绑定 箭头数据库连接( ADBC) 标准. 土生土长 国家行动计划 addon — 需要节点22+而不是 支持浏览器或Deno环境。 Bun没有正式测试.
阿尔法. API可不经通知而更改. 如果你尝试了这个 遇到问题或有反馈,请 打开一个问题。 。 。 .
安装
npm install @apache-arrow/adbc-driver-manager apache-arrow
使用量
这个 driver 选项接受共享库的完整路径或简短
名称。 使用短名时, 驱动管理器搜索系统和用户
匹配 ADBC 驱动程序列表或库的路径.
import { AdbcDatabase } from '@apache-arrow/adbc-driver-manager'
// Short name (resolves from system/user paths)
const db = new AdbcDatabase({ driver: 'sqlite' })
// Or a full path to a driver shared library
const db = new AdbcDatabase({ driver: '/path/to/libadbc_driver_sqlite.dylib' })
一旦有数据库,打开连接并运行查询:
const connection = await db.connect()
// Execute a query — returns an Apache Arrow Table
const table = await connection.query('SELECT 1 AS value')
console.log(table.toArray())
// For large result sets, stream record batches instead
const reader = await connection.queryStream('SELECT * FROM large_table')
for await (const batch of reader) {
console.log(`Received batch with ${batch.numRows} rows`)
}
// DML — returns the number of affected rows
const affected = await connection.execute('DELETE FROM my_table WHERE id = 1')
await connection.close()
await db.close()
对于更细纹的控制,直接使用语句 API:
import { tableFromArrays } from 'apache-arrow'
const stmt = await connection.createStatement()
await stmt.setSqlQuery('SELECT * FROM my_table WHERE id = ?')
await stmt.bind(tableFromArrays({ id: [42] }))
const reader = await stmt.executeQuery()
for await (const batch of reader) {
console.log(batch.toArray())
}
await stmt.close()
发展
先决条件
- 节点.js 22+
- 锈(最稳定)
- CMake 3.14+和一个 C/C++ 编译器(用于建设驱动程序库)
- npm(通常随节点而来.js)
来源建筑
-
安装依赖性 :
npm install -
构建 Rust 添加符 :
npm run build:debug # debug build (faster) npm run build # release build
测试
测试需要一个已建成的ABBC驱动程序库(例如SQLite). 构建所有包含 SQLite 驱动程序 :
npm run build:driver
运行 CMake 将 CABC 驱动程序编译为 build/lib/ 并建造了"鲁斯特节点"(Rust Node.js addon). 完成测试后:
npm test
许可证
阿帕奇 - 2.0