Teradata 移轉的設計和效能

本文是七部分系列的第一部分,提供如何從 Teradata 遷移至 Azure Synapse Analytics 的指引。 本文的重點在於設計和效能的最佳做法。

概觀

許多 Teradata 數據倉儲系統的現有使用者都想要利用新式雲端環境所提供的創新功能。 基礎結構即服務 (IaaS) 和平臺即服務 (PaaS) 雲端環境可讓您將基礎結構維護和平台開發等工作委派給雲端提供者。

提示

Azure 環境不僅僅是一個資料庫,還包含一組完整的功能和工具。

雖然 Teradata 和 Azure Synapse Analytics 都是使用大量平行處理 (MPP) 技術的 SQL 資料庫,在超大型數據量上達到高查詢效能,但方法有一些基本差異:

  • 舊版 Teradata 系統通常會安裝在內部部署並使用專屬硬體,而 Azure Synapse 則是雲端式系統,並使用 Azure 儲存體 和計算資源。

  • 由於記憶體和計算資源在 Azure 環境中是分開的,而且具有彈性調整功能,因此這些資源可以獨立地向上或向下調整。

  • 您可以視需要暫停或調整 Azure Synapse 的大小,以減少資源使用率和成本。

  • 升級 Teradata 設定是涉及額外實體硬體以及可能冗長的資料庫重新設定或重載的主要工作。

Microsoft Azure 是全域可用的高度安全、可調整的雲端環境,其中包含 Azure Synapse,以及支援工具和功能的生態系統。 下圖摘要說明 Azure Synapse 生態系統。

Chart showing the Azure Synapse ecosystem of supporting tools and capabilities.

Azure Synapse 使用 MPP 和多個層級的自動化快取等技術,為常用數據提供最佳品種的關係資料庫效能。 您可以在獨立基準檢驗中看到這些技術的結果,例如 GigaOm 最近執行的一項,其會將 Azure Synapse 與其他熱門的雲端數據倉儲供應專案進行比較。 遷移至 Azure Synapse 環境的客戶會看到許多優點,包括:

  • 改善效能和價格/效能。

  • 提高靈活度並縮短價值時間。

  • 更快速的伺服器部署和應用程式開發。

  • 彈性延展性- 僅支付實際使用量的費用。

  • 改善安全性/合規性。

  • 降低記憶體和災害復原成本。

  • 整體 TCO 較低、成本控制更好,以及簡化的營運支出 (OPEX)。

若要充分發揮這些優點,請將新的或現有的數據和應用程式遷移至 Azure Synapse 平臺。 在許多組織中,移轉包括將現有的數據倉儲從舊版內部部署平臺,例如 Teradata 移至 Azure Synapse。 概括而言,移轉程式包含下列步驟:

    準備

  • 定義範圍—要移轉的內容。

  • 建置移轉的數據和程式清查。

  • 定義數據模型變更(如果有的話)。

  • 定義源數據擷取機制。

  • 識別要使用的適當 Azure 和第三方工具和功能。

  • 在新的平臺上提前訓練員工。

  • 設定 Azure 目標平臺。

    移轉

  • 從小型和簡單開始。

  • 盡可能自動化。

  • 利用 Azure 內建工具和功能來減少移轉工作。

  • 移轉數據表和檢視的元數據。

  • 遷移要維護的歷程記錄數據。

  • 移轉或重構預存程式和商務程式。

  • 移轉或重構 ETL/ELT 累加式載入程式。

    移轉後

  • 監視並記錄程式的所有階段。

  • 使用獲得的經驗來建置未來移轉的範本。

  • 視需要重新設計數據模型(使用新的平臺效能和延展性)。

  • 測試應用程式和查詢工具。

  • 基準檢驗並優化查詢效能。

本文提供將數據倉儲從現有 Netezza 環境移轉至 Azure Synapse 時的效能優化一般資訊和指導方針。 效能優化的目標是在架構移轉之後,在 Azure Synapse 中達到相同或更好的數據倉儲效能。

設計考量

移轉範圍

當您準備從 Teradata 環境移轉時,請考慮下列移轉選擇。

