使用以下方式連線至 Teradata 資料倉儲 AWS Schema Conversion Tool - AWS Schema Conversion Tool

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用以下方式連線至 Teradata 資料倉儲 AWS Schema Conversion Tool

您可以使用 AWS SCT 將結構描述、程式碼物件和應用程式程式碼從 Teradata 轉換為 Amazon Redshift 或 Amazon Redshift,並組合使 AWS Glue 用。

Teradata 作為來源的權限

使用 Teradata 作為來源需要下列權限:

  • SELECT開啟 DBC

  • SELECT開啟 SYSUDTLIB

  • SELECT開啟 SYSLIB

  • SELECT開啟 <source_database>

  • CREATEPROCEDURE開啟 <source_database>

在前面的範例中,取代 <source_database> 含來源資料庫名稱的預留位置。

AWS SCT 需要HELPPROCEDURE對來源資料庫中所有程序執行的CREATEPROCEDURE權限。 AWS SCT 不會使用此權限在來源 Teradata 資料庫中建立任何新物件。

連接到太數據作為源

使用以下程序,透過 AWS Schema Conversion Tool連接到您的 Teradata 來源資料庫。

若要連接到 Teradata 來源資料庫
  1. 在中 AWS Schema Conversion Tool,選擇「新增來源」。

  2. 選擇 Teradata,然後選擇「下一步」。

    這時系統顯示「添加源」對話框。

  3. 在「連線名稱」中,輸入資料庫的名稱。 AWS SCT 在左側面板的樹狀結構中顯示此名稱。

  4. 使用資料庫認證來源 AWS Secrets Manager 或手動輸入:

    • 若要使用來自 Secrets Manager 的資料庫認證,請遵循下列指示:

      1. 在「機AWS 密」中,選擇密碼的名稱。

      2. 選擇填入來自 Secrets Manager 的資料庫連線對話方塊中自動填入所有值。

      如需使用來自 Secrets Manager 之資料庫認證的資訊,請參閱AWS Secrets Manager 中的配置 AWS Schema Conversion Tool

    • 若要手動輸入 Teradata 來源資料庫連線資訊,請遵循下列指示:

      參數 動作
      連線名稱 (Connection name)

      輸入資料庫的名稱。 AWS SCT 在左側面板的樹狀結構中顯示此名稱。

      伺服器名稱

      輸入來源資料庫伺服器的網域名稱系統 (DNS) 名稱或 IP 位址。

      伺服器連接埠

      輸入用於連接到來源資料庫伺服器的連接埠。

      資料庫

      輸入 Teradata 資料庫的名稱。

      使用者名稱密碼

      輸入要連線到來源資料庫伺服器的資料庫認證。

      AWS SCT 只有當您選擇連線至專案中的資料庫時,才會使用密碼來連線至來源資料庫。為了防止公開來源資料庫的密碼,預設 AWS SCT 不會儲存密碼。如果您關閉 AWS SCT 專案再重新開啟,系統會在需要時提示您輸入密碼以便連接到您的來源資料庫。

      儲存密碼

      AWS SCT 創建一個安全的文件庫來存儲SSL證書和數據庫密碼。開啟此選項後,您可以儲存資料庫密碼並快速連線到資料庫,而無需輸入密碼。

      加密資料

      選擇此選項可加密您與資料庫交換的資料。如果您選擇此選項,則連接埠號碼 443 將用於在 AWS SCT 與 Teradata 資料庫之間傳輸加密資料。

      元數據驅動程序路徑

      輸入用於連接至來源資料庫的驅動程式路徑。如需詳細資訊,請參閱安裝JDBC驅動程式 AWS Schema Conversion Tool

      如果您在全域專案設定中存放驅動程式路徑,驅動程式路徑不會顯示在連線對話方塊中。如需詳細資訊,請參閱在全域設定中儲存驅動程式路徑

  5. 選擇「測試連線」以確認是否 AWS SCT 可以連線到來源資料庫。

  6. 選擇「Connect」以連線到來源資料庫。

透過 Teradata 來源使用LDAP驗證

