

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 를 사용하여 Snowflake 데이터 웨어하우스에 연결 AWS Schema Conversion Tool
<a name="CHAP_Source.Snowflake"></a>

 AWS SCT 를 사용하여 스키마, 코드 객체 및 애플리케이션 코드를 Snowflake에서 Amazon Redshift로 변환할 수 있습니다.

## Snowflake를 소스 데이터베이스로 사용할 수 있는 권한
<a name="CHAP_Source.Snowflake.Permissions"></a>

권한이 있는 역할을 생성하고 `SECURITYADMIN` 역할 및 `SECURITYADMIN` 세션 컨텍스트를 사용하여 이 역할에 사용자 이름을 부여할 수 있습니다.

다음 예제에서는 최소 권한을 생성하여 `min_privs` 사용자에게 부여합니다.

```
create role role_name;
grant role role_name to role sysadmin;
grant usage on database db_name to role role_name;
grant usage on schema db_name.schema_name to role role_name;             
grant usage on warehouse datawarehouse_name to role role_name;
grant monitor on database db_name to role role_name;
grant monitor on warehouse datawarehouse_name to role role_name;
grant select on all tables in schema db_name.schema_name to role role_name;
grant select on future tables in schema db_name.schema_name to role role_name;
grant select on all views in schema db_name.schema_name to role role_name;
grant select on future views in schema db_name.schema_name to role role_name;
grant select on all external tables in schema db_name.schema_name to role role_name;
grant select on future external tables in schema db_name.schema_name to role role_name;
grant usage on all sequences in schema db_name.schema_name to role role_name;
grant usage on future sequences in schema db_name.schema_name to role role_name;
grant usage on all functions in schema db_name.schema_name to role role_name;
grant usage on future functions in schema db_name.schema_name to role role_name;
grant usage on all procedures in schema db_name.schema_name to role role_name;
grant usage on future procedures in schema db_name.schema_name to role role_name;
create user min_privs password='real_user_password'  
DEFAULT_ROLE = role_name DEFAULT_WAREHOUSE = 'datawarehouse_name';
grant role role_name to user min_privs;
```

이전 예제에서 다음과 같이 자리 표시자를 바꿉니다.
+ *`role_name`*을 읽기 전용 권한이 있는 역할의 이름으로 바꿉니다.
+ `db_name`을 소스 데이터베이스의 이름으로 바꿉니다.
+ `schema_name`을 소스 스키마의 이름으로 바꿉니다.
+ *`datawarehousename`*을 필수 데이터 웨어하우스의 이름으로 바꿉니다.
+ 최소 권한을 가진 사용자 이름으로 `min_privs`를 바꿉니다.

`DEFAULT_ROLE` 및 `DEFAULT_WAREHOUSE` 파라미터는 키를 구분합니다.

## Amazon S3에 대한 보안 액세스 구성
<a name="CHAP_Source.Snowflake.IAM"></a>

Amazon S3 버킷의 보안 및 액세스 관리 정책을 통해 Snowflake는 S3 버킷에 액세스하고, S3 버킷에서 데이터를 읽고, S3 버킷에 데이터를 쓸 수 있습니다. Snowflake `STORAGE INTEGRATION` 객체 유형을 사용하여 프라이빗 Amazon S3 버킷에 대한 보안 액세스를 구성할 수 있습니다. Snowflake 스토리지 통합 객체는 Snowflake ID 및 액세스 관리 엔터티에 인증 책임을 위임합니다.

자세한 내용은 Snowflake 설명서에서 [Amazon S3에 액세스하기 위한 Snowflake 스토리지 통합 구성](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html)을 참조하세요.

## Snowflake에 소스로 연결
<a name="CHAP_Source.Snowflake.Connecting"></a>

다음 절차에 따라 AWS Schema Conversion Tool을 사용하여 소스 데이터베이스에 연결합니다.

**Snowflake 소스 데이터베이스에 연결하려면**

1. 에서 **소스 추가**를 AWS Schema Conversion Tool선택합니다.

1. **Snowflake**를 선택한 후 **다음**을 선택합니다.

   **소스 추가** 대화 상자가 나타납니다.

1. **연결 이름**에 데이터베이스의 이름을 입력합니다. AWS SCT 는 왼쪽 패널의 트리에 이 이름을 표시합니다.