選擇初始移轉的工作負載

一般而言,舊版 Teradata 環境經過一段時間的演進,以包含多個主題領域和混合工作負載。 當您決定要從何處開始移轉專案時,請選擇一個區域,讓您可以:

  • 藉由快速提供新環境的優點,證明移轉至 Azure Synapse 的可行性。

  • 讓您的內部技術人員能夠透過移轉其他區域時將使用的流程和工具,獲得相關經驗。

  • 建立範本,以進一步移轉來源 Teradata 環境,以及已就緒的目前工具和程式。

從 Teradata 進行初始移轉的好候選項目 環境支援 上述專案,以及:

  • 實作 BI/分析工作負載,而不是在線事務處理 (OLTP) 工作負載。

  • 具有數據模型,例如星形或雪花式架構,可透過最少的修改進行移轉。

提示

建立需要移轉的物件清查,並記錄移轉程式。

初始移轉中遷移的數據量應該足以示範 Azure Synapse 環境的功能和優點,但不會太大,無法快速示範價值。 1-10 TB 範圍的大小是典型的。

針對您的初始移轉專案,將風險、精力和移轉時間降至最低,以便快速查看 Azure 雲端環境的優點,將移轉的範圍限制為只有數據超市,例如 Teradata 倉儲的 OLAP DB 部分。 隨即轉移和分階段移轉方法會將初始移轉的範圍限製為僅數據超市,且不會解決更廣泛的移轉層面,例如 ETL 移轉和歷程記錄數據遷移。 不過,一旦移轉的數據超市層重新填入數據和所需的建置程式,您就可以在專案的後續階段中處理這些層面。

隨即轉移與移轉與階段式方法

一般而言,不論計劃移轉的目的和範圍為何,都有兩種類型的移轉:依原狀隨即轉移,以及納入變更的階段式方法。

隨即轉移

在隨即轉移中,現有的數據模型,例如星型架構,會保持不變地移轉至新的 Azure Synapse 平臺。 這種方法可藉由減少移轉至 Azure 雲端環境的優點所需的工作,將風險和移轉時間降到最低。 隨即轉移移轉適合下列案例:

  • 您有現有的 Teradata 環境,具有要移轉的單一數據超市,或
  • 您有現有的 Teradata 環境,且數據已經位於設計完善的星形或雪花式架構中,或
  • 您正面臨移至新式雲端環境的時間和成本壓力。

提示

隨即轉移是良好的起點,即使後續階段實作數據模型的變更也一樣。

併入變更的階段式方法

如果舊版數據倉儲在很長一段時間內發展,您可能需要重新設計它,以維持所需的效能等級。 您可能也必須重新設計來支援新的數據,例如物聯網(IoT) 串流。 在重新工程程式中,移轉至 Azure Synapse 以取得可調整雲端環境的優點。 移轉也可以包含基礎數據模型中的變更,例如從 Inmon 模型移至數據保存庫。

Microsoft 建議將現有的數據模型依現狀移至 Azure(選擇性地在 Azure 中使用 VM Teradata 實例),並使用 Azure 環境的效能和彈性來套用重新工程變更。 如此一來,您就可以使用 Azure 的功能進行變更,而不會影響現有的來源系統。

使用 Azure VM Teradata 實例作為移轉的一部分

從內部部署 Teradata 環境移轉時,您可以利用 Azure 中的雲端記憶體和彈性延展性,在 VM 內建立 Teradata 實例。 此方法會將 Teradata 實例與目標 Azure Synapse 環境共置。 您可以使用標準 Teradata 公用程式,例如 Teradata Parallel Data Transporter,有效率地移動要移轉至 VM 實例的 Teradata 數據表子集。 然後,所有進一步的移轉工作都可以在 Azure 環境中進行。 此方法有數個優點:

  • 在初始復寫數據之後,來源系統不會受到移轉工作的影響。

  • 熟悉的 Teradata 介面、工具和公用程式可在 Azure 環境中使用。

  • Azure 環境避開內部部署來源系統與雲端目標系統之間網路頻寬可用性的任何潛在問題。

  • Azure Data Factory 之類的工具可以呼叫 Teradata Parallel Transporter 等公用程式,以有效率且快速地移轉數據。

  • 您可以在 Azure 環境中完全協調及控制移轉程式。