若要為在 Windows 中執行 Microsoft 作用中目錄的 Teradata 使用者設定輕量型目錄存取通訊協定 (LDAP) 驗證,請使用下列程序。

在下列程序中,作用中的目錄網域是test.local.com。Windows 服務器是DC,並且它使用默認設置進行配置。下列指令碼會建立使用test_ldap中目錄帳戶,而且此帳戶會使用test_ldap密碼。

要設置LDAP身份驗證的 Teradata 用戶誰運行 Microsoft 活動目錄視窗
  1. /opt/teradata/tdat/tdgss/site 目錄中,編輯檔案 TdgssUserConfigFile.xml。將LDAP區段變更為下列項目。

    AuthorizationSupported="no" LdapServerName="DC.test.local.com" LdapServerPort="389" LdapServerRealm="test.local.com" LdapSystemFQDN="dc= test, dc= local, dc=com" LdapBaseFQDN="dc=test, dc=local, dc=com"
  2. 透過執行組態來套用變更,如下所示。

    #cd /opt/teradata/tdgss/bin #./run_tdgssconfig
  3. 透過執行以下命令來測試組態。

    # /opt/teradata/tdat/tdgss/14.10.03.01/bin/tdsbind -u test_ldap -w test_ldap

    輸出格式應類似以下內容。

    LdapGroupBaseFQDN: dc=Test, dc=local, dc=com LdapUserBaseFQDN: dc=Test, dc=local, dc=com LdapSystemFQDN: dc= test, dc= local, dc=com LdapServerName: DC.test.local.com LdapServerPort: 389 LdapServerRealm: test.local.com LdapClientUseTls: no LdapClientTlsReqCert: never LdapClientMechanism: SASL/DIGEST-MD5 LdapServiceBindRequired: no LdapClientTlsCRLCheck: none LdapAllowUnsafeServerConnect: yes UseLdapConfig: no AuthorizationSupported: no FQDN: CN=test, CN=Users, DC=Anthem, DC=local, DC=com AuthUser: ldap://DC.test.local.com:389/CN=test1,CN=Users,DC=test,DC=local,DC=com DatabaseName: test Service: tdsbind
  4. TPA使用以下命令重新啟動。

    #tpareset -f "use updated TDGSSCONFIG GDO"
  5. 在 Teradata 資料庫中建立與 Active Directory 相同的使用者,如下所示。

    CREATE USER test_ldap AS PERM=1000, PASSWORD=test_ldap; GRANT LOGON ON ALL TO test WITH NULL PASSWORD;

如果您在使用中目錄中變更使用LDAP者的使用者密碼,請在LDAP模式下連線至 Teradata 時指定此新密碼。在DEFAULT模式下,您可以使用使用LDAP者名稱和任何密碼連線到 Teradata。

在來源 Teradata 資料倉儲中設定統計資料收集

若要轉換來源 Teradata 資料倉儲,請 AWS SCT 使用統計資料來優化轉換後的 Amazon Redshift 資料倉儲。您可以在中收集統計資料 AWS SCT 或上傳統計資料檔案。如需詳細資訊,請參閱收集或上傳統計資料

若要確定 AWS SCT 可以從資料倉儲收集統計資料,請完成下列先決條件工作。

若要從 Teradata 資料倉儲收集統計資料
  1. 執行下列查詢,以記住資料倉儲中所有資料表的統計資料。

    collect summary statistics on table_name;

    在上述範例中,取代 table_name 使用源表的名稱。針對您轉換的每個資料表重複查詢。

  2. 執行下列查詢以決定使用者的帳戶字串,該字串用於轉換資料倉儲。

    select * from dbc.accountinfo where username ='user_name'
  3. 使用上一個範例中的帳戶字串,為特定使用者開啟查詢記錄。

    BEGIN QUERY LOGGING WITH OBJECTS, SQL ON ALL ACCOUNT=('$M$BUSI$S$D$H');

    或者,開啟所有資料庫使用者的查詢記錄。

    BEGIN QUERY LOGGING WITH SQL, OBJECTS LIMIT SQLTEXT=0 ON ALL;

