Arrow Flight SQL JDBC 驅動程式#

Flight SQL JDBC 驅動程式是一個 JDBC 驅動程式實作,底層使用 Flight SQL 協定。此驅動程式可用於任何實作 Flight SQL 的資料庫。

安裝與需求#

此驅動程式與 JDK 11+ 相容。請注意,需要以下 JVM 參數

java --add-opens=java.base/java.nio=ALL-UNNAMED ...

若要透過 Maven 新增依賴項,請使用如下所示的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <properties>
    <arrow.version>18.1.0</arrow.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.apache.arrow</groupId>
      <artifactId>flight-sql-jdbc-driver</artifactId>
      <version>${arrow.version}</version>
    </dependency>
  </dependencies>
</project>

連線到資料庫#

URI 格式如下

jdbc:arrow-flight-sql://HOSTNAME:PORT[/?param1=val1&param2=val2&...]

例如,採用此 URI

jdbc:arrow-flight-sql://127.0.0.1:12345/?username=admin&password=pass&useEncryption=1

這將連線到在埠 12345 的 localhost 上執行的 Flight SQL 服務。它將建立安全、加密的連線,並使用使用者名稱 admin 和密碼 pass 進行驗證。

URI 的組成部分如下。

  • URI 協定必須為 jdbc:arrow-flight-sql://

  • HOSTNAME 是 Flight SQL 服務的主機名稱。

  • PORT 是 Flight SQL 服務的埠號。

其他選項可以作為查詢參數傳遞。參數名稱區分大小寫。支援的參數為

參數

預設值

描述

disableCertificateVerification

false

當啟用 TLS 時,是否驗證伺服器憑證

password

null

用於使用者/密碼驗證的密碼

threadPoolSize

1

內部執行緒池的大小

token

null

用於權杖驗證的權杖

trustStore

null

當啟用 TLS 時,憑證儲存的路徑

trustStorePassword

null

當啟用 TLS 時,憑證儲存的密碼

tlsRootCerts

null

PEM 編碼的 TLS 根憑證路徑 - 將其用作 trustStore 的替代方案

clientCertificate

null

當 Flight SQL 伺服器需要用戶端驗證時,PEM 編碼的用戶端 mTLS 憑證路徑。

clientKey

null

當 Flight SQL 伺服器需要用戶端驗證時,PEM 編碼的用戶端 mTLS 金鑰路徑。

useEncryption

true

是否使用 TLS (預設為加密連線)

user

null

用於使用者/密碼驗證的使用者名稱

useSystemTrustStore

true

當啟用 TLS 時,是否使用系統憑證儲存

retainCookies

true

在從不同端點檢索串流時,是否在後續內部連線中使用來自初始連線的 Cookie。

retainAuth

true

在從不同端點檢索串流時,是否在後續內部連線中使用從初始連線取得的持有者權杖。

請注意,如果 URI 值包含 !、@、$ 等字元,則必須進行 URI 編碼。

任何驅動程式未處理的 URI 參數都會作為 gRPC 標頭傳遞到 Flight SQL 服務。例如,以下 URI

jdbc:arrow-flight-sql://127.0.0.1:12345/?useEncryption=0&database=mydb

這將在沒有驗證或加密的情況下,連線到在埠 12345 的 localhost 上執行的 Flight SQL 服務。每個請求也將包含一個 database=mydb gRPC 標頭。

當使用 JDBC Driver Manager 連線時,也可以使用 Properties 物件提供連線參數。當使用 Properties 物件提供時,值不應進行 URI 編碼。

URI 指定的參數會取代 Properties 物件提供的參數。當呼叫 DriverManager#getConnection() 的 user/password 多載 時,URI 上提供的使用者名稱和密碼會取代函式呼叫的使用者名稱和密碼引數。