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¶m2=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 根憑證路徑 - 將其用作 |
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 上提供的使用者名稱和密碼會取代函式呼叫的使用者名稱和密碼引數。