Amazon Timestream을 AWS Database Migration Service의 대상으로 사용 - AWS Database Migration Service

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

Amazon Timestream을 AWS Database Migration Service의 대상으로 사용

전체 로드 및 CDC 데이터 마이그레이션을 지원하는 AWS Database Migration Service를 사용하여 소스 데이터베이스의 데이터를 Amazon Timestream 대상 엔드포인트로 마이그레이션 수 있습니다.

Amazon Timestream은 대량 데이터 모으기를 위해 설계된 빠르고 확장 가능한 서버리스 시계열 데이터베이스 서비스입니다. 시계열 데이터는 일정 기간 동안 수집되는 일련의 데이터 포인트로, 시간이 지남에 따라 변화하는 이벤트를 측정하는 데 사용됩니다. IoT 애플리케이션, 애플리케이션 및 분석 애플리케이션에서 메트릭을 수집, DevOps 저장 및 분석하는 데 사용됩니다. Timestream에 데이터를 저장하면 데이터의 추세와 패턴을 거의 실시간으로 시각화하고 식별할 수 있습니다. Amazon Timestream에 대한 자세한 내용은 Amazon Timestream 개발자 가이드에서 Amazon Timestream이란 무엇인가요?를 참조하세요.

Amazon Timestream을 AWS Database Migration Service의 대상으로 사용하기 위한 사전 조건

Amazon Timestream을 AWS DMS의 대상으로 설정하기 전에 IAM 역할을 생성합니다. 이 역할은 AWS DMS가 Amazon Timestream으로 마이그레이션되는 데이터에 액세스할 수 있도록 허용해야 합니다. Timestream으로 마이그레이션하는 데 사용하는 역할에 대한 최소 액세스 권한 세트가 다음 IAM 정책에 나와 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeEndpoints", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "timestream:ListTables", "timestream:DescribeDatabase" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "timestream:DeleteTable", "timestream:WriteRecords", "timestream:UpdateTable", "timestream:CreateTable" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME/table/TABLE_NAME" } ] }

모든 테이블을 마이그레이션하려는 경우 위 예시에서 TABLE_NAME*를 사용합니다.

Timestream을 대상으로 사용할 때는 다음 지침을 참고하세요.

  • 타임스탬프가 1년 전을 초과하는 기록 데이터를 수집하려는 경우 AWS DMS를 사용하여 Amazon S3에 쉼표로 구분된 값(csv) 형식으로 데이터를 쓰는 것이 좋습니다. 그런 다음 Timestream의 배치 로드를 사용하여 데이터를 Timestream으로 수집합니다. 자세한 내용은 Amazon Timestream 개발자 안내서Using batch load in Timestream을 참조하세요.

  • 1년 전 미만 데이터의 전체 로드 데이터 마이그레이션인 경우 Timestream 테이블의 메모리 스토어 보존 기간을 가장 오래된 타임스탬프보다 크거나 같게 설정하는 것이 좋습니다. 그런 다음 마이그레이션이 완료된 후 테이블의 메모리 스토어 보존 기간을 원하는 값으로 편집합니다. 예를 들어 가장 오래된 타임스탬프가 2개월 전인 데이터를 마이그레이션하려면 다음과 같이 합니다.

    • Timestream 대상 테이블의 메모리 스토어 보존 기간을 2개월로 설정합니다.

    • AWS DMS를 사용하여 데이터 마이그레이션을 시작합니다.

    • 데이터 마이그레이션이 완료되면 대상 Timestream 테이블의 보존 기간을 원하는 값으로 변경합니다.

    마이그레이션 전에 다음 페이지의 정보를 사용하여 메모리 스토어 비용을 추정하는 것이 좋습니다.

  • CDC 데이터 마이그레이션인 경우 수집된 데이터가 메모리 스토어 보존 한도 내에 포함되도록 대상 테이블의 메모리 스토어 보존 기간을 설정하는 것이 좋습니다. 자세한 내용은 Amazon Timestream 개발자 안내서Writes Best Practices를 참조하세요.

멀티스레드 전체 로드 작업 설정

