驱动程序实施状态¶
警告
在 macOS x86_64 上使用两个由 Go 编写的驱动程序于同一进程时存在一个已知问题(除非是在纯 Go 应用程序中工作),使用第二个驱动程序可能会导致崩溃。有关更多详细信息,请参阅 GH-1841。
注意
支持 C/C++ 的驱动程序也可以在 C#、GLib、Go、Python、R、Ruby 和 Rust 中使用,无论其实现语言为何。
驱动程序状态¶
实验性 (Experimental) 驱动程序功能尚不完善,开发工作仍在进行中。测试版 (Beta) 驱动程序(基本)功能完善,但发布时间较短。稳定版 (Stable) 驱动程序(基本)功能完善(在底层数据库允许的最大范围内),且已发布/测试了一段时间。
功能支持¶
供应商 |
实现 |
软件包 [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 Queries)
驱动程序是否支持返回结果集的查询?
- SQL
驱动程序是否支持提交 SQL 查询?
- 事务
驱动程序是否支持显式事务(默认为自动提交)?
- Substrait
驱动程序是否支持提交 Substrait 计划?
- 查询更新 (Update Queries)
驱动程序是否支持不返回结果集的查询?
驱动程序 |
完整类型支持 |
SQL |
Substrait |
|---|---|---|---|
Flight SQL (Go) |
是 |
是 |
否 |
Flight SQL (Java) |
是 |
是 |
否 |
JDBC |
否 |
是 |
N/A |
PostgreSQL |
否 |
是 |
N/A |
SQLite |
是 |
是 |
N/A |
驱动程序 |
增量查询 |
分区数据 |
参数化查询 |
预处理语句 |
查询选择 (Select Queries) |
查询更新 (Update Queries) |
|---|---|---|---|---|---|---|
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 构建,而在该上下文中不支持此操作。
驱动程序 |
批量摄取 |
数据库元数据(目录等) |
事务 |
|---|---|---|---|
Flight SQL (Go) |
否 |
是 |
是 |
Flight SQL (Java) |
是 |
是 |
否 |
JDBC |
是 |
是 |
否 |
PostgreSQL |
是 |
是 |
是 |
SQLite |
是 |
是 |
是 |