完成收集資料倉儲統計資料之後,請關閉查詢記錄。若要這麼做,您可以使用下列程式碼範例。

end query logging with explain, objects, sql on all account=(' $M$BUSI$S$D$H');

從來源 Teradata 資料倉儲以離線模式收集統計資料

在 Teradata 資料倉儲中設定統計資料收集之後,您就可以在 AWS SCT 專案中收集統計資料。或者,您也可以使用基本 Teradata 查詢 (BTEQ) 指令碼,以離線模式收集統計資料。然後,您可以將包含收集到統計信息的文件上傳到您的 AWS SCT 項目中。如需詳細資訊,請參閱收集或上傳統計資料

在離線模式下從 Teradata 資料倉儲收集統計資料
  1. 使用下列內容建立off-line_stats.bteq指令碼。

    .OS IF EXIST column-stats-tera.csv del /F column-stats-tera.csv .OS IF EXIST table-stats-tera.csv del /F table-stats-tera.csv .OS IF EXIST column-skew-script-tera.csv del /F column-skew-script-tera.csv .OS IF EXIST column-skew-stats-tera.csv del /F column-skew-stats-tera.csv .OS IF EXIST query-stats-tera.csv del /F query-stats-tera.csv .LOGON your_teradata_server/your_login, your_password .EXPORT REPORT FILE = table-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 SELECT '"' || OREPLACE(COALESCE(c.DatabaseName, ''), '"', '""') || '";' || '"' || OREPLACE(COALESCE(c.TableName, ''), '"', '""') || '";' || '"' || TRIM(COALESCE(s.reference_count, '0')) || '";' || '"' || TRIM(COALESCE(CAST(p.RowCount AS BIGINT), '0')) || '";' || '"' || CAST(CAST(w.size_in_mb AS DECIMAL (38,1) FORMAT 'Z9.9') AS VARCHAR(38)) || '";' || '"' || TRIM(COALESCE(r.stat_fk_dep_count, '0')) || '";' || '"' || CAST(CAST(current_timestamp(0) as timestamp(0) format 'YYYY-MM-DDBHH:MI:SS') as VARCHAR(19)) || '"' (TITLE '"database_name";"table_name";"reference_count";"row_count";"size_in_mb";"stat_fk_dep_count";"current_ts"') FROM (select databasename, tablename from DBC.tablesv where tablekind IN ('T','O') and databasename = 'your_database_name' ) c left join (select DatabaseName, TableName, max(RowCount) RowCount from dbc.tableStatsv group by 1,2)p on p.databasename = c.databasename and p.tablename = c.tablename left join (SELECT r.ChildDB as DatabaseName, r.ChildTable as TableName, COUNT(DISTINCT r.ParentTable) reference_count FROM DBC.All_RI_ChildrenV r GROUP BY r.ChildDB, r.ChildTable) s on s.databasename = c.databasename and s.tablename = c.tablename left join (SELECT r.ParentDB as DatabaseName, r.ParentTable as TableName, COUNT(DISTINCT r.ChildTable) stat_fk_dep_count FROM DBC.All_RI_ParentsV r GROUP BY r.ParentDB, r.ParentTable) r on r.databasename = c.databasename and r.tablename = c.tablename left join (select databasename, tablename, sum(currentperm)/1024/1024 as size_in_mb from dbc.TableSizeV group by 1,2) w on w.databasename = c.databasename and w.tablename = c.tablename WHERE COALESCE(r.stat_fk_dep_count,0) + COALESCE(CAST(p.RowCount AS BIGINT),0) + COALESCE(s.reference_count,0) > 0; .EXPORT RESET .EXPORT REPORT FILE = column-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 '"' || TRIM(COALESCE(CAST(t2.card AS BIGINT), '0')) || '";' || SELECT '"' || OREPLACE(COALESCE(trim(tv.DatabaseName), ''), '"', '""') || '";' || '"' || OREPLACE(COALESCE(trim(tv.TableName), ''), '"', '""') || '";' || '"' || OREPLACE(COALESCE(trim(tv.columnname), ''), '"', '""') || '";' || '"' || TRIM(COALESCE(CAST(t2.card AS BIGINT), '0')) || '";' || '"' || CAST(current_timestamp AS VARCHAR(19)) || '"' (TITLE '"database_name";"table_name";"column_name";"cardinality";"current_ts"') FROM dbc.columnsv tv LEFT JOIN ( SELECT c.DatabaseName AS DATABASE_NAME, c.TABLENAME AS TABLE_NAME, c.ColumnName AS COLUMN_NAME, c.UniqueValueCount AS CARD FROM dbc.tablestatsv c WHERE c.DatabaseName = 'your_database_name' AND c.RowCount <> 0 ) t2 ON tv.DATABASENAME = t2.DATABASE_NAME AND tv.TABLENAME = t2.TABLE_NAME AND tv.COLUMNNAME = t2.COLUMN_NAME WHERE t2.card > 0; .EXPORT RESET .EXPORT REPORT FILE = column-skew-script-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 SELECT 'SELECT CAST(''"' || TRIM(c.DatabaseName) || '";"' || TRIM(c.TABLENAME) || '";"' || TRIM(c.COLUMNNAME) || '";"'' || TRIM(CAST(COALESCE(MAX(cnt) * 1.0 / SUM(cnt), 0) AS NUMBER FORMAT ''9.9999'')) || ''";"'' || CAST(CURRENT_TIMESTAMP(0) AS VARCHAR(19)) || ''"'' AS VARCHAR(512)) AS """DATABASE_NAME"";""TABLE_NAME"";""COLUMN_NAME"";""SKEWED"";""CURRENT_TS""" FROM( SELECT COUNT(*) AS cnt FROM "' || c.DATABASENAME || '"."' || c.TABLENAME || '" GROUP BY "' || c.COLUMNNAME || '") t' || CASE WHEN ROW_NUMBER() OVER(PARTITION BY c.DATABASENAME ORDER BY c.TABLENAME DESC, c.COLUMNNAME DESC) <> 1 THEN ' UNION ALL' ELSE ';' END (TITLE '--SKEWED--') FROM dbc.columnsv c INNER JOIN (SELECT databasename, TABLENAME FROM dbc.tablesv WHERE tablekind = 'T' AND databasename = 'your_database_name') t ON t.databasename = c.databasename AND t.TABLENAME = c.TABLENAME INNER JOIN (SELECT databasename, TABLENAME, columnname FROM dbc.indices GROUP BY 1,2,3 WHERE TRANSLATE_CHK (databasename USING LATIN_TO_UNICODE) + TRANSLATE_CHK (TABLENAME USING LATIN_TO_UNICODE) + TRANSLATE_CHK (columnname USING LATIN_TO_UNICODE) = 0 ) i ON i.databasename = c.databasename AND i.TABLENAME = c.TABLENAME AND i.columnname = c.columnname WHERE c.ColumnType NOT IN ('CO','JN','N','++','VA','UT','AN','XM','A1','BO') ORDER BY c.TABLENAME, c.COLUMNNAME; .EXPORT RESET .EXPORT REPORT FILE = column-skew-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 10000 .RUN FILE = column-skew-script-tera.csv .EXPORT RESET .EXPORT REPORT FILE = query-stats-tera.csv .SET TITLEDASHES OFF .SET WIDTH 32000 SELECT '"' || RTRIM(CAST(SqlTextInfo AS VARCHAR(31900)), ';') || '";"' || TRIM(QueryCount) || '";"' || TRIM(QueryId) || '";"' || TRIM(SqlRowNo) || '";"' || TRIM(QueryParts) || '";"' || CAST(CURRENT_TIMESTAMP(0) AS VARCHAR(19)) || '"' (TITLE '"query_text";"query_count";"query_id";"sql_row_no";"query_parts";"current_ts"') FROM ( SELECT QueryId, SqlTextInfo, SqlRowNo, QueryParts, QueryCount, SUM(QueryFirstRow) OVER (ORDER BY QueryCount DESC, QueryId ASC, SqlRowNo ASC ROWS UNBOUNDED PRECEDING) AS topN FROM (SELECT QueryId, SqlTextInfo, SqlRowNo, QueryParts, QueryCount, CASE WHEN ROW_NUMBER() OVER (PARTITION BY QueryCount, SqlTextInfo ORDER BY QueryId, SqlRowNo) = 1 AND SqlRowNo = 1 THEN 1 ELSE 0 END AS QueryFirstRow FROM ( SELECT q.QueryId, q.SqlTextInfo, q.SqlRowNo, MAX(q.SqlRowNo) OVER (PARTITION BY q.QueryId) QueryParts, COUNT(q.SqlTextInfo) OVER (PARTITION BY q.SqlTextInfo) QueryCount FROM DBC.dbqlsqltbl q INNER JOIN ( SELECT QueryId FROM DBC.DBQLogTbl t WHERE TRIM(t.StatementType) IN ('SELECT') AND TRIM(t.AbortFlag) = '' AND t.ERRORCODE = 0 AND (CASE WHEN 'All users' IN ('All users') THEN 'All users' ELSE TRIM(t.USERNAME) END) IN ('All users') --user_name list AND t.StartTime > CURRENT_TIMESTAMP - INTERVAL '30' DAY GROUP BY 1 ) t ON q.QueryId = t.QueryId INNER JOIN ( SELECT QueryId FROM DBC.QryLogObjectsV WHERE ObjectDatabaseName = 'your_database_name' AND ObjectType = 'Tab' AND CollectTimeStamp > CURRENT_TIMESTAMP - INTERVAL '30' DAY GROUP BY 1 ) r ON r.QueryId = t.QueryId WHERE q.CollectTimeStamp > CURRENT_TIMESTAMP - INTERVAL '30' DAY ) t ) t WHERE SqlTextInfo NOT LIKE '%";"%' ) q WHERE QueryParts >=1 AND topN <= 50 ORDER BY QueryCount DESC, QueryId, SqlRowNo QUALIFY COUNT(QueryId) OVER (PARTITION BY QueryId) = QueryParts; .EXPORT RESET .LOGOFF .QUIT
  2. 建立執行您在上一個步驟中建立之BTEQ指令碼的td_run_bteq.bat檔案。此檔案使用下列內容。

    @echo off > off-line_stats1.bteq & setLocal enableDELAYedexpansion @echo off > off-line_stats2.bteq & setLocal enableDELAYedexpansion set old1=your_teradata_server set new1=%1 set old2=your_login set new2=%2 set old3=your_database_name set new3=%3 set old4=your_password set /p new4=Input %2 pass? for /f "tokens=* delims= " %%a in (off-line_stats.bteq) do ( set str1=%%a set str1=!str1:%old1%=%new1%! >> off-line_stats1.bteq echo !str1! ) for /f "tokens=* delims= " %%a in (off-line_stats1.bteq) do ( set str2=%%a set str2=!str2:%old2%=%new2%! >> off-line_stats2.bteq echo !str2! ) type nul > off-line_stats1.bteq for /f "tokens=* delims= " %%a in (off-line_stats2.bteq) do ( set str3=%%a set str3=!str3:%old3%=%new3%! >> off-line_stats1.bteq echo !str3! ) type nul > off-line_stats2.bteq for /f "tokens=* delims= " %%a in (off-line_stats1.bteq) do ( set str4=%%a set str4=!str4:%old4%=%new4%! >> off-line_stats2.bteq echo !str4! ) del .\off-line_stats1.bteq echo export starting... bteq -c UTF8 < off-line_stats.bteq > metadata_export.log pause
  3. 建立執行您在上一個步驟中建立的批次檔案的檔案。runme.bat此檔案使用下列內容。

    .\td_run_bteq.bat ServerName UserName DatabaseName

    runme.bat檔案中,取代 ServerName, UserNameDatabaseName 與您適用的值。

    然後,運行該runme.bat文件。對您轉換為 Amazon Redshift 的每個資料倉儲重複此步驟。