데이터 전송 속도를 높이기 위해 AWS DMS는 다음과 같은 작업 설정을 사용하여 Timestream 대상 엔드포인트로의 멀티스레드 전체 로드 마이그레이션 작업을 지원합니다.

  • MaxFullLoadSubTasks – 병렬로 로드할 최대 소스 테이블 수를 표시하려면 이 옵션을 사용합니다. DMS는 전용 하위 작업을 사용하여 각 테이블을 해당 Amazon Timestream 대상 테이블에 로드합니다. 기본값은 8이며 최대값은 49입니다.

  • ParallelLoadThreads – AWS DMS가 각 테이블을 Amazon Timestream 대상 테이블에 로드하는 데 사용하는 스레드 수를 지정하려면 이 옵션을 사용합니다. Timestream 대상의 최대값은 32입니다. 이 최대 한도를 증가시키도록 요청할 수 있습니다.

  • ParallelLoadBufferSize – 이 옵션을 사용하여 병렬 로드 스레드에서 데이터를 Amazon Timestream 대상에 로드하기 위해 사용하는 버퍼에 저장할 최대 레코드 수를 지정합니다. 기본값은 50입니다. 최대값은 1,000입니다. 이 설정은 ParallelLoadThreads와 함께 사용하십시오. ParallelLoadBufferSize는 둘 이상의 스레드가 있는 경우에만 유효합니다.

  • ParallelLoadQueuesPerThread – 각 동시 스레드가 액세스하는 대기열 수를 지정하여 대기열에서 데이터 레코드를 가져오고 대상에 대한 배치 로드를 생성하려면 이 옵션을 사용합니다. 기본 값은 1입니다. 그러나 다양한 페이로드 크기의 Amazon Timestream 대상에서 스레드당 대기열 수의 유효 범위는 5~512입니다.

멀티스레드 CDC 로드 작업 설정

CDC 성능을 승격하기 위해 AWS DMS에서는 다음 작업 설정을 지원합니다.

  • ParallelApplyThreads – 데이터 레코드를 Timestream 대상 엔드포인트로 푸시하기 위해 CDC 로드 중에 AWS DMS가 사용하는 동시 스레드 수를 지정합니다. 기본값은 0이고 최대값은 32입니다.

  • ParallelApplyBufferSize – CDC 로드 중에 Timestream 대상 엔드포인트로 푸시할 동시 스레드에 대한 각 버퍼 대기열에 저장할 최대 레코드 수를 지정합니다. 기본값은 100이고 최대값은 1,000입니다. ParallelApplyThreads가 둘 이상의 스레드를 지정할 때 이 옵션을 사용합니다.

  • ParallelApplyQueuesPerThread – 각 스레드가 대기열에서 데이터 레코드를 가져오고 CDC 중에 Timestream 엔드포인트에 대한 배치 로드를 생성하기 위한 대기열 수를 지정합니다. 기본값은 1이고 최대값은 512입니다.

Timestream을 AWS DMS의 대상으로 사용할 경우 엔드포인트 설정

추가 연결 속성을 사용하는 것과 마찬가지로 엔드포인트 설정을 사용하여 Timestream 대상을 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나 AWS CLIcreate-endpoint 명령을 --timestream-settings '{"EndpointSetting": "value", ...}' JSON 구문과 함께 사용하여 대상 엔드포인트를 생성할 때 설정을 지정합니다.

Timestream을 대상으로 하여 사용할 수 있는 엔드포인트 설정은 다음 테이블에 나와 있습니다.

명칭 설명

MemoryDuration

Timestream의 메모리 스토어에 마이그레이션된 데이터를 저장할 보존 한도를 지정하려면 이 속성을 설정합니다. 시간은 시간 단위로 측정됩니다. Timestream의 메모리 스토어는 높은 수집 처리량과 빠른 액세스에 최적화되어 있습니다.

기본값: 24(시간)

유효한 값: 1~8,736(시간 단위로 측정된 1시간~12개월)

예제: --timestream-settings '{"MemoryDuration": 20}'

DatabaseName

대상 Timestream 데이터베이스 이름을 지정하려면 이 속성을 설정합니다.

유형: 문자열

예제: --timestream-settings '{"DatabaseName": "db_name"}'

TableName

대상 Timestream 테이블 이름을 지정하려면 이 속성을 설정합니다.

유형: 문자열

예제: --timestream-settings '{"TableName": "table_name"}'

MagneticDuration

Timestream 테이블에 적용되는 마그네틱 스토어 저장 기간을 일 단위로 지정하려면 이 속성을 설정합니다. 수집된 데이터의 보존 한도입니다. Timestream은 보존 한도를 초과하는 모든 타임스탬프를 삭제합니다. 자세한 내용은 Amazon Timestream 개발자 안내서Storage를 참조하세요.

