分區化 SQL 連接器
重要
此功能目前為預覽功能。 適用於 Microsoft Azure 預覽版的補充使用規定包含適用於 Beta 版、預覽版或尚未發行至正式運作之 Azure 功能的更合法條款。 如需此特定預覽的相關信息,請參閱 AKS 預覽資訊的 Azure HDInsight。 如需問題或功能建議,請在 AskHDInsight 上提交要求,並提供詳細數據,並遵循我們在 Azure HDInsight 社群上取得更多更新。
分區化 SQL 連接器可讓查詢透過分散在任意數目 SQL 伺服器的數據上執行。
必要條件
若要連線到分區化 SQL 伺服器,您需要:
- SQL Server 2012 或更高版本,或 Azure SQL 資料庫。
- 從 Trino 協調器和背景工作角色到 SQL Server 的網路存取。 埠 1433 是預設埠。
一般設定
連接器可以將多個 SQL 伺服器查詢為單一數據源。 建立目錄屬性檔案,並使用 connector.name=sharded-sql
來使用分區化 SQL 連接器。
組態範例:
connector.name=sharded_sqlserver
connection-user=<user-name>
connection-password=<user-password>
sharded-cluster=true
shard-config-location=<path-to-sharding-schema>
屬性 | 說明 |
---|---|
connector.name | 連接器名稱 For sharded SQL,這應該是 sharded_sqlserver |
connection-user | SQL Server 中的用戶名稱 |
connection-password | SQL Server 中用戶的密碼 |
sharded-cluster | 必須針對sharded-sql 連接器設定為TRUE |
shard-config-location | 定義分區化架構的組態位置 |
資料來源驗證
連接器會使用使用者密碼驗證來查詢 SQL 伺服器。 組態中指定的相同用戶應該對所有 SQL 伺服器進行驗證。
結構描述定義
連線 or 假設跨 SQL 伺服器之實體數據的 2D 分割區/貯體配置。 架構定義描述此配置。 目前僅支援以檔案為基礎的分區化架構定義。
您可以在目錄屬性中指定分區化架構 json 的位置, 例如 shard-config-location=etc/shard-schema.json
。
設定具有所需屬性的分區化架構 json,以指定配置。
下列 JSON 檔案描述 Trino 分區化 SQL 連接器的組態。 以下是其結構的分解:
tables:對象的陣列,每個物件都代表資料庫中的數據表。 每個資料表物件都包含:
- schema:數據表的架構名稱,對應至 SQL Server 中的資料庫。
- name:數據表的名稱。
- sharding_schema:與數據表相關聯的分區化架構名稱,做為後續步驟中所述的參考
sharding_schema
。
sharding_schema:對象的陣列,每個都代表分區化架構。 每個分區化架構物件都包含:
- name:分區化架構的名稱。
- partitioned_by:數位,包含分割分區化架構的一或多個數據行。
- bucket_count(選擇性):整數,代表數據表分佈的貯體總數,預設值為 1。
- bucketed_by(選擇性):數位含一或多個數據分割的數據行,請注意數據分割和貯體是階層式的,這表示每個分割區都已貯體。
- partition_map:對象的陣列,每個物件都代表分區化架構內的分割區。 每個分割區物件都包含:
- partition:表單中指定的數據分割值
partition-key=partitionvalue
- 分區:對象的陣列,每個物件都代表分割區內的分區,陣列的每個元素都代表複本,三元會隨機查詢其中任何一個,以擷取分割區/貯體的數據。 每個分區物件都包含:
- connectionUrl:分區資料庫的 JDBC 連線 URL。
- partition:表單中指定的數據分割值
例如,如果兩個數據表 lineitem
和 part
您想要使用此連接器進行查詢,您可以指定它們,如下所示。
"tables": [
{
"schema": "dbo",
"name": "lineitem",
"sharding_schema": "schema1"
},
{
"schema": "dbo",
"name": "part",
"sharding_schema": "schema2"
}
]
注意
連線 or 預期資料表的所有資料表都會出現在數據表架構中定義的 SQL Server 中,如果不是這種情況,該數據表的查詢將會失敗。
在上述範例中,您可以將資料表 lineitem
的設定指定為:
"sharding_schema": [
{
"name": "schema1",
"partitioned_by": [
"shipmode"
],
"bucketed_by": [
"partkey"
],
"bucket_count": 10,
"partition_map": [
{
"partition": "shipmode='AIR'",
"buckets": 1-7,
"shards": [
{
"connectionUrl": "jdbc:sqlserver://sampleserver.database.windows.net:1433;database=test1"
}
]
},
{
"partition": "shipmode='AIR'",
"buckets": 8-10,
"shards": [
{
"connectionUrl": "jdbc:sqlserver://sampleserver.database.windows.net:1433;database=test2"
}
]
}
]
}
]
此範例描述:
- 由 分割
shipmode
的數據表明細項目數據。 - 每個分割區都有10個貯體。
- 每個分割區都會bucketed_by
partkey
數據行。 - 分割
1-7
區值的AIR
貯體位於test1
資料庫中。 - 分割
8-10
區值的AIR
貯體位於test2
資料庫中。 - 分區是的
connectionUrl
陣列。 陣列的每個成員都代表 replicaSet。 在查詢執行期間,Trino 會隨機從數位選取分區以查詢數據。
分割區和貯體剪除
連線 or 會在規劃期間評估查詢條件約束,並根據提供的查詢述詞執行。 這有助於加速查詢效能,並允許連接器查詢大量數據。
使用此處所述的雜音哈希函式實作來判斷指派的貯體公式。
類型對應
分區化 SQL 連接器支援與 SQL Server 連接器 類型對應相同的類型對應。
下推
支援下列下推優化:
- 限制下推
- 分散式匯總
- 加入下推
JOIN
只有在連接器判斷組建和探查數據表的數據共置時,才能將作業向下推送至伺服器。 連線 or 決定數據共置時 - 和 right
資料表的sharding_schemaleft
相同。
- 聯結條件是分割和貯體索引鍵的超集。
若要使用 JOIN
下推優化,目錄屬性 join-pushdown.strategy
應設定為 EAGER
AGGREGATE
此連接器的下推只能針對分散式匯總完成。 優化工具組態 optimizer.partial-aggregate-pushdown-enabled
必須設定為 true
,才能啟用此優化。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應