執行此指令碼之後,您會收到三個檔案,其中包含每個資料庫的統計資料。您可以將這些文件上傳到您的 AWS SCT 項目中。為此,請從項目的左側面板中選擇數據倉庫,然後打開上下文(右鍵單擊)菜單。選擇上傳統計資料

太數據到 Amazon Redshift 轉換設置

若要編輯 Teradata 到 Amazon Redshift 的轉換設定,請在中選擇 [設定] AWS SCT,然後選擇 [轉換設定]。從上面的列表中選擇太數據,然後選擇太數據-Amazon Redshift。 AWS SCT 顯示 Teradata 到 Amazon Redshift 轉換的所有可用設定。

Teradata 到 Amazon Redshift 轉換設定 AWS SCT 包含下列選項:

  • 用於限制轉換後代碼中行動項目的註釋數量。

    針對所選嚴重性及更高之行動項目的已轉換程式碼中新增註解,請選擇行動項目的嚴重性。 AWS SCT 在已轉換的程式碼中加入所選嚴重性及更高嚴重性之行動項目的註解。

    例如,若要將已轉換程式碼中的註解數量降到最低,請選擇僅限錯誤。若要在已轉換的程式碼中包含所有動作項目的註解,請選擇所有訊息

  • 設定 AWS SCT 可套用至目標 Amazon Redshift 叢集的表格數目上限。

    對於目標 Amazon Redshift 叢集的表格數目上限,請選擇 AWS SCT 可套用至 Amazon Redshift 叢集的表格數目。

    Amazon Redshift 的配額會限制不同叢集節點類型的使用資料表。如果選擇自動,請根據節點類型 AWS SCT 決定要套用至目標 Amazon Redshift 叢集的表格數目。選擇性地手動選擇值。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift 中的配額和限制

    AWS SCT 轉換所有來源表格,即使這個資料表超過 Amazon Redshift 叢集所能存放的空間也一樣。 AWS SCT 將轉換後的代碼存儲在項目中,並且不將其應用於目標數據庫。如果您在套用轉換後的程式碼時達到表格的 Amazon Redshift 叢集配額,則 AWS SCT 會顯示警告訊息。此外,請將表格 AWS SCT 套用至目標 Amazon Redshift 叢集,直到表格數量達到上限為止。

  • 將來源資料表的分割區遷移到 Amazon Redshift 中的個別表格。若要這樣做,請選取「使用UNIONALL檢視表」,然後輸入 AWS SCT 可為單一來源表格建立的目標表格數目上限。

    Amazon Redshift 不支援資料表分割。若要模擬此行為並使查詢執行更快, AWS SCT 可以將來源資料表的每個分區遷移到 Amazon Redshift 中的個別資料表。然後, AWS SCT 創建一個包含所有這些表中數據的視圖。

    AWS SCT 會自動決定來源資料表中的分割區數目。視來源資料表分割的類型而定,此數字可能會超過可套用至 Amazon Redshift 叢集之資料表的配額。若要避免達到此配額,請輸入 AWS SCT 可為單一來源表格分割區建立的目標表格數目上限。預設選項為 368 個資料表,代表一年 366 天的分割區,以及和分UNKNOWN割區的NO RANGE兩個資料表。

  • 將壓縮應用於 Amazon Redshift 表列。若要這樣做,請選取 [使用壓縮編碼]。

    AWS SCT 使用預設的 Amazon Redshift 演算法,自動將壓縮編碼指派給資料行。如需詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南中的壓縮編碼

    根據預設,Amazon Redshift 不會將壓縮套用至定義為排序金鑰和分配金鑰的資料行。您可以變更此行為,並將壓縮套用至這些資料行。若要這麼做,請選取 [使用KEY資料行的壓縮編碼]。只有當您選取 [使用壓縮編碼] 選項時,才能選取此選項。

  • 若要在陳述式的轉換程式碼中使用明確的資料行清SELECT *單,請選取 [使用明確資料行宣告]。

  • 若要模擬 Amazon Redshift 叢集中主金鑰和唯一金鑰的行為,請選取「模擬主金鑰和唯一金鑰的行為」。

    Amazon Redshift 不會強制執行唯一金鑰和主索引鍵,而且僅將其用於資訊目的。如果您在程式碼中使用這些條件約束,請確定在轉換後的程式碼中 AWS SCT 模擬其行為。

  • 為了確保目標 Amazon Redshift 表中的數據唯一性。若要這樣做,請選取「模擬SET表格的行為」。

    Teradata 會使用SET語法元素作為預設選項來建立表格。您無法在表格中新增重複的SET列。如果您的源代碼不使用此唯一性約束,請關閉此選項。在此情況下,轉換後的程式碼運作得更快。

    如果您的原始程式碼使用資料表中的SET選項做為唯一性限制條件,請開啟此選項。在這種情況下, AWS SCT 重寫轉換後的代碼中的INSERT..SELECT語句以模擬源數據庫的行為。