예제: --timestream-settings '{"MagneticDuration": "3"}'

CdcInsertsAndUpdates

AWS DMS가 삽입과 업데이트만 적용하고 삭제는 적용하지 않도록 지정하려면 이 속성을 true로 설정합니다. Timestream은 레코드 삭제를 허용하지 않으므로 이 값이 false이면 AWS DMS가 Timestream 데이터베이스에서 해당 레코드를 삭제하지 않고 무효화합니다. 자세한 내용은 제한 사항 단원을 참조하십시오.

기본 값: false

예제: --timestream-settings '{"CdcInsertsAndUpdates": "true"}'

EnableMagneticStoreWrites

마그네틱 스토어 쓰기를 활성화하려면 이 속성을 true로 설정합니다. 이 값이 false인 경우, Timestream은 기본적으로 마그네틱 스토어 쓰기를 허용하지 않으므로 AWS DMS는 대상 테이블의 메모리 스토어 보존 기간보다 오래된 타임스탬프가 있는 레코드를 기록하지 않습니다. 자세한 내용은 Amazon Timestream 개발자 안내서Writes Best Practices를 참조하세요.

기본 값: false

예제: --timestream-settings '{"EnableMagneticStoreWrites": "true"}'

Amazon Timestream 대상 엔드포인트 생성 및 수정

IAM 역할을 생성하고 최소 액세스 권한 세트를 설정한 후에는 AWS DMS 콘솔을 사용하거나 AWS CLIcreate-endpoint 명령을 --timestream-settings '{"EndpointSetting": "value", ...}' JSON 구문과 함께 사용하여 Amazon Timestream 대상 엔드포인트를 생성할 수 있습니다.

다음 예시에서는 AWS CLI를 사용하여 Timestream 대상 엔드포인트를 생성하고 수정하는 방법을 보여줍니다.

Timestream 대상 엔드포인트 생성 명령

aws dms create-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "DatabaseName":"db_name", "MagneticDuration": 3, "CdcInsertsAndUpdates": true, "EnableMagneticStoreWrites": true, }

Timestream 대상 엔드포인트 수정 명령

aws dms modify-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "MagneticDuration": 3, }

객체 매핑을 사용하여 데이터를 Timestream 주제로 마이그레이션

AWS DMS는 테이블 매핑 규칙을 사용하여 데이터를 소스에서 대상 Timestream 주제에 매핑합니다. 데이터를 대상 주제에 매핑하려면 객체 매핑이라는 테이블 매핑 규칙 유형을 사용합니다. 객체 매핑을 사용하여 원본의 데이터 레코드를 Timestream 주제에 게시된 데이터 레코드로 매핑하는 방법을 지정합니다.

Timestream 주제에는 파티션 키 외에 별다른 사전 설정 구조가 없습니다.

참고

객체 매핑을 사용할 필요는 없습니다. 일반 테이블 매핑을 다양한 변환에 사용할 수 있습니다. 하지만 파티션 키 유형은 다음과 같은 기본 동작을 따릅니다.

  • 기본 키는 전체 로드의 파티션 키로 사용됩니다.

  • parallel-apply 작업 설정을 사용하지 않는 경우, CDC의 파티션 키로 schema.table이 사용됩니다.

  • paralle-apply 작업 설정을 사용하지 않는 경우, CDC의 파티션 키로 기본 키가 사용됩니다.

object-mapping 규칙을 만들려면 rule-typeobject-mapping으로 지정합니다. 이 규칙은 사용할 객체 매핑의 유형을 지정합니다. 이 규칙의 구조는 다음과 같습니다.

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": { "schema-name": "case-sensitive schema name", "table-name": "" } } ] }

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "timestream-map", "rule-action": "map-record-to-record", "target-table-name": "tablename", "object-locator": { "schema-name": "", "table-name": "" }, "mapping-parameters": { "timestream-dimensions": [ "column_name1", "column_name2" ], "timestream-timestamp-name": "time_column_name", "timestream-multi-measure-name": "column_name1or2", "timestream-hash-measure-name": true or false, "timestream-memory-duration": x, "timestream-magnetic-duration": y } } ] }

AWS DMS는 현재 map-record-to-recordmap-record-to-documentrule-action 파라미터의 유일한 유효값으로 지원합니다. map-record-to-recordmap-record-to-document 값은 exclude-columns 속성 목록의 일부로 제외되지 않은 레코드에 대해 AWS DMS가 기본적으로 수행하는 작업을 지정합니다. 이러한 값은 어떤 식으로든 속성 매핑에 영향을 미치지 않습니다.

