在 SQL Server 中使用 PolyBase 進行資料虛擬化
適用於: SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
PolyBase 是 SQL Server 的資料虛擬化功能。
什麼是 PolyBase?
PolyBase 可讓您的 SQL Server 執行個體直接從 SQL Server、Oracle、Teradata、MongoDB、Hadoop 叢集、Cosmos DB 和 S3 相容物件儲存體查詢 T-SQL 的資料,而不需個別安裝用戶端連線軟體。 您也可以使用一般 ODBC 連接器,使用協力廠商 ODBC 驅動程式連線到其他供應商。 PolyBase 可讓 T-SQL 查詢將資料從外部來源聯結至 SQL Server 執行個體中的關聯式資料表。
使用 PolyBase 功能進行資料虛擬化的主要使用案例是允許資料保持原始位置和格式。 您可以在 SQL Server 執行個體中虛擬化外部資料,以便在 SQL Server 中的其他任何資料表之類的位置可供查詢。 此程序會將資料移動的 ETL 程序的需求降到最低。 使用 PolyBase 連接器可以實現這種資料虛擬化場景。
支援的 SQL 產品和服務
PolyBase 為下列 Microsoft SQL 產品提供這些相同的功能:
- 僅限 SQL Server 2016 (13.x) 及更新版本 (Windows)
- SQL Server 2019 (15.x) 及更新版本 (Windows 及 Linux)
- SQL Server、Analytics Platform System (PDW)
- Azure Synapse Analytics (專用 SQL 集區)
- Azure Synapse Analytics 中提供兩種模式的資料虛擬化:PolyBase 和原生。 如需詳細資訊,請參閱搭配 Synapse SQL 使用外部表格。
注意
資料虛擬化適用於 Azure SQL 受控執行個體,範圍設定為查詢在 Azure Data Lake Storage (ADLS) Gen2 和 Azure Blob 儲存體的檔案中儲存的外部資料。 請參閱 Azure SQL 受控執行個體的資料虛擬化深入瞭解。
SQL Server 2022 PolyBase 增強功能
SQL Server 2022 (16.x) 新功能 | 詳細資料 |
---|---|
與 S3 相容的物件儲存體 | SQL Server 2022 (16.x) 使用 S3 REST API 新增連接器 S3 相容物件儲存體。 您可以使用 OPENROWSET 和 CREATE EXTERNAL TABLE 來查詢 S3 相容物件儲存體中的資料檔案。 |
某些連接器與 PolyBase 服務分開 | S3 相容的物件儲存連接器以及 ADSL Gen2 和 Azure Blob 儲存體不再取決於 PolyBase 服務。 PolyBase 服務仍必須執行以支援與 Oracle、Teradata、MongoDB 和泛型 ODBC 的連線。 PolyBase 功能仍必須安裝在您的 SQL Server 執行個體上。 |
Parquet 檔案格式 | PolyBase 現在能夠從儲存在 S3 相容物件儲存體上的 Parquet 檔案查詢資料。 如需詳細資訊,請參閱使用 PolyBase 將與 S3 相容物件儲存體中的 parquet 檔案虛擬化。 |
差異資料表格式 | PolyBase 現在能夠從 S3 相容物件儲存體、Azure 儲存體帳戶 V2 和 Azure Data Lake Storage Gen2 上儲存的差異資料表格式查詢 (唯讀) 資料。 如需詳細資訊,請參閱虛擬化差異資料表格式 |
Create External Table as Select (CETAS) | PolyBase 現在可以使用 CETAS 建立外部表格,然後以平行的方式將 Transact-SQL SELECT 陳述式的結果匯出到 Azure Data Lake Storage Gen2、Azure 儲存體帳戶 V2 和 S3 相容的物件儲存體。 如需詳細資訊,請參閱 CREATE EXTERNAL TABLE AS SELECT (Transact-SQL)。 |
關於 SQL Server 2022 (16.x) 的更多新功能,請參閱 SQL Server 2022 的新功能。
提示
如需 SQL Server 2022 (16.x) 中的 PolyBase 功能教學課程,請參閱 SQL Server 2022 中的 PolyBase 使用者入門。
PolyBase 連接器
PolyBase 功能提供下列外部資料來源的連線能力:
外部資料來源 | SQL Server 2016-2019 與 PolyBase | SQL Server 2022 (16.x) 與 PolyBase | APS PDW | Azure Synapse Analytics |
---|---|---|---|---|
Oracle、MongoDB、Teradata | 讀取 | 讀取 | 否 | 否 |
一般 ODBC | 讀取 (僅限 Windows) | 讀取 (僅限 Windows) | 否 | 否 |
Azure 儲存體 | 讀取/寫入 | 讀取/寫入 | 讀取/寫入 | 讀取/寫入 |
Hadoop | 讀取/寫入 | No | 讀取/寫入 | 否 |
SQL Server | 讀取 | 讀取 | 否 | 否 |
與 S3 相容的物件儲存體 | 否 | 讀取/寫入 | 否 | 否 |
- SQL Server 2022 (16.x) 不支援 Hadoop。
- SQL Server 2016 (13.x) 推出了支援針對 Hadoop 和 Azure Blob 儲存體連線的 PolyBase。
- SQL Server 2019 (15.x) 推出了額外的連接器,包括 SQL Server、Oracle、Teradata 和 MongoDB。
- SQL Server 2022 (16.x) 推出了 S3 相容儲存體連接器。
- SQL Server 2019 (15.x) 累積更新 19 現在推出 Oracle TNS 檔案的支援。
- SQL Server 2022 (16.x) 累積更新 2 現在推出 Oracle TNS 檔案的支援。
外部連接器的範例包括:
* PolyBase 透過 SQL Server 2019 支援兩個 Hadoop 提供者,Hortonworks Data Platform (HDP) 和 Cloudera 分散式 Hadoop (CDH)。 SQL Server 對 HDFS Cloudera (CDP) 和 Hortonworks (HDP) 外部資料來源的支援將淘汰,且不會包含在 SQL Server 2022 (16.x) 中。 如需詳細資訊,請參閱 Microsoft SQL Server 平台上的巨量資料選項。
若要使用 PolyBase,請在 SQL Server 的執行個體中:
- 在 Windows 上安裝 PolyBase 或在 Linux 上安裝 PolyBase。
- 從 SQL Server 2019 (15.x) 開始,如有必要,請在 sp_configure 中啟用 PolyBase。
- 建立外部資料來源
- 建立外部表格。
Azure 整合
有了 PolyBase 在後面的幫助,T-SQL 查詢也可以從 Azure Blob Storage 匯入及匯出資料。 此外,PolyBase 可讓 Azure Synapse Analytics 從 Azure Data Lake Store 與 Azure Blob 儲存體匯入及匯出資料。
為何要使用 PolyBase?
PolyBase 可讓您將來自 SQL Server 執行個體的資料與外部資料聯結。 在 PolyBase 之前,若要將資料聯結到外部資料來源,您可以:
- 傳輸一半的資料,來使所有的資料集中於一處。
- 同時查詢兩個資料來源,然後撰寫自訂查詢邏輯以在用戶端層級聯結並整合資料。
PolyBase 可讓您直接使用 Transact-SQL 來聯結資料。
PolyBase 不需要您在 Hadoop 環境中安裝其他軟體。 您可以使用與用來查詢資料庫資料表相同的 T-SQL 語法來查詢外部資料。 由 PolyBase 所實作的支援動作都同時自動發生。 查詢作者不需要具備關於外部來源的任何知識。
PolyBase 用途
PolyBase 可在 SQL Server 中啟用下列情節:
查詢 Azure Blob 儲存體中所儲存的資料。 Azure Blob 儲存體是儲存資料以供 Azure 服務使用的便利位置。 PolyBase 可讓您輕鬆地使用 T-SQL 來存取資料。
從 SQL Server 執行個體或 PDW 查詢儲存在 Hadoop 中的資料。 使用者必須將資料儲存於符合成本效益的分散式且可擴充的系統中,例如 Hadoop。 PolyBase 可讓您輕鬆地使用 T-SQL 來查詢資料。
從 Hadoop、Azure Blob 儲存體或 Azure Data Lake Store 匯入資料。 將 Hadoop 或 Azure Blob 儲存體或 Azure Data Lake Store中的資料匯入至關聯式資料表,以利用 Microsoft SQL 資料行存放區技術和分析功能的速度。 因而不需個別的 ETL 或匯入工具。
將資料匯出至 Hadoop、Azure Blob 儲存體或 Azure Data Lake Store。 將資料封存至 Hadoop、Azure Blob 儲存體或 Azure Data Lake Store 以達成符合成本效益的儲存體,並讓它持續上線,方便進行存取。
與 BI 工具整合。 使用 PolyBase 搭配 Microsoft 的商務智慧和分析堆疊,或使用與 SQL Server 相容的任何協力廠商工具。
效能
檔案數目或可查詢的資料量沒有硬性限制。 查詢效能取決於資料量、資料格式、資料組織方式,以及查詢和聯結的複雜性。
如需 PolyBase 效能指導和建議的詳細資訊,請參閱 PolyBase for SQL Server 中的效能考量。
升級到 SQL Server 2022
從 2022 SQL Server 2022 (16.x) Hortonworks Data Platform (HDP) 和 Cloudera Distributed Hadoop (CDH) 開始不再受到支援。 由於這些變更,在移轉至 SQL Server 2022 (16.x) 之前,必須先手動卸除在舊版 SQL Server 上使用 TYPE = HADOOP
或 Azure 儲存體的 PolyBase 外部資料來源。 卸除外部資料來源也需要卸除相關聯的資料庫物件,例如資料庫範圍認證和外部表格。
必須根據下表的參考資料表來變更 Azure 儲存體連接器:
外部資料來源 | 寄件者 | 收件者 |
---|---|---|
Azure Blob 儲存體 | wasb[s] | abs |
ADLS Gen 2 | abfs[s] | adls |
開始使用
使用 PolyBase 之前,您必須在 Windows 上安裝 PolyBase 或在 Linux 上安裝 PolyBase,並在必要時在 sp_configure 中啟用 PolyBase。
如需 PolyBase 功能的教學課程,請參閱 SQL Server 2022 中的 PolyBase 使用者入門。
如需各種外部資料來源的更多教學課程,請參閱:
其他平台上的資料虛擬化
其他平台上也提供資料虛擬化功能: