DynamoDB에서 Amazon Redshift로 데이터 로드
Amazon Redshift는 고급 비즈니스 인텔리전스 기능과 강력한 SQL 기반 인터페이스로 Amazon DynamoDB를 보완합니다. DynamoDB 테이블에서 Amazon Redshift로 데이터를 복사할 때 Amazon Redshift 클러스터에 있는 다른 테이블과의 조인을 포함해 해당 데이터에 대한 복잡한 데이터 분석 쿼리를 수행할 수 있습니다.
프로비저닝된 처리량과 관련하여 DynamoDB 테이블에서 복사하는 작업은 해당 테이블의 읽기 용량에 포함됩니다. 데이터가 복사된 후에는 Amazon Redshift의 SQL 쿼리가 DynamoDB에 전혀 영향을 미치지 않습니다. 쿼리가 DynamoDB 자체보다는 DynamoDB에서 데이터를 복사하는 작업에 적용되기 때문입니다.
DynamoDB 테이블에서 데이터를 로드하려면 먼저 데이터의 대상으로 사용할 Amazon Redshift 테이블을 생성해야 합니다. NoSQL 환경에서 SQL 환경으로 데이터를 복사하는 것이며 다른 환경에는 적용되지 않고 하나의 환경에 적용되는 특정한 규칙이 있다는 점에 유의하세요. 고려해야 할 몇 가지 차이는 다음과 같습니다.
-
DynamoDB 테이블 이름은 '.'(점) 및 '-'(대시) 문자를 비롯해 최대 255자를 포함할 수 있고 대/소문자를 구분합니다. Amazon Redshift 테이블 이름은 127자로 제한되고 점이나 대시를 포함할 수 없으며 대/소문자를 구분하지 않습니다. 또한 테이블 이름이 Amazon Redshift 예약어와 충돌해서는 안 됩니다.
-
DynamoDB에서는 SQL의 NULL 개념을 지원하지 않습니다. Amazon Redshift에서 DynamoDB의 빈 속성 값을 NULL이나 빈 필드 중 무엇으로 처리할지를 지정해야 합니다.
-
DynamoDB 데이터 형식이 Amazon Redshift 데이터 형식에 직접적으로 대응하지 않습니다. Amazon Redshift에 있는 각 열이 DynamoDB의 데이터를 수용할 수 있도록 데이터 형식과 크기가 적합해야 합니다.
다음은 Amazon Redshift SQL의 COPY 명령 예제입니다.
copy favoritemovies from 'dynamodb://my-favorite-movies-table' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' readratio 50;
이 예제에서 DynamoDB의 소스 테이블은 my-favorite-movies-table
이고, Amazon Redshift의 대상 테이블은 favoritemovies
입니다. readratio 50
절은 사용하는 프로비저닝 처리량의 백분율을 조절합니다. 이 경우 my-favorite-movies-table
에 대해 프로비저닝된 읽기 용량 단위의 50% 이내가 COPY 명령에 사용됩니다. 사용되지 않는 프로비저닝 처리량 미만의 값으로 이 비율을 설정하는 것이 좋습니다.
DynamoDB에서 Amazon Redshift로 데이터를 로드하는 방법에 대한 자세한 지침은 Amazon Redshift 데이터베이스 개발자 안내서의 다음 단원을 참조하세요.