术语表

Arrow Flight SQL

一种用于数据系统的传输协议,它使用 Apache Arrow。参见规范

客户端 API (client API)

应用程序用于与数据库进行交互的 API。它可能会对底层的传输协议和其他细节进行抽象。例如:ADBC、JDBC、ODBC。

连接 (connection)

在 ADBC 中,连接对象/结构体表示到数据库的单个连接。可以从一个数据库创建多个连接。

连接配置文件 (connection profile)

一种预配置的驱动程序和选项,可由驱动程序管理器加载以方便使用。通过 TOML 文件指定。参见 ADBC 驱动程序管理器和连接配置文件

数据库 (database)

在 ADBC 中,数据库对象/结构体保存了跨连接共享的状态。

驱动程序 (driver)

简单来说,就是使用某种传输协议实现客户端 API 的库。例如,ADBC PostgreSQL 驱动程序公开了 ADBC 客户端 API,并通过 PostgreSQL 传输协议与 PostgreSQL 数据库交互。JDBC PostgreSQL 驱动程序使用相同的传输协议,但公开的是 JDBC 客户端 API。

ADBC 驱动程序可以使用多种语言(包括 C++、C#、Go 和 Rust)作为库来实现。驱动程序可以直接导入到用同一种语言实现的应用程序中,也可以编译成共享库(Linux 下为 .so 文件,macOS 下为 .dylib 文件,Windows 下为 .dll 文件),并使用驱动程序管理器动态加载到任何支持的语言编写的应用程序中。

驱动程序管理器 (driver manager)

一个用于加载和使用驱动程序的库。驱动程序管理器实现了 ADBC API 并将其委托给动态加载的驱动程序。它简化了在单个应用程序中使用多个驱动程序的过程,并使得使用任何语言编写的驱动程序成为可能,而无需考虑应用程序本身的开发语言。

每种语言中的驱动程序管理器都相似。在 C/C++ 中,它可以动态加载驱动程序,因此应用程序不必直接链接它们。(由于所有驱动程序都公开相同的 API,否则它们的符号会发生冲突。)在 Python 中,它负责加载驱动程序并在其上提供 Python 绑定。

驱动程序清单 (driver manifest)

一个描述驱动程序的文件(TOML 格式)。此文件的结构是 ADBC 规范的一部分。驱动程序管理器可以从清单文件加载驱动程序,从而简化了用户的操作流程。

入口点 (entrypoint)

由驱动程序导出的函数名称,当驱动程序被加载时,驱动程序管理器会调用该函数来执行驱动程序所需的任何初始化操作。该名称遵循 AdbcDriverInitFunc 中概述的约定,但也可能使用其他名称。

语句 (statement)

在 ADBC 中,语句对象/结构体保存执行单个查询的状态。查询本身、绑定参数、结果集等都与该语句绑定。可以从一个连接创建多个语句(尽管并非所有驱动程序都支持这一点)。

Substrait

Substrait 将自己描述为“关系代数的跨语言序列化”。它的运行空间与 SQL 类似,但层级更低。您不太可能手动编写 Substrait 查询,但可能会使用一些工具,这些工具为了获得更可预测的语义,选择生成 Substrait 而非 SQL。

传输协议 (wire protocol)

数据库驱动程序连接数据库、发出命令、获取结果等实际所用的方式。例如:Arrow Flight SQLPostgreSQL 传输协议表格数据流 (TDS)(Microsoft SQL Server)。通常,应用程序不会直接实现和使用此协议,而是使用更高级别的抽象,例如 ADBC、JDBC 或 ODBC 驱动程序。