Amazon DynamoDB 테이블에서 데이터 로드 - Amazon Redshift

Amazon DynamoDB 테이블에서 데이터 로드

COPY 명령을 사용하여 단일 Amazon DynamoDB 테이블에서 데이터와 함께 테이블을 로드할 수 있습니다.

중요

데이터를 제공하는 Amazon DynamoDB 테이블은 REGION 옵션을 사용하여 Amazon DynamoDB 테이블이 위치한 AWS 리전을 지정하지 않는 한 클러스터와 동일한 AWS 리전에서 생성해야 합니다.

COPY 명령은 Amazon Redshift 대량 병렬 처리(MPP) 아키텍처를 사용하여 Amazon DynamoDB 테이블에서 병렬로 데이터를 읽고 로드합니다. Amazon Redshift 테이블에서 배포 스타일을 설정하면 병렬 처리를 최대한 활용할 수 있습니다. 자세한 내용은 쿼리 최적화를 위한 데이터 배포 단원을 참조하십시오.

중요

COPY 명령이 Amazon DynamoDB 테이블에서 데이터를 읽을 때 그 결과로 이루어지는 데이터 전송은 해당 테이블의 프로비저닝 처리량의 일부입니다.

과도한 프로비저닝 읽기 처리량 사용을 피하려면 프로덕션 환경에 있는 Amazon DynamoDB 테이블에서 데이터를 로드하지 않는 것이 좋습니다. 프로덕션 테이블에서 데이터를 로드하는 경우에는 사용되지 않는 프로비저닝 처리량의 평균 비율보다 훨씬 낮게 READRATIO 옵션을 설정하는 것이 좋습니다. 낮은 READRATIO 설정은 조절 문제를 최소화하는 데 도움이 됩니다. Amazon DynamoDB 테이블의 전체 프로비저닝 처리량을 사용하려면 READRATIO를 100으로 설정합니다.

COPY 명령은 다음 규칙을 사용하여 DynamoDB 테이블에서 검색된 항목의 속성 이름을 기존 Amazon Redshift 테이블의 열 이름과 일치시킵니다.

  • Amazon Redshift 테이블 열은 대/소문자를 구분하지 않고 Amazon DynamoDB 항목 속성과 일치합니다. DynamoDB 테이블의 항목에 대/소문자만 다른 여러 속성(예: Price와 PRICE)이 포함된 경우, COPY 명령이 실패합니다.

  • Amazon DynamoDB 테이블의 속성과 일치하지 않는 Amazon Redshift 테이블 열은 COPY 명령의 EMPTYASNULL 옵션에서 지정한 값에 따라 NULL 또는 비어 있는 상태로 로드됩니다.

  • Amazon Redshift 테이블의 열과 일치하지 않는 Amazon DynamoDB 속성은 삭제됩니다. 속성은 일치되기 전에 읽히며, 삭제된 속성도 해당 테이블의 프로비저닝 처리량의 일부를 사용합니다.

  • 스칼라 STRING 및 NUMBER 데이터 형식의 Amazon DynamoDB 속성만 지원됩니다. Amazon DynamoDB BINARY 및 SET 데이터 형식은 지원되지 않습니다. COPY 명령이 지원되지 않는 데이터 형식을 가진 속성을 로드하려고 하는 경우, 명령은 실패합니다. 속성이 Amazon Redshift 테이블 열과 일치하지 않는 경우 COPY는 속성을 로드하려고 하지 않으며 오류를 발생시키지 않습니다.

COPY 명령은 다음 구문을 사용하여 Amazon DynamoDB 테이블에서 데이터를 로드합니다.

COPY <redshift_tablename> FROM 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

authorization 값은 Amazon DynamoDB 테이블에 액세스하는 데 필요한 AWS 자격 증명입니다. 이 자격 증명이 사용자와 일치하는 경우 해당 사용자에게 로드되는 Amazon DynamoDB 테이블에 대한 SCAN 및 DESCRIBE 권한이 있어야 합니다.

authorization 값은 클러스터가 Amazon DynamoDB 테이블에 액세스하는 데 필요한 AWS 권한 부여를 제공합니다. 권한에는 로드되는 Amazon DynamoDB 테이블에 대한 SCAN 및 DESCRIBE가 포함되어야 합니다. 필요한 권한에 대한 자세한 내용은 COPY, UNLOAD 및 CREATE LIBRARY 작업을 위한 IAM 권한 섹션을 참조하세요. 선호되는 인증 방법은 IAM_ROLE 파라미터를 지정하고 IAM 역할의 Amazon 리소스 이름(ARN)에 필요한 권한을 제공하는 것입니다. 자세한 내용은 역할 기반 액세스 제어 단원을 참조하십시오.

IAM_ROLE 파라미터를 사용하여 인증하려면 다음 구문을 참조하여 <aws-account-id><role-name>을 바꿉니다.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

다음 예는 IAM 역할을 사용한 인증을 보여 줍니다.

COPY favoritemovies FROM 'dynamodb://ProductCatalog' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

기타 옵션에 대한 자세한 내용은 권한 부여 파라미터 섹션을 참조하세요.

실제로 테이블을 로드하지 않고 데이터를 확인하려면 COPY 명령과 함께 NOLOAD 옵션을 사용하십시오.

다음 예에서는 DynamoDB 테이블 my-favorite-movies-table의 데이터와 함께 FAVORITEMOVIES 테이블을 로드합니다. 읽기 작업은 프로비저닝 처리량의 최대 50%를 사용합니다.

COPY favoritemovies FROM 'dynamodb://my-favorite-movies-table' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' READRATIO 50;

처리량을 극대화하기 위해 COPY 명령은 클러스터의 컴퓨팅 노드에서 병렬로 Amazon DynamoDB에서 데이터를 로드합니다.

자동 압축을 사용한 프로비저닝 처리량

기본적으로 COPY 명령은 압축 인코딩이 없는 빈 대상 테이블을 지정할 때마다 자동 압축을 적용합니다. 자동 압축 분석은 처음에 Amazon DynamoDB 테이블에서 많은 수의 행을 샘플링합니다. 샘플 크기는 COMPROWS 파라미터의 값에 따라 달라집니다. 기본값은 조각당 100,000행입니다.

샘플링 후 샘플 행은 삭제되며 전체 테이블이 로드됩니다. 그 결과, 많은 행을 두 번 읽게 됩니다. 자동 압축의 작동 원리에 대한 자세한 내용은 자동 압축을 사용하여 테이블 로드 섹션을 참조하세요.

중요

COPY 명령이 샘플링에 사용된 행을 포함하여 Amazon DynamoDB 테이블에서 데이터를 읽을 때 그 결과로 이루어지는 데이터 전송은 해당 테이블의 프로비저닝 처리량의 일부입니다.

Amazon DynamoDB에서 멀티바이트 데이터 로드

데이터에 중국어나 키릴 문자 같이 ASCII가 아닌 멀티바이트 문자가 포함되어 있는 경우에는 VARCHAR 열에 데이터를 로드해야 합니다. VARCHAR 데이터 형식은 4바이트 UTF-8 문자를 지원하지만 CHAR 데이터 형식에서는 1바이트 ASCII 문자만 허용되기 때문입니다. Amazon Redshift 테이블에 5바이트 이상의 문자는 로드할 수 없습니다. CHAR 및 VARCHAR에 대한 자세한 내용은 데이터 타입 섹션을 참조하세요.