提示

使用 Azure VM 建立暫時的 Teradata 實例,以加速移轉,並將對來源系統的影響降到最低。

使用 Azure Data Factory 實作元數據驅動移轉

您可以使用 Azure 環境的功能,將移轉程式自動化並協調。 這種方法可將現有 Netezza 環境的效能降低到最低,這可能已經接近容量。

Azure Data Factory 是雲端式數據整合服務,可支援在雲端中建立數據驅動工作流程,以協調及自動化數據行動和數據轉換。 您可以使用 Data Factory 來建立及排程從不同數據存放區擷取數據的數據驅動工作流程(管線)。 Data Factory 可以使用 Azure HDInsight Hadoop、Spark、Azure Data Lake Analytics 和 Azure 機器學習 等計算服務來處理和轉換數據。

當您打算使用 Data Factory 設施來管理移轉程式時,請建立元數據,列出要移轉的所有數據表及其位置。

Teradata 與 Azure Synapse 之間的設計差異

如先前所述,Teradata 與 Azure Synapse Analytics 資料庫之間方法有一些基本差異,接下來會討論這些差異。

多個資料庫與單一資料庫和架構

Teradata 環境通常包含多個不同的資料庫。 例如,可能有個別的資料庫:數據擷取和臨時表、核心倉儲數據表和數據超市(有時稱為語意層)。 ETL 或 ELT 管線程式可能會實作跨資料庫聯結,並在不同的資料庫之間行動數據。

相反地,Azure Synapse 環境包含單一資料庫,並使用架構將數據表分成邏輯分隔群組。 建議您使用目標 Azure Synapse 資料庫中的一系列架構來模擬從 Teradata 環境移轉的個別資料庫。 如果 Teradata 環境已經使用架構,當您將現有的 Teradata 數據表和檢視移至新環境時,您可能需要使用新的命名慣例。 例如,您可以將現有的 Teradata 架構和數據表名稱串連至新的 Azure Synapse 數據表名稱,並使用新環境中的架構名稱來維護原始不同的資料庫名稱。 如果架構合併命名有點,Azure Synapse Spark 可能會有問題。 雖然您可以使用基礎表頂端的 SQL 檢視來維護邏輯結構,但這種方法可能會有缺點:

  • Azure Synapse 中的檢視是唯讀的,因此數據的任何更新都必須在基礎基表上進行。

  • 已經存在一或多個檢視層,而且新增額外的檢視層可能會影響效能和支援性,因為巢狀檢視難以進行疑難解答。

提示

將多個資料庫合併成 Azure Synapse 內的單一資料庫,並使用架構名稱以邏輯方式分隔數據表。

資料表考量

當您在不同環境之間移轉數據表時,通常只有原始數據和描述其實際移轉的元數據。 來源系統的其他資料庫元素,例如索引,通常不會移轉,因為它們在新的環境中可能不必要或以不同的方式實作。 來源環境中的效能優化,例如索引,表示您可以在新環境中新增效能優化的位置。 例如,如果來源 Teradata 環境中的數據表具有非唯一的次要索引 (NUSI),則建議在 Azure Synapse 內建立非叢集索引。 數據表復寫等其他原生效能優化技術可能比直接類似索引建立更適用。

提示

現有的索引表示移轉倉儲中編製索引的候選專案。

資料庫的高可用性

Teradata 支援透過 FALLBACK 選項跨節點的數據複寫,該選項會將實際位於指定節點上的數據表數據列復寫到系統中的另一個節點。 此方法可確保如果節點失敗,且提供故障轉移案例的基礎,數據將不會遺失。

Azure Synapse Analytics 中高可用性架構的目標是保證資料庫已啟動並執行 99.9%,而不必擔心維護作業和中斷的影響。 如需 SLA 的詳細資訊,請參閱 Azure Synapse Analytics 的 SLA。 Azure 會自動處理重要的服務工作,例如修補、備份和 Windows 和 SQL 升級。 Azure 也會自動處理非計劃性事件,例如基礎硬體、軟體或網路中的失敗。

