驱动程序实现状态¶
警告
在 macOS x86_64 上,当在同一个进程中使用两个用 Go 编写的驱动程序时(除非在纯 Go 应用程序中工作),存在一个已知问题,即使用第二个驱动程序可能会导致崩溃。有关更多详细信息,请参阅 GH-1841。
注意
支持 C/C++ 的驱动程序也可以通过 C#、GLib、Go、Python、R、Ruby 和 Rust 使用,无论其实现语言如何。
驱动程序状态¶
实验性驱动程序功能不完整,实现仍在进行中。测试版驱动程序功能(大部分)完整,但仅可用了一小段时间。稳定版驱动程序功能(大部分)完整(尽可能适用于底层数据库),并且已经可用/测试了一段时间。
功能支持¶
供应商 |
实现 |
软件包 [1] |
|
|---|---|---|---|
Apache Arrow Flight SQL |
C# |
测试版 |
|
Go |
稳定版 |
conda-forge (adbc-driver-flightsql, libadbc-driver-flightsql), PyPI, R-multiverse |
|
Apache Arrow Flight SQL |
Java |
测试版 |
|
Apache DataFusion |
Rust |
实验性 |
|
Apache Hive |
C# |
实验性 |
|
Apache Impala |
C# |
实验性 |
|
Apache Spark |
C# |
实验性 |
|
Databricks |
C# |
实验性 |
|
C/C++ |
稳定版 |
||
Google BigQuery |
C# |
测试版 |
|
Google BigQuery |
Go |
实验性 |
conda-forge (adbc-driver-bigquery, libadbc-driver-bigquery), PyPI, R-multiverse |
Java |
测试版 |
||
C/C++ |
稳定版 |
conda-forge (adbc-driver-postgresql, libadbc-driver-postgresql), CRAN, PyPI |
|
C/C++ |
稳定版 |
conda-forge (adbc-driver-sqlite, libadbc-driver-sqlite), CRAN, PyPI |
|
Go |
稳定版 |
conda-forge (adbc-driver-snowflake, libadbc-driver-snowflake), crates.io, Go, NuGet, PyPI, R-multiverse |
功能支持¶
N/A 表示底层数据库无法支持此功能。
有关完整详细信息,请参阅各个驱动程序文档页面。
- 批量摄取
驱动程序是否支持数据批量导入(从 Arrow 表创建或追加到数据库表)?
- 数据库元数据
驱动程序是否支持像
AdbcConnectionGetObjects()这样获取数据库目录等元数据的功能?- 参数化查询
驱动程序是否支持绑定查询参数?
- 分区数据
能够读取(通常是分布式)结果集的单个块(
AdbcStatementExecutePartitions())。- 预处理语句
驱动程序是否支持绑定查询参数?
- 完整类型支持
驱动程序是否尽可能将所有数据库类型映射到/从等效的 Arrow 类型?
- Select 查询
驱动程序是否支持返回结果集的查询?
- SQL
驱动程序是否支持提交 SQL 查询?
- 事务
驱动程序是否支持显式事务(默认为自动提交)?
- Substrait
驱动程序是否支持提交 Substrait 计划?
- Update 查询
驱动程序是否支持不返回结果集的查询?
驱动程序 |
完整类型支持 |
SQL |
Substrait |
|---|---|---|---|
Flight SQL (Go) |
是 |
是 |
否 |
Flight SQL (Java) |
是 |
是 |
否 |
JDBC |
否 |
是 |
N/A |
PostgreSQL |
否 |
是 |
N/A |
SQLite |
是 |
是 |
N/A |
驱动程序 |
增量查询 |
分区数据 |
参数化查询 |
预处理语句 |
Select 查询 |
Update 查询 |
|---|---|---|---|---|---|---|
Flight SQL (Go) |
是 |
是 |
是 |
是 |
是 |
是 |
Flight SQL (Java) |
否 |
是 |
是 |
是 |
是 |
是 |
JDBC |
N/A |
N/A |
是 |
是 |
是 |
是 |
PostgreSQL |
N/A |
N/A |
是 [3] |
是 |
是 |
是 |
SQLite |
N/A |
N/A |
是 |
是 |
是 |
是 |
PostgreSQL 驱动程序仅支持执行不返回结果集的带参数预处理语句(基本上是带参数的 INSERT)。对于返回结果集的查询,预处理语句很难使用,因为驱动程序是为了获得最佳性能而围绕使用 COPY 构建的,而 COPY 在此上下文中不受支持。
驱动程序 |
批量摄取 |
数据库元数据(目录等) |
事务 |
|---|---|---|---|
Flight SQL (Go) |
否 |
是 |
是 |
Flight SQL (Java) |
是 |
是 |
否 |
JDBC |
是 |
是 |
否 |
PostgreSQL |
是 |
是 |
是 |
SQLite |
是 |
是 |
是 |