기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 테라데이타 데이터 웨어하우스에 연결 AWS Schema Conversion Tool
를 AWS SCT 사용하여 스키마, 코드 객체 및 애플리케이션 코드를 테라데이타에서 Amazon Redshift 또는 Amazon Redshift로 변환하고 조합하여 사용할 수 있습니다. AWS Glue
Teradata를 소스로 사용할 수 있는 권한
Teradata를 소스로 사용하기 위해 필요한 권한은 다음과 같습니다.
-
SELECTON DBC
-
SELECT켜짐 SYSUDTLIB
-
SELECT켜짐 SYSLIB
-
SELECT켜짐
<source_database>
-
CREATEPROCEDURE켜짐
<source_database>
이전 예제에서는 다음을 대체합니다.<source_database>
자리 표시자를 원본 데이터베이스의 이름으로 입력합니다.
AWS SCT 원본 데이터베이스의 모든 HELP PROCEDURE 프로시저에 대해 수행할 수 있는 CREATE PROCEDURE 권한이 필요합니다. AWS SCT 이 권한을 사용하여 원본 Teradata 데이터베이스에 새 개체를 만들지 않습니다.
Teradata에 소스로 연결
다음 절차에 따라 AWS Schema Conversion Tool을 사용하여 Teradata 소스 데이터베이스에 연결합니다.
Teradata 소스 데이터베이스에 연결하려면
-
에서 소스 AWS Schema Conversion Tool추가를 선택합니다.
-
Teradata를 선택한 후 다음을 선택합니다.
소스 추가 대화 상자가 나타납니다.
-
연결 이름에 데이터베이스의 이름을 입력합니다. AWS SCT 는 왼쪽 패널의 트리에 이 이름을 표시합니다.
-
의 데이터베이스 자격 증명을 AWS Secrets Manager 사용하거나 수동으로 입력합니다.
-
Secrets Manager의 데이터베이스 보안 인증 정보를 사용하려면 다음 지침을 따릅니다.
-
AWS Secret에서 보안 암호의 이름을 선택합니다.
-
Populate를 선택하여 Secrets Manager에서 데이터베이스 연결 대화 상자에 있는 모든 값을 자동으로 채웁니다.
Secrets Manager의 데이터베이스 보안 인증 사용에 대한 자세한 내용은 AWS Secrets Manager 에서 구성 AWS Schema Conversion Tool 섹션을 참조하세요.
-
-
Teradata 소스 데이터베이스 연결 정보를 수동으로 입력하려면 다음 지침을 사용합니다.
파라미터 작업 연결 이름 데이터베이스 이름을 입력합니다. AWS SCT 왼쪽 패널의 트리에 이 이름을 표시합니다.
[서버 이름] 소스 데이터베이스 서버의 도메인 이름 시스템 (DNS) 이름 또는 IP 주소를 입력합니다.
[Server port] 소스 데이터베이스 서버에 연결하는 데 사용되는 포트를 입력합니다.
데이터베이스 Teradata 데이터베이스의 이름을 입력합니다.
User name 및 Password 소스 데이터베이스 서버에 연결하는 데 필요한 데이터베이스 보안 인증 정보를 입력합니다.
AWS SCT 프로젝트에서 데이터베이스에 연결하도록 선택한 경우에만 암호를 사용하여 원본 데이터베이스에 연결합니다. 소스 데이터베이스의 암호가 노출될 위험을 방지하기 위해 AWS SCT 는 기본적으로 암호를 저장하지 않습니다. AWS SCT 프로젝트를 닫았다 다시 열 경우 필요에 따라 소스 데이터베이스에 연결하기 위한 암호를 입력하라는 메시지가 표시됩니다.
Store password AWS SCT SSL인증서와 데이터베이스 암호를 저장할 보안 저장소를 만듭니다. 이 옵션을 켜면 데이터베이스 암호를 저장하고 암호 입력 없이 빠르게 데이터베이스에 연결할 수 있습니다.
Encrypt data 데이터베이스와 교환하는 데이터를 암호화하려면 이 옵션을 선택합니다. 이 옵션을 선택하면 포트 번호 443을 사용하여 Teradata 데이터베이스 간에 AWS SCT 암호화된 데이터를 전송합니다.
Teradata driver path 소스 데이터베이스에 연결할 때 사용할 드라이버의 경로를 입력합니다. 자세한 내용은 에 대한 JDBC 드라이버 설치 AWS Schema Conversion Tool 단원을 참조하십시오.
드라이버 경로를 전역 프로젝트 설정에 저장할 경우 드라이버 경로가 연결 대화 상자에 표시되지 않습니다. 자세한 내용은 전역 설정에 드라이버 경로 저장 단원을 참조하십시오.
-
-
[연결 테스트] 를 선택하여 원본 AWS SCT 데이터베이스에 연결할 수 있는지 확인합니다.
-
연결을 선택하여 소스 데이터베이스에 연결합니다.
테라데이타 소스를 통한 LDAP 인증 사용
Windows에서 Microsoft Active Directory를 실행하는 테라데이타 사용자에 대해 경량 디렉터리 액세스 프로토콜 (LDAP) 인증을 설정하려면 다음 절차를 사용하십시오.
다음 절차에서 Active Directory 도메인은 test.local.com
입니다. Windows 서버는 DC
이며 기본 설정으로 구성되어 있습니다. 다음 스크립트는 test_ldap
Active Directory 계정을 생성하며 이 계정은 test_ldap
암호를 사용합니다.
Windows에서 Microsoft Active Directory를 실행하는 테라데이타 사용자에 대한 LDAP 인증을 설정하려면
/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"
-
다음과 같이 구성을 실행하여 변경 사항을 적용합니다.
#cd /opt/teradata/tdgss/bin #./run_tdgssconfig
다음 명령을 실행하여 구성을 테스트합니다.
# /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
다음 명령을 TPA 사용하여 다시 시작합니다.
#tpareset -f "use updated TDGSSCONFIG GDO"
다음과 같이 Active Directory와 동일한 사용자를 Teradata 데이터베이스에서 생성합니다.
CREATE USER test_ldap AS PERM=1000, PASSWORD=test_ldap; GRANT LOGON ON ALL TO test WITH NULL PASSWORD;
Active Directory에서 사용자의 LDAP 사용자 암호를 변경하는 경우 LDAP 모드에서 테라데이타에 연결하는 동안 이 새 암호를 지정하십시오. DEFAULT모드에서는 LDAP 사용자 이름과 암호를 사용하여 테라데이타에 연결합니다.
소스 Teradata 데이터 웨어하우스에서 통계 수집 구성
소스 Teradata 데이터 웨어하우스를 변환하려면 통계를 AWS SCT 사용하여 변환된 Amazon Redshift 데이터 웨어하우스를 최적화합니다. AWS SCT 에서 통계를 수집하거나 통계 파일을 업로드할 수 있습니다. 자세한 내용은 통계 수집 또는 업로드 단원을 참조하십시오.
데이터 웨어하우스에서 통계를 AWS SCT 수집할 수 있도록 하려면 다음 사전 요구 사항 작업을 완료하십시오.
Teradata 데이터 웨어하우스에서 통계를 수집하려면
-
다음 쿼리를 실행하여 데이터 웨어하우스의 모든 테이블에 대한 통계를 다시 수집합니다.
collect summary statistics on
table_name
;위 예제에서는 다음을 대체합니다.
table_name
소스 테이블의 이름으로 변환하는 각 테이블에 대해 쿼리를 반복합니다. -
다음 쿼리를 실행하여 사용자가 데이터 웨어하우스를 변환하는 데 사용할 계정 문자열을 결정합니다.
select * from dbc.accountinfo where username ='
user_name
' -
이전 예제의 계정 문자열을 사용하여 특정 사용자에 대한 쿼리 로깅을 켭니다.
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 프로젝트에서 통계를 수집할 수 있습니다. 또는 기본 테라데이타 쿼리 (BTEQ) 스크립트를 사용하여 오프라인 모드에서 통계를 수집할 수 있습니다. 그런 다음 수집된 통계가 포함된 파일을 AWS SCT 프로젝트에 업로드할 수 있습니다. 자세한 내용은 통계 수집 또는 업로드 단원을 참조하십시오.
오프라인 모드로 Teradata 데이터 웨어하우스에서 통계를 수집하려면
-
다음 콘텐츠가 포함된
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
-
이전 단계에서 만든 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
-
이전 단계에서 생성한 배치 파일을 실행하는
runme.bat
파일을 생성합니다. 다음 내용을 이 파일에 사용합니다..\td_run_bteq.bat
ServerName
UserName
DatabaseName
runme.bat
파일에서 바꾸십시오.ServerName
,UserName
, 및DatabaseName
해당하는 값으로 입력하세요.그런 다음
runme.bat
파일을 실행합니다. Amazon Redshift로 변환하는 각 데이터 웨어하우스마다 이 단계를 반복합니다.
이 스크립트를 실행한 후 각 데이터베이스에 대한 통계가 포함된 파일 3개를 수신하게 됩니다. 이 파일을 AWS SCT 프로젝트에 업로드할 수 있습니다. 이 작업을 수행하려면 프로젝트의 왼쪽 패널에서 데이터 웨어하우스를 선택하고 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다. Upload Statistics를 선택합니다.
Teradata에서 Amazon Redshift로의 변환 설정
Teradata에서 Amazon Redshift로의 변환 설정을 편집하려면 AWS SCT에서 설정을 선택한 다음 전환 설정을 선택합니다. 상단 목록에서 테라데이타를 선택한 다음 테라데이타 — Amazon Redshift를 선택합니다. AWS SCT 테라데이타에서 Amazon Redshift로의 변환에 사용할 수 있는 모든 설정을 표시합니다.
AWS SCT 테라데이타에서 Amazon Redshift로의 변환 설정에는 다음과 같은 옵션이 포함됩니다.
-
변환된 코드에서 작업 항목이 포함된 설명의 수를 제한합니다.
선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 설명을 추가하려면 조치 항목의 심각도를 선택합니다. AWS SCT 선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 설명을 추가합니다.
예를 들어, 변환된 코드의 설명 수를 최소화하려면 오류만을 선택합니다. 변환된 코드의 모든 작업 항목에 대한 설명을 포함하려면 모든 메시지를 선택합니다.
-
대상 Amazon Redshift 클러스터에 적용할 AWS SCT 수 있는 최대 테이블 수를 설정하려면
대상 Amazon Redshift 클러스터의 최대 테이블 수에서 Amazon Redshift 클러스터에 적용할 AWS SCT 수 있는 테이블 수를 선택하십시오.
Amazon Redshift에는 여러 클러스터 노드 유형에 사용하는 테이블을 제한하는 할당량이 있습니다. 자동을 선택하는 경우, 노드 유형에 따라 대상 Amazon Redshift 클러스터에 적용할 테이블 수를 AWS SCT 결정합니다. 값을 수동으로 선택할 수도 있습니다. 자세한 내용은 Amazon Redshift 관리 가이드의 Amazon Redshift의 할당량 및 제한 섹션을 참조하세요.
AWS SCT Amazon Redshift 클러스터가 저장할 수 있는 양보다 크더라도 모든 소스 테이블을 변환합니다. AWS SCT 변환된 코드를 프로젝트에 저장하고 대상 데이터베이스에는 적용하지 않습니다. 변환된 코드를 적용할 때 테이블의 Amazon Redshift 클러스터 할당량에 도달하면 AWS SCT 에서 경고 메시지가 표시됩니다. 또한 테이블 수가 한도에 도달할 때까지 대상 Amazon Redshift 클러스터에 테이블을 AWS SCT 적용합니다.
-
소스 테이블의 파티션을 Amazon Redshift의 개별 테이블로 마이그레이션합니다. 이렇게 하려면 UNIONALL뷰 사용을 선택하고 단일 원본 테이블에 생성할 AWS SCT 수 있는 대상 테이블의 최대 수를 입력합니다.
Amazon Redshift는 테이블 파티셔닝을 지원하지 않습니다. 이 동작을 에뮬레이션하고 쿼리를 더 빠르게 실행하기 위해 원본 테이블의 각 파티션을 Amazon Redshift의 개별 테이블로 마이그레이션할 AWS SCT 수 있습니다. 그런 다음 이 모든 테이블의 데이터를 포함하는 뷰를 AWS SCT 생성합니다.
AWS SCT 원본 테이블의 파티션 수를 자동으로 결정합니다. 소스 테이블 파티셔닝 유형에 따라서는 이 숫자가 Amazon Redshift 클러스터에 적용할 수 있는 테이블의 할당량을 초과할 수 있습니다. 이 할당량에 도달하지 않으려면 단일 원본 테이블의 파티션에 대해 생성할 AWS SCT 수 있는 최대 대상 테이블 수를 입력하십시오. 기본 옵션은 368개 테이블이며, 이는 1년 중 366일 동안의 파티션과
NO RANGE
및UNKNOWN
파티션에 대한 테이블 두 개를 나타냅니다. -
Amazon Redshift 테이블 열에 압축을 적용합니다. 이렇게 하려면 Use compression encoding을 선택합니다.
AWS SCT 기본 Amazon Redshift 알고리즘을 사용하여 열에 압축 인코딩을 자동으로 할당합니다. 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 압축 인코딩을 참조하세요.
기본적으로 Amazon Redshift는 정렬 및 배포 키로 정의된 열에 압축을 적용하지 않습니다. 이 동작을 변경하여 이러한 열에 압축을 적용할 수 있습니다. 이렇게 하려면 열에 압축 인코딩 사용을 KEY 선택합니다. Use compression encoding 옵션을 선택한 경우에만 이 옵션을 선택할 수 있습니다.
-
변환된 코드에서
SELECT *
문에 대해 명시적 열 목록을 사용하려면 Use explicit column declaration을 선택합니다. -
Amazon Redshift 클러스터에서 기본 키와 고유 키의 동작을 에뮬레이션하려면 Emulate the behavior of primary and unique keys를 선택합니다.
Amazon Redshift는 고유 키와 기본 키를 적용하지 않으며 정보 제공 목적으로만 사용합니다. 코드에 이러한 제약 조건을 사용하는 경우 변환된 코드에서의 동작을 AWS SCT 에뮬레이션해야 합니다.
-
대상 Amazon Redshift 테이블의 데이터 고유성을 보장합니다. 이렇게 하려면 테이블 동작 에뮬레이션을 선택합니다. SET
Teradata는
SET
구문 요소를 기본 옵션으로 사용하여 테이블을 생성합니다.SET
테이블에는 중복된 행을 추가할 수 없습니다. 소스 코드에서 이 고유성 제약 조건을 사용하지 않는 경우에는 이 옵션을 끕니다. 이 경우, 변환된 코드는 더 빠르게 작동합니다.소스 코드가 고유성 제약 조건으로 테이블에서
SET
옵션을 사용하는 경우 이 옵션을 켭니다. 이 경우 는 변환된 코드의INSERT..SELECT
명령문을 AWS SCT 다시 작성하여 원본 데이터베이스의 동작을 에뮬레이션합니다.
Teradata에서 Amazon Redshift로의 변환 최적화 설정
Teradata에서 Amazon Redshift로의 변환 최적화 설정을 편집하려면 AWS SCT에서 설정을 선택한 다음 전환 설정을 선택합니다. 상단 목록에서 Teradata를 선택한 다음 Teradata – Amazon Redshift를 선택합니다. 왼쪽 창에서 최적화 전략을 선택합니다. AWS SCT 테라데이타에서 Amazon Redshift로의 변환에 대한 변환 최적화 설정을 표시합니다.
AWS SCT 테라데이타에서 Amazon Redshift로의 변환 최적화 설정에는 다음과 같은 옵션이 포함됩니다.
-
자동 테이블 최적화 작업을 수행합니다. 이 작업을 수행하려면 Use Amazon Redshift automatic table tuning을 선택합니다.
자동 테이블 최적화는 테이블 디자인을 자동으로 최적화하는 Amazon Redshift의 자체 조정 프로세스입니다. 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서의 자동 테이블 최적화 작업을 참조하세요.
자동 테이블 최적화만 사용하려면 Initial key selection strategy에서 없음을 선택합니다.
-
전략을 사용하여 정렬 및 배포 키를 선택합니다.
Amazon Redshift 메타데이터, 통계 정보 또는 두 옵션을 모두 사용하여 정렬 및 배포 키를 선택할 수 있습니다. Optimization strategies 탭의 Initial key selection strategy에서 다음 옵션 중 하나를 선택합니다.
메타데이터 사용, 통계 정보 무시
메타데이터 무시, 통계 정보 사용
메타데이터 및 통계 정보 사용
선택한 옵션에 따라 최적화 전략을 선택할 수 있습니다. 그런 다음 각 전략에 대해 값(0~100)을 입력합니다. 이러한 값은 각 전략의 가중치를 정의합니다. AWS SCT 는 이러한 가중치 값을 사용하여 각 규칙이 배포 및 정렬 키 선택에 미치는 영향을 정의합니다. 기본값은 AWS 마이그레이션 모범 사례를 기반으로 합니다.
Find small tables 전략에서 작은 테이블의 크기를 정의할 수 있습니다. 최소 테이블 행 수 및 최대 테이블 행 수에 테이블의 최소 및 최대 행 수를 입력하여 테이블을 작은 테이블로 정의합니다. AWS SCT 작은 테이블에
ALL
분산 스타일을 적용합니다. 이 경우 전체 테이블의 사본이 모든 노드에 배포됩니다. -
전략 세부 정보를 구성합니다.
각 최적화 전략의 가중치를 정의하는 것 외에 최적화 설정도 구성할 수 있습니다. 이 작업을 수행하려면 Conversion optimization을 선택합니다.
Sort key columns limit에 정렬 키의 최대 열 수를 입력합니다.
치우친 임계값에는 열에 대한 치우친 값의 백분율 (0—100) 을 입력합니다. AWS SCT 왜곡 값이 임계값보다 큰 열을 배포 키 후보 목록에서 제외합니다. AWS SCT 열의 기울어진 값을 총 레코드 수 대비 가장 일반적인 값의 발생 횟수의 백분율 비율로 정의합니다.
Top N queries from the query history table에 분석할 가장 자주 사용되는 쿼리의 수(1~100)를 입력합니다.
Select statistics user에서 쿼리 통계를 분석하려는 데이터베이스 사용자를 선택합니다.
또한 Optimization strategies 탭에서 Find small tables 전략을 위한 작은 테이블의 크기를 정의할 수 있습니다. 테이블의 최소 행 수 및 최대 테이블 행 수에 대해 테이블의 최소 및 최대 행 수를 입력하여 테이블을 작은 테이블로 간주합니다. AWS SCT 작은 테이블에
ALL
분산 스타일을 적용합니다. 이 경우 전체 테이블의 사본이 모든 노드에 배포됩니다.