Azure Synapse 中的數據記憶體會自動 備份 快照集。 這些快照集是建立還原點之服務的內建功能。 您無須啟用此功能。 使用者目前無法刪除服務用來維護服務等級協定 (SLA) 進行復原的自動還原點。

Azure Synapse Dedicated SQL 集區會全天擷取數據倉儲的快照集,以建立 7 天可用的還原點。 無法變更此保留期間。 Azure Synapse 支援八小時的恢復點目標 (RPO)。 您可以從過去七天內拍攝的任何快照集,還原主要區域中的數據倉儲。 如果您需要更細微的備份,您可以使用另一個使用者定義的選項。

不支援的 Teradata 資料表類型

Teradata 支援時間序列和時態數據的特殊數據表類型。 Azure Synapse 中不支援這些數據表類型的語法和部分函式。 不過,您可以將數據遷移至 Azure Synapse 中的標準數據表,方法是對應至適當的數據類型,以及編製索引或分割日期/時間數據行。

提示

Azure Synapse 中的標準數據表可以支援已移轉的 Teradata 時間序列和時態數據。

Teradata 會實作時態查詢功能,方法是使用查詢重寫在時態查詢中新增其他篩選,以限制適用的日期範圍。 如果您打算從來源 Teradata 環境移轉這項功能,請將其他篩選新增至相關的時態查詢。

Azure 環境支援 時間序列深入解析,以大規模分析時間序列數據。 這項功能的目標是IoT資料分析應用程式。

SQL DML 語法差異

Teradata SQL 與 Azure Synapse T-SQL 之間存在 SQL 數據操作語言 (DML) 語法差異

  • QUALIFY:Teradata 支援 QUALIFY 運算符。 例如:

    SELECT col1
    FROM tab1
    WHERE col1='XYZ'
    QUALIFY ROW_NUMBER () OVER (PARTITION by
    col1 ORDER BY col1) = 1;
    

    對等的 Azure Synapse 語法為:

    SELECT * FROM (
    SELECT col1, ROW_NUMBER () OVER (PARTITION by col1 ORDER BY col1) rn
    FROM tab1 WHERE col1='XYZ'
    ) WHERE rn = 1;
    
  • 日期算術:Azure Synapse 具有 運算符,例如 DATEADDDATEDIFF,可用於 DATEDATETIME 字段。 Teradata 支援日期的直接減法,例如 SELECT DATE1 - DATE2 FROM...

  • GROUP BY:針對 GROUP BY 序數,明確提供 T-SQL 資料行名稱。

  • LIKE ANY:Teradata 支援 LIKE ANY 語法,例如:

    SELECT * FROM CUSTOMER
    WHERE POSTCODE LIKE ANY
    ('CV1%', 'CV2%', 'CV3%');
    

    Azure Synapse 語法中的對等專案為:

    SELECT * FROM CUSTOMER
    WHERE
    (POSTCODE LIKE 'CV1%') OR (POSTCODE LIKE 'CV2%') OR (POSTCODE LIKE 'CV3%');
    
  • 根據系統設定,Teradata 中的字元比較預設可能會不區分大小寫。 在 Azure Synapse 中,字元比較一律會區分大小寫。

函式、預存程式、觸發程式和序列

從 Teradata 等成熟環境移轉數據倉儲時,您可能需要移轉簡單數據表和檢視以外的元素。 範例包括函式、預存程式、觸發程式和序列。 檢查 Azure 環境中的工具是否可以取代函式、預存程式和序列的功能,因為使用內建 Azure 工具通常比重新編碼 Azure Synapse 的元素更有效率。

在準備階段中,建立需要移轉的物件清查、定義處理物件的方法,並在移轉計劃中配置適當的資源。

數據整合合作夥伴 提供工具和服務,可將函式、預存程式和序列的移轉自動化。

下列各節會進一步討論函式、預存程式和序列的移轉。

函式

