驱动程序实现状态¶
警告
当在同一个进程中使用两个用 Go 编写的驱动程序时(除非在纯 Go 应用程序中工作),macOS x86_64 上存在一个已知问题,即使用第二个驱动程序可能会崩溃。有关更多详细信息,请参阅 GH-1841。
实现状态¶
实验性 驱动程序的功能尚未完成,并且实现仍在进行中。 Beta 驱动程序(大部分)功能已完成,但仅可用了很短的时间。 稳定 驱动程序(大部分)功能已完成(尽可能地针对底层数据库),并且已可用/测试一段时间。
驱动程序 |
支持的语言 [1] |
实现语言 |
状态 |
---|---|---|---|
BigQuery |
C# |
C# |
实验性 |
Flight SQL (Go) |
C, Go |
Go |
稳定 |
Flight SQL (Java) |
Java |
Java |
实验性 |
JDBC |
Java |
Java |
实验性 |
PostgreSQL |
C |
C++ |
稳定 |
SQLite |
C |
C |
稳定 |
Snowflake |
C, Go |
Go |
稳定 |
功能支持¶
N/A 表示在底层数据库中不可能支持此功能。
有关完整详细信息,请参见各个驱动程序文档页面。
- 批量摄取
驱动程序是否支持 数据的批量摄取(从 Arrow 表创建或追加到数据库表)?
- 数据库元数据
驱动程序是否支持诸如
AdbcConnectionGetObjects()
之类的函数,这些函数获取有关数据库目录等的元数据?- 参数化查询
驱动程序是否支持绑定查询参数?
- 分区数据
能够读取(通常是分布式的)结果集的各个块 (
AdbcStatementExecutePartitions()
)。- 预处理语句
驱动程序是否支持绑定查询参数?
- 完整类型支持
驱动程序是否尽可能地将所有数据库类型映射到等效的 Arrow 类型,反之亦然?
- Select 查询
驱动程序是否支持返回结果集的查询?
- SQL
驱动程序是否支持提交 SQL 查询?
- 事务
驱动程序是否支持显式事务(默认情况下假设自动提交)?
- Substrait
驱动程序是否支持提交 Substrait 计划?
- 更新查询
驱动程序是否支持不返回结果集的查询?
驱动程序 |
完整类型支持 |
SQL |
Substrait |
---|---|---|---|
Flight SQL (Go) |
是 |
是 |
否 |
Flight SQL (Java) |
是 |
是 |
否 |
JDBC |
否 |
是 |
不适用 |
PostgreSQL |
否 |
是 |
不适用 |
SQLite |
是 |
是 |
不适用 |
驱动程序 |
增量查询 |
分区数据 |
参数化查询 |
预处理语句 |
Select 查询 |
更新查询 |
---|---|---|---|---|---|---|
Flight SQL (Go) |
是 |
是 |
是 |
是 |
是 |
是 |
Flight SQL (Java) |
否 |
是 |
是 |
是 |
是 |
是 |
JDBC |
不适用 |
不适用 |
是 |
是 |
是 |
是 |
PostgreSQL |
不适用 |
不适用 |
是 [2] |
是 |
是 |
是 |
SQLite |
不适用 |
不适用 |
是 |
是 |
是 |
是 |
PostgreSQL 驱动程序仅支持执行不返回结果集的带参数的预处理语句(基本上,是一个带参数的 INSERT)。 返回结果集的查询在使用预处理语句时很困难,因为驱动程序是围绕使用 COPY 以获得最佳性能而构建的,而在此上下文中不支持 COPY。
驱动程序 |
批量摄取 |
数据库元数据(目录等) |
事务 |
---|---|---|---|
Flight SQL (Go) |
否 |
是 |
是 |
Flight SQL (Java) |
是 |
是 |
否 |
JDBC |
是 |
是 |
否 |
PostgreSQL |
是 |
是 |
是 |
SQLite |
是 |
是 |
是 |