1. 에서 데이터베이스 자격 증명을 사용하거나 수동으로 AWS Secrets Manager 입력합니다.
   + Secrets Manager의 데이터베이스 보안 인증 정보를 사용하려면 다음 지침을 따릅니다.

     1. **AWS Secret**에서 보안 암호의 이름을 선택합니다.

     1. **Populate**를 선택하여 Secrets Manager에서 데이터베이스 연결 대화 상자에 있는 모든 값을 자동으로 채웁니다.

     Secrets Manager의 데이터베이스 보안 인증 사용에 대한 자세한 내용은 [AWS Secrets Manager 에서 구성 AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md) 섹션을 참조하세요.
   + Snowflake 소스 데이터 웨어하우스 연결 정보를 수동으로 입력하려면 다음 지침을 사용합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/SchemaConversionTool/latest/userguide/CHAP_Source.Snowflake.html)

1. **연결 테스트를** 선택하여가 소스 데이터베이스에 연결할 AWS SCT 수 있는지 확인합니다.

1. **연결**을 선택하여 소스 데이터베이스에 연결합니다.

## Snowflake를 소스로 사용 시 적용되는 제한 사항
<a name="CHAP_Source.Snowflake.Limitations"></a>

다음은 Snowflake를 소스로 사용할 때의 제한 사항입니다 AWS SCT.
+ 객체 식별자는 객체 유형과 상위 객체의 컨텍스트 내에서 고유해야 합니다.  
**Database**  
스키마 식별자는 데이터베이스 내에서 고유해야 합니다.  
**스키마**  
테이블 및 보기와 같은 객체 식별자는 스키마 내에서 고유해야 합니다.  
**테이블/보기**  
열 식별자는 테이블 내에서 고유해야 합니다.
+ 대형(large) 및 배수(xlarge) 클러스터 노드 유형에 대한 최대 테이블 수는 9,900개입니다. 8xlarge 클러스터 노드 유형에 대한 최대 테이블 수는 100,000개입니다. 이 제한에는 임시 테이블이 포함되며, 모두 쿼리 처리 또는 시스템 유지 관리 중에 Amazon Redshift에서 사용자 정의하거나 생성할 수 있습니다. 자세한 내용은 *Amazon Redshift 클러스터 관리 안내서*의 [Amazon Redshift 할당량](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) 섹션을 참조하세요.
+ 저장 프로시저의 경우 입력 및 출력 인수의 최대 개수는 32개입니다.

## Snowflake의 소스 데이터 형식
<a name="CHAP_Source.Snowflake.DataTypes"></a>

아래에서를 사용할 때 지원되는 Snowflake 소스 데이터 유형 AWS SCT 과 Amazon Redshift 대상에 대한 기본 매핑을 확인할 수 있습니다.


| Snowflake 데이터 형식 | Amazon Redshift 데이터 형식 | 
| --- | --- | 
|  NUMBER  |  NUMERIC(38)  | 
|  NUMBER(p)  |  If p is =< 4, then SMALLINT If p is => 5 and =< 9, then INTEGER If p is => 10 and =< 18, then BIGINT If p is => 19 then NUMERIC(p)   | 
|  NUMBER(p, 0)  |  If p is =< 4, then SMALLINT If p is => 5 and =< 9, then INTEGER If p is => 10 and =< 18, then BIGINT If p is => 19 then: NUMERIC(p,0)  | 
|  NUMBER(p, s)  |  If p is => 1 and =< 38, and if s is => 1 and =< 37, then NUMERIC(p,s)   | 
|  FLOAT  | FLOAT | 
|  TEXT 최대 16,777,216바이트의 유니코드 문자, 문자당 최대 4바이트  |  VARCHAR(MAX)  | 
|  TEXT(p) 최대 65,535바이트의 유니코드 문자, 문자당 최대 4바이트  |  If p is =< 65,535 then, VARCHAR(p)  | 
|  TEXT(p) 최대 16,777,216바이트의 유니코드 문자, 문자당 최대 4바이트  |  If p is => 65,535 and =< 16,777,216 then, VARCHAR(MAX)  | 
|  BINARY 최대 8,388,608바이트의 싱글 바이트 문자, 문자당 1바이트  | VARCHAR(MAX) | 
|  BINARY(p) 최대 65,535바이트의 싱글 바이트 문자, 문자당 1바이트  | VARCHAR(p) | 
|  BINARY(p) 최대 8,388,608바이트의 싱글 바이트 문자, 문자당 1바이트  | VARCHAR(MAX) | 
|  BOOLEAN  | BOOLEAN | 
|  DATE  | DATE | 
|  TIME 00:00:00에서 23:59:59.999999999 사이의 시간 값  | VARCHAR(18) | 
|  TIME(f) 00:00:00에서 23:59:59.9(f) 사이의 시간 값   | VARCHAR(n) – 9 \$1 dt-attr-1 | 
|  TIMESTAMP\$1NTZ  | TIMESTAMP | 
|  TIMESTAMP\$1TZ  | TIMESTAMPTZ | 