관계형 데이터베이스에서 Timestream 주제로 마이그레이션할 때 map-record-to-record를 사용합니다. 이러한 규칙 유형은 Timestream 주제의 파티션 키로 관계형 데이터베이스의 taskResourceId.schemaName.tableName 값을 사용하며 소스 데이터베이스의 각 열마다 속성을 하나씩 생성합니다. map-record-to-record를 사용할 때 exclude-columns 속성 목록에 소스 테이블의 열이 나열되지 않은 경우, AWS DMS는 대상 주제에 해당 속성을 생성합니다. 이러한 해당 속성은 원본 열이 속성 매핑에 사용되는지 여부와 상관없이 생성됩니다.

map-record-to-record를 이해하는 한 가지 방법은 작업 중일 때 관찰하는 것입니다. 이 예에서는 다음 구조와 데이터를 사용하여 관계형 데이터베이스 테이블 행에서 시작한다고 가정합니다.

FirstName LastName StoreId HomeAddress HomePhone WorkAddress WorkPhone DateofBirth

Randy

Marsh

5

221B Baker Street

1234567890

31 Spooner Street, Quahog

9876543210

1988/02/29

이 정보를 Test라는 스키마에서 Timestream 주제로 마이그레이션하려면 데이터를 대상 주제로 매핑하는 규칙을 생성합니다. 다음 규칙은 그 매핑 과정을 보여 줍니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToTimestream", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "Test", "table-name": "Customers" } } ] }

다음은 지정된 Timestream 주제와 파티션 키(이 경우 taskResourceId.schemaName.tableName)로 Timestream 대상 주제의 샘플 데이터를 사용하여 결과 레코드 형식을 보여줍니다.

{ "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" }

AWS Database Migration Service의 대상으로 Amazon Timestream 사용 시 제한 사항

Amazon Timestream을 대상으로 사용할 때 적용되는 제한 사항은 다음과 같습니다.

  • 차원 및 타임스탬프: Timestream은 소스 데이터의 차원 및 타임스탬프를 복합 기본 키처럼 사용하며 이러한 값을 업서트하는 것도 허용하지 않습니다. 즉, 소스 데이터베이스에서 레코드의 타임스탬프 또는 차원을 변경하면 Timestream 데이터베이스가 새 레코드를 생성하려고 합니다. 따라서 레코드의 차원 또는 타임스탬프를 다른 기존 레코드의 차원 또는 타임스탬프와 일치하도록 변경하는 경우 AWS DMS가 새 레코드를 생성하거나 이전의 해당 레코드를 업데이트하는 대신 다른 레코드의 값을 업데이트할 수 있습니다.

  • DDL 명령: 현재 AWS DMS 릴리스에서는 CREATE TABLEDROP TABLE DDL 명령만 지원합니다.

  • 레코드 제한: Timestream에는 레코드 크기 및 측정값 크기와 같은 레코드에 대한 제한이 있습니다. 자세한 내용은 Amazon Timestream 개발자 안내서할당량을 참조하세요.

  • 레코드 및 Null 값 삭제: Timestream은 레코드 삭제를 지원하지 않습니다. 소스에서 삭제된 레코드의 마이그레이션을 지원하기 위해 AWS DMS는 Timestream 대상 데이터베이스의 레코드에서 해당 필드를 지웁니다. AWS DMS는 해당 대상 레코드의 필드 값을 숫자 필드의 경우 0, 텍스트 필드의 경우 null, 부울 필드의 경우 false로 변경합니다.

  • 대상으로 사용 시 Timestream은 관계형 데이터베이스(RDBMS)가 아닌 소스를 지원하지 않습니다.

  • AWS DMS는 다음 리전에서만 Timestream을 대상으로 지원합니다.

    • 미국 동부(버지니아 북부)

    • 미국 동부(오하이오)

    • 미국 서부(오레곤)

    • 유럽(아일랜드)

    • 유럽(프랑크푸르트)

    • 아시아 태평양(시드니)

    • 아시아 태평양(도쿄)

  • 대상으로 사용 시 Timestream은 TargetTablePrepModeTRUNCATE_BEFORE_LOAD로 설정하는 것을 지원하지 않습니다. 이 설정에는 DROP_AND_CREATE를 사용하는 것이 좋습니다.