驅動程式管理器

驅動程式管理器是一個函式庫,透過委派給動態載入的驅動程式來實作 ADBC API。這讓應用程式可以同時使用多個驅動程式,並將自身與特定的驅動程式解耦。

安裝

安裝適當的驅動程式套件。您可以使用 conda-forgeaptdnf

conda-forge

  • mamba install adbc-driver-manager

您可以在以下平台上使用 apt

  • Debian GNU/Linux bookworm

  • Ubuntu 22.04

準備 Apache Arrow APT 儲存庫

sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
sudo wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
rm ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update

安裝

  • sudo apt install libadbc-driver-manager-dev

您可以在以下平台上使用 dnf

  • AlmaLinux 8

  • Oracle Linux 8

  • Red Hat Enterprise Linux 8

  • AlmaLinux 9

  • Oracle Linux 9

  • Red Hat Enterprise Linux 9

準備 Apache Arrow Yum 儲存庫

sudo dnf install -y epel-release || sudo dnf install -y oracle-epel-release-el$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1) || sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
sudo dnf install -y https://apache.jfrog.io/artifactory/arrow/almalinux/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
sudo dnf config-manager --set-enabled epel || :
sudo dnf config-manager --set-enabled powertools || :
sudo dnf config-manager --set-enabled crb || :
sudo dnf config-manager --set-enabled ol$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)_codeready_builder || :
sudo dnf config-manager --set-enabled codeready-builder-for-rhel-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)-rhui-rpms || :
sudo subscription-manager repos --enable codeready-builder-for-rhel-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)-$(arch)-rpms || :

安裝

  • sudo dnf install adbc-driver-manager-devel

然後它們可以透過 CMake 使用,例如

find_package(AdbcDriverPostgreSQL)

# ...

target_link_libraries(myapp PRIVATE AdbcDriverPostgreSQL::adbc_driver_postgresql_shared)

用法

若要建立資料庫,請像平常一樣使用 AdbcDatabase API,但在初始化期間,除了驅動程式特定的連線參數之外,還需提供兩個額外參數:driver 和(可選的)entrypointdriver 必須是要載入的函式庫名稱,或是要載入的函式庫路徑。entrypoint(如果提供)應該是作為 ADBC 進入點的符號名稱(請參閱 AdbcDriverInitFunc)。

/* Ignoring error handling */
struct AdbcDatabase database;
memset(&database, 0, sizeof(database));
AdbcDatabaseNew(&database, NULL);
/* On Linux: loads libadbc_driver_sqlite.so
 * On MacOS: loads libadbc_driver_sqlite.dylib
 * On Windows: loads adbc_driver_sqlite.dll */
AdbcDatabaseSetOption(&database, "driver", "adbc_driver_sqlite", NULL);
/* Set additional options for the specific driver, if needed */
/* Initialize the database */
AdbcDatabaseInit(&database, NULL);
/* Create connections as usual */

API 參考

驅動程式管理器除了 ADBC API 之外,還包含一些額外的函式。請參閱 API 參考:adbc_driver_manager.h