## Snowflake에서 Amazon Redshift로의 변환 설정
<a name="CHAP_Source.Snowflake.ConversionSettings"></a>

Snowflake에서 Amazon Redshift로의 변환 설정을 편집하려면에서 **설정을** 선택한 AWS SCT다음 **변환 설정을** 선택합니다. 상단 목록에서 **Snowflake**를 선택한 다음 **Snowflake – Amazon Redshift**를 선택합니다.는 Snowflake에서 Amazon Redshift로의 변환에 사용할 수 있는 모든 설정을 AWS SCT 표시합니다.

의 Snowflake에서 Amazon Redshift로의 변환 설정에는 다음에 대한 옵션이 AWS SCT 포함됩니다.
+ 변환된 코드에서 작업 항목이 포함된 설명의 수를 제한합니다.

  **선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석 추가에서** 작업 항목의 심각도를 선택합니다.는 선택한 심각도 이상의 작업 항목에 대해 변환된 코드에 주석을 AWS SCT 추가합니다.

  예를 들어, 변환된 코드의 설명 수를 최소화하려면 **오류만**을 선택하세요. 변환된 코드의 모든 작업 항목에 대한 설명을 포함하려면 **모든 메시지**를 선택합니다.
+ 대상 Amazon Redshift 클러스터에 적용할 AWS SCT 수 있는 최대 테이블 수를 설정합니다.

  **대상 Amazon Redshift 클러스터의 최대 테이블 수에서** Amazon Redshift 클러스터에 적용할 AWS SCT 수 있는 테이블 수를 선택합니다.

  Amazon Redshift에는 여러 클러스터 노드 유형에 사용하는 테이블을 제한하는 할당량이 있습니다. **자동**을 선택하면 노드 유형에 따라 대상 Amazon Redshift 클러스터에 적용할 테이블 수를 AWS SCT 결정합니다. 값을 수동으로 선택할 수도 있습니다. 자세한 내용은 *Amazon Redshift 관리 가이드*의 [Amazon Redshift의 할당량 및 제한](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) 섹션을 참조하세요.

  AWS SCT 는 Amazon Redshift 클러스터가 저장할 수 있는 것보다 많더라도 모든 소스 테이블을 변환합니다.는 변환된 코드를 프로젝트에 AWS SCT 저장하고 대상 데이터베이스에 적용하지 않습니다. 변환된 코드를 적용할 때 테이블의 Amazon Redshift 클러스터 할당량에 도달하면 AWS SCT 에서 경고 메시지가 표시됩니다. 또한 테이블 수가 한도에 도달할 때까지 대상 Amazon Redshift 클러스터에 테이블을 AWS SCT 적용합니다.
+ Amazon Redshift 테이블 열에 압축을 적용합니다. 이렇게 하려면 **Use compression encoding**을 선택합니다.

  AWS SCT 는 기본 Amazon Redshift 알고리즘을 사용하여 열에 압축 인코딩을 자동으로 할당합니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [압축 인코딩](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)을 참조하세요.

  기본적으로 Amazon Redshift는 정렬 및 배포 키로 정의된 열에 압축을 적용하지 않습니다. 이 동작을 변경하여 이러한 열에 압축을 적용할 수 있습니다. 이렇게 하려면 **Use compression encoding for KEY columns**를 선택합니다. **Use compression encoding** 옵션을 선택한 경우에만 이 옵션을 선택할 수 있습니다.