太數據到 Amazon Redshift 轉換優化設置

若要編輯 Teradata 到 Amazon Redshift 的轉換優化設定,請在中選擇 [設定] AWS SCT,然後選擇 [轉換設定]。從上面的列表中選擇太數據,然後選擇太數據-Amazon Redshift。在左窗格中,選擇 [最佳化策略]。 AWS SCT 顯示 Teradata 到亞馬遜紅移轉換的轉換優化設定。

Teradata 到 Amazon Redshift 轉換優化設置 AWS SCT 包括以下選項:

  • 要使用自動表優化工作。若要這麼做,請選取 [使用 Amazon Redshift 自動表格調整]。

    自動表格最佳化是 Amazon Redshift 中的一項自我調整程序,可自動優化資料表的設計。如需詳細資訊,請參Amazon Redshift 資料庫開發人員指南中的使用自動表格最佳化

    若只要依賴自動表格最佳化,請針對初始索引鍵選取策略選取選擇選擇選取策略

  • 若要使用您的策略選擇排序和分配鍵。

    您可以使用 Amazon Redshift 中繼資料、統計資訊或這兩個選項來選擇排序和分發金鑰。對於「最佳化策略」標籤上的「初始金鑰選取策略」,請選擇下列其中一個選項:

    • 使用中繼資料,忽略統計資訊

    • 忽略中繼資料,使用統計資訊

    • 使用中繼資料和統計資訊

    根據您選擇的選項,您可以選取最佳化策略。然後,針對每個策略輸入值 (0—100)。這些值定義每個策略的權重。使用這些加權值, AWS SCT 定義每個規則如何影響分佈和排序索引鍵的選擇。預設值以 AWS 移轉最佳作法為基礎。

    您可以為尋找小型資料表策略定義小型資料表的大小。對於「最小表格列計數」和「表格列數上限」,請輸入表格中的最小和最大列數,將其定義為小型表格。 AWS SCT 將ALL分佈型式套用至小型表格。在這種情況下,整個表的副本會分發到每個節點。

  • 若要設定策略詳細資訊。

    除了定義每個最佳化策略的權重之外,您還可以設定最佳化設定。若要這樣做,請選擇 [轉換優化]。

    • 在「排序索引鍵欄限制」中,輸入排序索引鍵中的欄數上限。

    • 在「傾斜臨界值」中,為欄輸入傾斜值的百分比 (0—100)。 AWS SCT 從分配索引鍵的候選清單中排除偏斜值大於臨界值的欄。 AWS SCT 將欄的傾斜值定義為最常見值出現次數與記錄總數的百分比比率。

    • 對於查詢歷史記錄表格中的前 N 個查詢,請輸入要分析的最常用查詢數目 (1—100)。

    • 在選取統計資料使用者中,選擇要分析查詢統計資料的資料庫使用者。

    此外,在「最佳化策略」標籤上,您可以定義「尋找小表格」策略的小型資料表大小。對於「最小表格資料列計數」和「表格列數上限」,請輸入表格中的最小與最大列數,將其視為小型表格。 AWS SCT 將ALL分佈型式套用至小型表格。在這種情況下,整個表的副本會分發到每個節點。