如同大部分的資料庫產品,Teradata 支援 SQL 實作內的系統和使用者定義函式。 當您將舊版資料庫平臺移轉至 Azure Synapse 時,通常不需要變更即可移轉一般系統函式。 某些系統函式的語法可能稍有不同,但任何必要的變更都可以自動化。

針對在 Azure Synapse 中沒有對等的 Teradata 系統函式或任意使用者定義函式,請使用目標環境語言重新編碼這些函式。 Azure Synapse 會使用 Transact-SQL 語言來實作使用者定義函式。

預存程序

大部分的新式資料庫產品都支援在資料庫內儲存程式。 Teradata 會為此目的提供SPL語言。 預存程式通常同時包含 SQL 語句和程式邏輯,並傳回數據或狀態。

Azure Synapse 支援使用 T-SQL 的預存程式,因此您必須以該語言重新編碼任何已移轉的預存程式。

觸發程序

Azure Synapse 不支援觸發程式建立,但可以使用 Azure Data Factory 來實作觸發程式建立。

序列

Azure Synapse 會以類似 Teradata 的方式來處理序列,而且您可以使用 IDENTITY 資料行或 SQL 程式代碼來實作序列,以產生數列中下一個序號。 序列提供唯一的數值,您可以做為主鍵的 Surrogate 索引鍵值。

從 Teradata 環境擷取元數據和數據

數據定義語言 (DDL) 產生

ANSI SQL 標準會定義資料定義語言 (DDL) 命令的基本語法。 Teradata CREATE TABLECREATE VIEWAzure Synapse 等一些 DDL 命令很常見,但也提供實作特定的功能,例如索引編製、數據表散發和分割選項。

您可以編輯現有的 Teradata CREATE TABLECREATE VIEW 腳本,以在 Azure Synapse 中達成對等的定義。 若要這樣做,您可能需要使用 修改過的數據類型 ,並移除或修改 Teradata 特定子句,例如 FALLBACK

不過,指定現有 Teradata 環境內數據表和檢視目前定義的所有資訊都會保留在系統目錄數據表內。 這些數據表是這項資訊的最佳來源,因為它保證是最新且完整的。 使用者維護的檔案可能無法與目前的數據表定義同步。

在 Teradata 環境中,系統目錄資料表會指定目前的數據表和檢視定義。 與使用者維護的檔不同,系統目錄資訊一律會完整且與目前的數據表定義同步。 藉由使用 之類的 DBC.ColumnsV目錄檢視,您可以存取系統目錄資訊,以產生 CREATE TABLE 在 Azure Synapse 中建立對等數據表的 DDL 語句。

提示

使用現有的 Teradata 元數據,將 Azure Synapse 的 CREATE TABLECREATE VIEW DDL 產生自動化。

您也可以使用 第三方 移轉和 ETL 工具來處理系統類別目錄資訊,以達到類似的結果。

從 Teradata 擷取數據

您可以使用基本 Teradata 查詢(BTEQ)、Teradata FastExport 或 Teradata Parallel Transporter (TPT) 等標準 Teradata 公用程式,將原始數據表數據從 Teradata 數據表擷取到一般分隔的檔案,例如 CSV 檔案。 使用 TPT 盡可能有效率地擷取數據表數據。 TPT 使用多個平行 FastExport 數據流來達到最高的輸送量。

提示

使用 Teradata Parallel Transporter 來擷取最有效率的數據。

直接從 Azure Data Factory 呼叫 TPT。 這是在 Azure 環境中 VM 內執行之 Teradata 內部部署實例和 Teradata 實例的數據遷移建議方法。

擷取的數據檔應包含 CSV、優化數據列單欄式或 Parquet 格式的分隔文字。

如需從 Teradata 環境移轉資料和 ETL 的詳細資訊,請參閱 Teradata 移 轉的資料移轉、ETL 和載入。

Teradata 移轉的效能建議

移轉至 Azure Synapse 之後,效能優化的目標是相同或更好的資料倉儲效能。

提示

在移轉開始時,優先熟悉 Azure Synapse 中的微調選項。

效能微調方法的差異

本節強調 Teradata 與 Azure Synapse 之間的低階效能微調實作差異。

資料散發選項

