本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Athena IBM Db2 AS/400 (Db2 系列) 連接器
適用於 Db2 AS/400 的亞馬遜雅典娜連接器可讓亞馬遜雅典娜使用 JDBC 在您的 IBM Db2 AS/400 (Db2 系列) 資料庫上執行 SQL 查詢。
必要條件
使用 Athena 主控台或 AWS Serverless Application Repository,將連接器部署到您的 AWS 帳戶 。如需詳細資訊,請參閱 部署資料來源連接器 或 使用 AWS Serverless Application Repository 部署資料來源連接器 。
您必須先設定 VPC 和安全群組,才能使用此連接器。如需詳細資訊,請參閱 為資料來源連接器建立 VPC。
限制
-
不支援寫入 DDL 操作。
-
在多工器設定中,在所有資料庫執行個體之間共用溢出儲存貯體和字首。
-
任何相關的 Lambda 限制。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 配額。
-
篩選條件中的日期和時間戳記資料類型必須轉換為適當的資料類型。
條款
下列術語與 Db2 AS/400 連接器有關。
-
資料庫執行個體 - 在內部部署、Amazon EC2 或 Amazon RDS 上部署的任何資料庫執行個體。
-
處理常式 - 存取資料庫執行個體的 Lambda 處理常式。處理常式可以用於中繼資料或資料記錄。
-
中繼資料處理常式 - 從資料庫執行個體中擷取中繼資料的 Lambda 處理常式。
-
記錄處理常式 - 從資料庫執行個體中擷取資料記錄的 Lambda 處理常式。
-
複合處理常式 - 從資料庫執行個體中擷取中繼資料和資料記錄的 Lambda 處理常式。
-
屬性或參數 - 處理常式用來擷取資料庫資訊的資料庫屬性。您可以將這些屬性設定為 Lambda 環境變數。
-
連接字串 - 用來建立資料庫執行個體連線的文字字串。
-
目錄 — 在 Athena 註冊的非AWS Glue 目錄,是
connection_string
屬性的必要前置詞。 -
多工處理常式 - 可以接受和使用多個資料庫連接的 Lambda 處理常式。
參數
您可以使用本節中的 Lambda 環境變數來設定 Db2 AS/400 連接器。
連接字串
使用下列格式的 JDBC 連接字串來連接資料庫執行個體。
db2as400://${
jdbc_connection_string
}
使用多工處理常式
您可以使用多工器透過單一 Lambda 函數連接到多個資料庫執行個體。按目錄名稱路由請求。在 Lambda 中使用下列類別。
處理常式 | 類別 |
---|---|
複合處理常式 | Db2MuxCompositeHandler |
中繼資料處理常式 | Db2MuxMetadataHandler |
記錄處理常式 | Db2MuxRecordHandler |
多工處理常式參數
參數 | 描述 |
---|---|
$ |
必要。資料庫執行個體連接字串。在環境變數前面加上 Athena 中使用的目錄名稱。例如,如果向 Athena 註冊的目錄為 mydb2as400catalog ,則環境變數名稱為 mydb2as400catalog_connection_string 。 |
default |
必要。預設的連接字串。目錄為 lambda:${ AWS_LAMBDA_FUNCTION_NAME } 時,使用此字串。 |
下列範例屬性適用於支援兩個資料庫執行個體的 Db2 MUX Lambda 函數:db2as4001
(預設) 和 db2as4002
。
屬性 | Value |
---|---|
default |
db2as400://jdbc:as400:// |
db2as400_catalog1_connection_string |
db2as400://jdbc:as400://db2as4001. |
db2as400_catalog2_connection_string |
db2as400://jdbc:as400://db2as4002. |
db2as400_catalog3_connection_string |
db2as400://jdbc:as400:// |
提供憑證
要在 JDBC 連接字串中提供資料庫的使用者名稱和密碼,可以使用連接字串屬性或 AWS Secrets Manager。
-
連接字串 - 可以將使用者名稱和密碼指定為 JDBC 連接字串中的屬性。
重要
作為安全最佳實務,請勿在您的環境變數或連線字串中使用硬式編碼憑證。如需有關將硬式編碼密碼移至的資訊 AWS Secrets Manager,請參閱《AWS Secrets Manager 使用者指南》 AWS Secrets Manager中的「將硬式編碼密碼移至」。
-
AWS Secrets Manager— 若要搭配使用 Athena 聯合查詢功能 AWS Secrets Manager,連線至 Lambda 函數的虛擬私人雲端應具有網際網路存取權限
,或具有連線至 Secrets Manager 的 VPC 端點。 您可以在 JDBC 連接字符串 AWS Secrets Manager 中輸入密碼的名稱。連接器將秘密名稱取代為 Secrets Manager 中的
username
和password
值。對於 Amazon RDS 資料庫執行個體,已緊密整合此支援。如果您使用 Amazon RDS,我們強烈建議您使用 AWS Secrets Manager 和登入資料輪替。如果您的資料庫不使用 Amazon RDS,請以下列格式將憑證儲存為 JSON:
{"username": "${username}", "password": "${password}"}
帶有秘密名稱的連接字串範例
以下字串具有秘密名稱 ${secret_name}
。
db2as400://jdbc:as400://
<ip_address>
;<properties>
;:${<secret_name>
};
連接器會使用秘密名稱來擷取秘密並提供使用者名稱和密碼,如下列範例所示。
db2as400://jdbc:as400://
<ip_address>
;user=<username>
;password=<password>
;<properties>
;
使用單一連接處理常式
您可以使用下列單一連線中繼資料和記錄處理常式來連線至單一 Db2 AS/400 執行個體。
處理常式類型 | 類別 |
---|---|
複合處理常式 | Db2CompositeHandler |
中繼資料處理常式 | Db2MetadataHandler |
記錄處理常式 | Db2RecordHandler |
單一連接處理常式參數
參數 | 描述 |
---|---|
default |
必要。預設的連接字串。 |
單一連接處理常式支援一個資料庫執行個體,並且必須提供 default
連接字串參數。忽略所有其他連接字串。
下列範例屬性適用於 Lambda 函數支援的單一 Db2 AS/400 執行個體。
屬性 | Value |
---|---|
default |
db2as400://jdbc:as400:// |
溢出參數
Lambda SDK 可能會將資料溢出至 Amazon S3。由相同 Lambda 函數存取的所有資料庫執行個體溢出到相同的位置。
參數 | 描述 |
---|---|
spill_bucket |
必要。溢出儲存貯體名稱。 |
spill_prefix |
必要。溢出儲存貯體金鑰字首。 |
spill_put_request_headers |
(選用) 用於溢出的 Amazon S3 putObject 請求的請求標頭和值的 JSON 編碼映射 (例如,{"x-amz-server-side-encryption" :
"AES256"} )。如需其他可能的標頭,請參閱 Amazon 簡單儲存服務 API 參考PutObject中的。 |
支援的資料類型
下表顯示 JDBC 和 Apache Arrow 的相應資料類型。
定位系統 | Arrow |
---|---|
CHAR | VARCHAR |
VARCHAR | VARCHAR |
DATE | DATEDAY |
TIME | VARCHAR |
TIMESTAMP | DATEMILLI |
DATETIME | DATEMILLI |
BOOLEAN | BOOL |
SMALLINT | SMALLINT |
INTEGER | INT |
BIGINT | BIGINT |
DECIMAL | DECIMAL |
REAL | FLOAT8 |
DOUBLE | FLOAT8 |
DECFLOAT | FLOAT8 |
分割區和分隔
分割區由 varchar
類型的一或多個分割區資料欄表示。Db2 AS/400 連接器會使用下列組織配置建立分割區。
-
依雜湊分配
-
依範圍分割
-
依維度組織
連接器會從一或多個 Db2 AS/400 中繼資料表格擷取分割區詳細資訊,例如分割區數目和資料行名稱。根據識別的分割區數目建立分割。
效能
若要提升效能,請使用述詞下推來從 Athena 進行查詢,如下列範例所示。
SELECT * FROM "lambda:
<LAMBDA_NAME>
"."<SCHEMA_NAME>
"."<TABLE_NAME>
" WHERE integercol = 2147483647
SELECT * FROM "lambda:
<LAMBDA_NAME>
"."<SCHEMA_NAME>
"."<TABLE_NAME>
" WHERE timestampcol >= TIMESTAMP '2018-03-25 07:30:58.878'
直通查詢
Db2 AS/400 連接器支援直通查詢。傳遞查詢使用資料表函數將完整查詢推送至資料來源以進行執行。
若要使用 Db2 AS/400 的傳遞查詢,您可以使用下列語法:
SELECT * FROM TABLE( system.query( query => '
query string
' ))
下列範例查詢會將查詢向下推送至 Db2 AS/400 中的資料來源。查詢會選取資料customer
表中的所有資料行,將結果限制為 10。
SELECT * FROM TABLE( system.query( query => 'SELECT * FROM customer LIMIT 10' ))
授權資訊
使用此連接器即表示您確認已包含協力廠商元件,其清單可在此連接器的 pom.xml
其他資源
如需最新的 JDBC 驅動程式版本資訊,請參閱 .com 上 Db2 AS/400 連接器的 pom.xml
如需有關此連接器的其他資訊,請造訪 GitHub .com 上的對應網站