## Snowflake에서 Amazon Redshift로의 변환 최적화 설정
<a name="CHAP_Source.Snowflake.ConversionOptimizationSettings"></a>

Snowflake에서 Amazon Redshift로의 변환 최적화 설정을 편집하려면에서 **설정을** 선택한 AWS SCT다음 **변환 설정을** 선택합니다. 상단 목록에서 **Snowflake**를 선택한 다음 **Snowflake – Amazon Redshift**를 선택합니다. 왼쪽 창에서 **최적화 전략을** 선택합니다.는 Snowflake에서 Amazon Redshift로의 변환에 대한 변환 최적화 설정을 AWS SCT 표시합니다.

의 Snowflake에서 Amazon Redshift로의 변환 최적화 설정에는 다음에 대한 옵션이 AWS SCT 포함됩니다.
+ 자동 테이블 최적화 작업을 수행합니다. 이 작업을 수행하려면 **Use Amazon Redshift automatic table tuning**을 선택합니다.

  자동 테이블 최적화는 테이블 디자인을 자동으로 최적화하는 Amazon Redshift의 자체 조정 프로세스입니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [자동 테이블 최적화 작업](https://docs.aws.amazon.com/redshift/latest/dg/t_Creating_tables.html)을 참조하세요.

  자동 테이블 최적화만 사용하려면 **Initial key selection strategy**에서 **없음**을 선택합니다.
+ 전략을 사용하여 정렬 및 배포 키를 선택합니다.

  Amazon Redshift 메타데이터, 통계 정보 또는 두 옵션을 모두 사용하여 정렬 및 배포 키를 선택할 수 있습니다. **Optimization strategies** 탭의 **Initial key selection strategy**에서 다음 옵션 중 하나를 선택합니다.
  + 메타데이터 사용, 통계 정보 무시
  + 메타데이터 무시, 통계 정보 사용
  + 메타데이터 및 통계 정보 사용

  선택한 옵션에 따라 최적화 전략을 선택할 수 있습니다. 그런 다음 각 전략에 대해 값(0\$1100)을 입력합니다. 이러한 값은 각 전략의 가중치를 정의합니다. AWS SCT 는 이러한 가중치 값을 사용하여 각 규칙이 배포 및 정렬 키 선택에 미치는 영향을 정의합니다. 기본값은 AWS 마이그레이션 모범 사례를 기반으로 합니다.

  **Find small tables** 전략에서 작은 테이블의 크기를 정의할 수 있습니다. **최소 테이블 행 수** 및 **최대 테이블 행 수**에 테이블의 최소 및 최대 행 수를 입력하여 작은 테이블로 정의합니다.는 작은 테이블에 `ALL` 배포 스타일을 AWS SCT 적용합니다. 이 경우 전체 테이블의 사본이 모든 노드에 배포됩니다.
+ 전략 세부 정보를 구성합니다.

  각 최적화 전략의 가중치를 정의하는 것 외에 최적화 설정도 구성할 수 있습니다. 이 작업을 수행하려면 **Conversion optimization**을 선택합니다.
  + **Sort key columns limit**에 정렬 키의 최대 열 수를 입력합니다.
  + **스큐된 임계값**에 열에 대해 스큐된 값의 백분율(0\$1100)을 입력합니다.는 배포 키의 후보 목록에서 스큐 값이 임계값보다 큰 열을 AWS SCT 제외합니다.는 열의 스큐된 값을 총 레코드 수에 대한 가장 일반적인 값의 발생 횟수의 백분율 비율로 AWS SCT 정의합니다.
  + **Top N queries from the query history table**에 분석할 가장 자주 사용되는 쿼리의 수(1\$1100)를 입력합니다.
  + **Select statistics user**에서 쿼리 통계를 분석하려는 데이터베이스 사용자를 선택합니다.

  또한 **Optimization strategies** 탭에서 **Find small tables** 전략을 위한 작은 테이블의 크기를 정의할 수 있습니다. **최소 테이블 행 수** 및 **최대 테이블 행 수**에 테이블의 최소 및 최대 행 수를 입력하여 작은 테이블로 간주합니다.는 작은 테이블에 `ALL` 배포 스타일을 AWS SCT 적용합니다. 이 경우 전체 테이블의 사본이 모든 노드에 배포됩니다.