為了達到效能,Azure Synapse 是使用多節點架構所設計,並使用平行處理。 若要在 Azure Synapse 中優化個別資料表效能,您可以使用 語句在 語句 DISTRIBUTIONCREATE TABLE 定義資料散發選項。 例如,您可以指定雜湊分散式資料表,以使用決定性雜湊函式,將資料表資料列分散到計算節點。 目標是在執行查詢時減少在處理節點之間移動的資料量。

對於大型資料表到大型資料表聯結,雜湊散發一個或理想情況下,其中一個聯結資料行上的這兩個數據表都有廣泛的值,以協助確保平均分佈。 在本機執行聯結處理,因為將聯結的資料列會共置在相同的處理節點上。

Azure Synapse 也透過小型資料表複寫,支援小型資料表與大型資料表之間的本機聯結。 例如,請考慮星型架構模型內的小型維度資料表和大型事實資料表。 Azure Synapse 可以跨所有節點複寫較小的維度資料表,以確保大型資料表的任何聯結索引鍵值都有相符的本機可用維度資料列。 小型維度資料表的維度資料表複寫額外負荷相對較低。 對於大型維度資料表,雜湊散發方法更合適。 如需資料散發選項的詳細資訊,請參閱 使用複寫資料表 的設計指引和 設計分散式資料表 的指引。

資料索引編制

Azure Synapse 支援數個使用者可定義的索引選項,這些選項與 Teradata 中實作的索引選項不同。 如需 Azure Synapse 中不同索引選項的詳細資訊,請參閱 專用 SQL 集區資料表 上的索引。

來源 Teradata 環境中現有的索引提供有用的資料使用量指示,以及 Azure Synapse 環境中索引的候選資料行。

資料分割

在企業資料倉儲中,事實資料表可以包含數十億個數據列。 資料分割可將這些資料表分割成個別部分,以減少處理的資料量,藉此優化這些資料表的維護和查詢效能。 在 Azure Synapse 中 CREATE TABLE ,語句會定義資料表的資料分割規格。 只有分割非常大的資料表,並確保每個分割區至少包含 6000 萬個數據列。

每個資料表只能使用一個欄位進行資料分割。 該欄位通常是日期欄位,因為許多查詢會依日期或日期範圍進行篩選。 您可以使用 (CTAS) 語句,在初始載入 CREATE TABLE AS 之後變更資料表的資料分割,以使用新的散發重新建立資料表。 如需 Azure Synapse 中資料分割的詳細討論,請參閱 在專用 SQL 集 區中分割資料表。

資料表統計資料

您應該藉由在 ETL/ELT 作業的統計資料步驟中 建置,以確保資料表上的統計資料 是最新的。

用於載入資料的 PolyBase 或 COPY INTO

PolyBase 支援使用平行載入資料流程,有效率地將大量資料載入至資料倉儲。 如需詳細資訊,請參閱 PolyBase 資料載入策略

COPY INTO 也支援高輸送量的資料擷取,以及:

  • 從資料夾和子資料夾內的所有檔案擷取資料。

  • 從相同儲存體帳戶中的多個位置擷取資料。 您可以使用逗號分隔路徑來指定多個位置。

  • Azure Data Lake 儲存體 (ADLS) 和 Azure Blob 儲存體。

  • CSV、PARQUET 和 ORC 檔案格式。

工作負載管理

執行混合工作負載可能會對忙碌的系統造成資源挑戰。 成功的 工作負載管理 配置可有效管理資源、確保高效資源使用率,並將投資報酬率最大化(ROI)。 工作負載分類 工作負載重要性 工作負載隔離 可讓您更充分掌控工作負載如何使用系統資源。

工作負載 管理指南 說明分析工作負載、 管理和監視工作負載重要性 的技術,以及將資源類別轉換為工作負載群組 的步驟 使用 DMV 上的Azure 入口網站 和 T-SQL 查詢來監視工作負載,以確保有效率地利用適用的資源。

下一步

若要瞭解 Teradata 移轉的 ETL 和負載,請參閱此系列中的下一篇文章: 資料移轉、ETL 和 Teradata 移轉的 載入。