쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

AWS Database Migration Service대상으로 Amazon DynamoDB 데이터베이스 사용

포커스 모드
AWS Database Migration Service대상으로 Amazon DynamoDB 데이터베이스 사용 - AWS 데이터베이스 마이그레이션 서비스

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

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

AWS DMS 를 사용하여 데이터를 Amazon DynamoDB 테이블로 마이그레이션할 수 있습니다. Amazon DynamoDB는 완전 관리형 NoSQL 데이터베이스 서비스로, 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다.는 관계형 데이터베이스 또는 MongoDB를 소스로 사용할 수 있도록 AWS DMS 지원합니다.

DynamoDB에서 테이블, 항목 및 속성은 작업 시 사용하는 핵심 구성 요소입니다. 테이블은 항목의 컬렉션이고 각 항목은 속성의 컬렉션입니다. DynamoDB는 파티션 키라는 기본 키를 사용하여 테이블의 각 항목을 고유하게 식별합니다. 또한 키와 보조 인덱스를 사용할 수 있어 쿼리 유연성이 향상됩니다.

객체 매핑을 사용하여 소스 데이터베이스에서 대상 DynamoDB 테이블로 데이터를 마이그레이션할 수 있습니다. 객체 매핑을 통해 소스 데이터가 대상에 배치되는 위치를 결정할 수 있습니다.

가 DynamoDB 대상 엔드포인트에 테이블을 AWS DMS 생성하면 소스 데이터베이스 엔드포인트에 있는 만큼의 테이블이 생성됩니다. AWS DMS 또한는 여러 DynamoDB 파라미터 값을 설정합니다. 테이블 생성 비용은 마이그레이션할 테이블 수와 데이터 양에 따라 달라집니다.

참고

AWS DMS 콘솔 또는의 SSL 모드 옵션은 일부 데이터 스트리밍 및 Kinesis 및 DynamoDB와 같은 서비스 없음SQL에는 적용되지 API 않습니다. 기본적으로 안전하므로는 SSL 모드 설정이 없음(SSL 모드=없음)과 동일함을 AWS DMS 보여줍니다. 엔드포인트에서를 사용하기 위해 추가 구성을 제공할 필요가 없습니다SSL. 예를 들어 DynamoDB를 대상 엔드포인트로 사용하는 경우 기본적으로 안전합니다. DynamoDB에 대한 모든 API 호출은를 사용SSL하므로 AWS DMS 엔드포인트에 추가 SSL 옵션이 필요하지 않습니다. DynamoDB 데이터베이스에 연결할 때 기본적으로 AWS DMS 가 사용하는 HTTPS 프로토콜을 사용하여 SSL 엔드포인트를 통해 데이터를 안전하게 입력하고 검색할 수 있습니다.

전송 속도를 높이기 위해는 DynamoDB 대상 인스턴스에 대한 멀티스레드 전체 로드를 AWS DMS 지원합니다.는 다음을 포함하는 작업 설정으로이 멀티스레딩을 DMS 지원합니다.

  • MaxFullLoadSubTasks -이 옵션을 사용하여 병렬로 로드할 최대 소스 테이블 수를 나타냅니다.는 전용 하위 작업을 사용하여 각 테이블을 해당 DynamoDB 대상 테이블에 DMS 로드합니다. 기본값은 8입니다. 최대값은 49입니다.

  • ParallelLoadThreads -이 옵션을 사용하여가 각 테이블을 DynamoDB 대상 테이블에 로드하는 데 AWS DMS 사용하는 스레드 수를 지정합니다. 기본값은 0입니다(단일 스레드). 최대값은 200입니다. 이 최대 한도를 증가시키도록 요청할 수 있습니다.

    참고

    DMS는 테이블의 각 세그먼트를 로드할 자체 스레드에 할당합니다. 따라서 ParallelLoadThreads를 소스의 테이블에 지정하는 최대 세그먼트 수로 설정합니다.

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

  • 개별 테이블에 대한 테이블 매핑 설정 – table-settings 규칙을 사용하여 소스에서 병렬로 로드할 개별 테이블을 식별합니다. 또한 멀티스레드 로딩을 위해 각 테이블의 행을 세그먼트화하는 방법도 이 규칙을 사용하여 지정합니다. 자세한 내용은 테이블 및 컬렉션 설정 규칙과 작업 단원을 참조하십시오.

참고

가 마이그레이션 작업에 DynamoDB 파라미터 값을 AWS DMS 설정하면 기본 읽기 용량 단위(RCU) 파라미터 값이 200으로 설정됩니다.

쓰기 용량 단위(WCU) 파라미터 값도 설정되지만 그 값은 여러 가지 다른 설정에 따라 달라집니다.

  • WCU 파라미터의 기본값은 200입니다.

  • ParallelLoadThreads 작업 설정이 1보다 크게 설정되면(기본값은 0) WCU 파라미터는 ParallelLoadThreads 값의 200배로 설정됩니다.

  • 사용하는 리소스에는 표준 AWS DMS 사용 요금이 적용됩니다.

관계형 데이터베이스에서 DynamoDB 테이블로 마이그레이션

AWS DMS 는 DynamoDB 스칼라 데이터 유형으로 데이터 마이그레이션을 지원합니다. Oracle 또는 MySQL와 같은 관계형 데이터베이스에서 DynamoDB로 마이그레이션할 때이 데이터를 저장하는 방법을 재구성할 수 있습니다.

현재는 DynamoDB 스칼라 유형 속성으로 단일 테이블을 단일 테이블로 재구성하는 것을 AWS DMS 지원합니다. 관계형 데이터베이스 테이블에서 데이터를 DynamoDB로 마이그레이션하려는 경우, 테이블에서 데이터를 가져와서 DynamoDB 스칼라 데이터 형식 속성으로 재지정합니다. 이 속성은 여러 열에서 데이터를 수락하여 열을 속성에 직접 매핑할 수 있습니다.

AWS DMS 는 다음과 같은 DynamoDB 스칼라 데이터 형식을 지원합니다.

  • String

  • 숫자

참고

NULL 소스의 데이터는 대상에서 무시됩니다.

DynamoDB를의 대상으로 사용하기 위한 사전 조건 AWS Database Migration Service

DynamoDB 데이터베이스를 대상으로 사용하기 전에 IAM 역할을 생성해야 AWS DMS합니다. 이 IAM 역할은 AWS DMS 가 마이그레이션 중인 DynamoDB 테이블에 대한 액세스 권한을 수임하고 부여하도록 허용해야 합니다. 최소 액세스 권한 세트는 다음 IAM 정책에 나와 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "dms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

DynamoDB로의 마이그레이션에 사용하는 역할에는 다음 권한이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:CreateTable", "dynamodb:DescribeTable", "dynamodb:DeleteTable", "dynamodb:DeleteItem", "dynamodb:UpdateItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:account-id:table/name1", "arn:aws:dynamodb:us-west-2:account-id:table/OtherName*", "arn:aws:dynamodb:us-west-2:account-id:table/awsdms_apply_exceptions", "arn:aws:dynamodb:us-west-2:account-id:table/awsdms_full_load_exceptions" ] }, { "Effect": "Allow", "Action": [ "dynamodb:ListTables" ], "Resource": "*" } ] }

DynamoDB를의 대상으로 사용할 때의 제한 사항 AWS Database Migration Service

DynamoDB를 대상으로 사용할 때에는 다음 제한 사항이 적용됩니다.

  • DynamoDB는 숫자 데이터 형식의 정밀도를 38자리로 제한합니다. 정밀도가 더 높은 모든 데이터 형식은 문자열로 저장합니다. 객체 매핑 기능을 사용하여 이것을 명시적으로 지정해야 합니다.

  • DynamoDB에는 날짜 데이터 형식이 없기 때문에 날짜 데이터 형식을 사용한 데이터는 문자열로 변환됩니다.

  • DynamoDB에서는 기본 키 속성 업데이트를 허용하지 않습니다. 이 제한은 대상에 원치 않는 데이터가 발생할 수 있으므로 변경 데이터 캡처(CDC)와 함께 지속적 복제를 사용할 때 중요합니다. 객체 매핑 방법에 따라 기본 키를 업데이트하는 CDC 작업은 두 가지 중 하나를 수행할 수 있습니다. 즉, 실패하거나 업데이트된 키와 불완전한 데이터로 새 항목을 삽입할 수 있습니다.

  • AWS DMS 는 비복합 기본 키가 있는 테이블의 복제만 지원합니다. 예외는 사용자 지정 파티션 키나 정렬 키 또는 두 키를 모두 사용하여 대상 테이블의 객체 매핑을 지정하는 경우입니다.

  • AWS DMS 는 LOB가 아닌 한 데이터를 지원하지 않습니다CLOB.는 CLOB 데이터를 마이그레이션할 때 데이터를 DynamoDB 문자열로 AWS DMS 변환합니다.

  • DynamoDB를 대상으로 사용하는 경우 예외 적용 제어 테이블(dmslogs.awsdms_apply_exceptions)만 지원됩니다. 제어 테이블에 대한 자세한 내용은 제어 테이블 작업 설정 섹션을 참조하세요.

  • AWS DMS 는 DynamoDB에 TargetTablePrepMode=TRUNCATE_BEFORE_LOAD 대한 작업 설정을 대상으로 지원하지 않습니다.

  • AWS DMS 는 DynamoDB에 TaskRecoveryTableEnabled 대한 작업 설정을 대상으로 지원하지 않습니다.

  • BatchApply는 DynamoDB 엔드포인트에서 지원되지 않습니다.

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

AWS DMS 는 테이블 매핑 규칙을 사용하여 소스의 데이터를 대상 DynamoDB 테이블에 매핑합니다. 데이터를 DynamoDB 대상에 매핑하려면 객체 매핑이라는 테이블 매핑 규칙 유형을 사용합니다. 객체 매핑을 통해 마이그레이션할 속성 이름과 데이터를 정의할 수 있습니다. 객체 매핑을 사용할 때는 선택 규칙이 있어야 합니다.

DynamoDB에는 파티션 키와 정렬 키(선택 사항) 외에 사전 설정 구조가 없습니다. 비복합 기본 키가 있는 경우 AWS DMS 에서 사용합니다. 복합 기본 키가 있거나 정렬 키를 사용하려는 경우, 대상 DynamoDB 테이블에서 이러한 키와 기타 속성을 정의하십시오.

객체 매핑 규칙을 만들려면 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": "" }, "target-table-name": "<table_name>" } ] }

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

  • 관계형 데이터베이스에서 DynamoDB로 마이그레이션할 때 map-record-to-record를 사용할 수 있습니다. 이것은 DynamoDB에서 파티션 키로서 관계형 데이터베이스의 기본 키를 사용하고 소스 데이터베이스의 각 열마다 속성을 생성합니다. 를 사용할 때 exclude-columns 속성 목록에 나열되지 않은 소스 테이블의 모든 열에 map-record-to-record대해는 대상 DynamoDB 인스턴스에 해당 속성을 AWS DMS 생성합니다. 이 속성은 소스 열이 속성 매핑에 사용되는지 여부와 상관없이 생성됩니다.

  • 속성 이름 '_doc'를 사용하여 대상에 있는 단일한 플랫 DynamoDB 맵에 소스 열을 배치하려면 map-record-to-document를 사용합니다. map-record-to-document를 사용할 때는 데이터를 소스의 단일 평면 DynamoDB 맵 속성에 AWS DMS 배치합니다. 이 속성을 '_doc'라고 합니다. 이 배치는 exclude-columns 속성 목록에 나열되지 않은 소스 테이블의 모든 열에 적용됩니다.

rule-action 파라미터 map-record-to-recordmap-record-to-document의 차이를 이해하는 한 가지 방법은 두 파라미터를 실행하는 것입니다. 이 예에서는 다음 구조와 데이터를 사용하여 관계형 데이터베이스 테이블 행에서 시작한다고 가정합니다.

샘플 데이터베이스 예

이 정보를 DynamoDB로 마이그레이션하려면 데이터를 DynamoDB 테이블 항목으로 매핑하는 규칙을 생성해야 합니다. exclude-columns 파라미터에 대해 나열된 열을 기록합니다. 이러한 열은 대상에 직접 매핑되지 않습니다. 대신, 속성 매핑은 데이터를 새 항목으로 결합하는 데 사용됩니다. 예를 들어FirstName, 및 LastName가 DynamoDB 대상CustomerName에 포함되도록 그룹화됩니다. NickName소득은 제외되지 않습니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "test", "table-name": "customer" }, "target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ { "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${FirstName},${LastName}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "dynamodb-map", "value": { "M": { "Home": { "M": { "Address": { "S": "${HomeAddress}" }, "Phone": { "S": "${HomePhone}" } } }, "Work": { "M": { "Address": { "S": "${WorkAddress}" }, "Phone": { "S": "${WorkPhone}" } } } } } } ] } } ] }

rule-action 파라미터를 사용하면 NickName소득map-record-to-record에 대한 데이터가 DynamoDB 대상에서 동일한 이름의 항목에 매핑됩니다.

시작하기 AWS DMS

그러나 동일한 규칙을 사용하지만 rule-action 파라미터를 로 변경한다고 가정해 보겠습니다map-record-to-document. 이 경우 exclude-columns 파라미터 NickName소득에 나열되지 않은 열은 _doc 항목에 매핑됩니다.

시작하기 AWS DMS

객체 매핑과 함께 사용자 지정 조건식 사용

조건식이라는 DynamoDB의 기능을 사용하여 DynamoDB 테이블에 작성되고 있는 데이터를 조작할 수 있습니다. DynamoDB의 조건식에 대한 자세한 내용은 조건식 단원을 참조하십시오.

조건식 멤버의 구성 요소는 다음과 같습니다.

  • 표현식(필수)

  • 표현식 속성 값(선택 사항). 속성 값의 json 구조를 지정합니다.

  • 표현식 속성 이름(선택 사항)

  • 조건식을 사용할 때 수반되는 옵션(선택 사항). 기본값은 = false, apply-during-full-load = true입니다. apply-during-cdc

이 규칙의 구조는 다음과 같습니다.

"target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "condition-expression": { "expression":"<conditional expression>", "expression-attribute-values": [ { "name":"<attribute name>", "value":<attribute value> } ], "apply-during-cdc":<optional Boolean value>, "apply-during-full-load": <optional Boolean value> }

다음 샘플은 조건식에 사용되는 섹션을 강조한 것입니다.

시작하기 AWS DMS

객체 매핑과 함께 속성 매핑 사용

속성 매핑을 통해 소스 열 이름을 사용한 템플릿 문자열을 지정하여 대상에서 데이터를 재구성할 수 있습니다. 사용자가 템플릿에서 지정한 항목 외에 완료한 서식 변경이 없습니다.

다음 예는 소스 데이터베이스의 구조와 필요한 DynamoDB 대상 구조를 보여 줍니다. 첫 번째는 소스(이 경우, Oracle 데이터베이스)의 구조를, 그 다음은 필요한 DynamoDB 데이터 구조를 나타냅니다. 이 예제는 원하는 대상 구조를 생성하는 데 JSON 사용되는 로 끝납니다.

Oracle 데이터의 구조는 다음과 같습니다.

FirstName LastName StoreId HomeAddress HomePhone WorkAddress WorkPhone DateOfBirth
기본 키 N/A
Randy Marsh 5 221B Baker Street 1234567890 31 Spooner Street, Quahog 9876543210 1988/02/29

DynamoDB 데이터의 구조는 다음과 같습니다.

CustomerName StoreId ContactDetails DateOfBirth
파티션 키 정렬 키 N/A
Randy,Marsh
5
{ "Name": "Randy", "Home": { "Address": "221B Baker Street", "Phone": 1234567890 }, "Work": { "Address": "31 Spooner Street, Quahog", "Phone": 9876541230 } }
02/29/1988

다음은 DynamoDB 구조를 달성하는 데 사용되는 객체 매핑 및 열 매핑을 JSON 보여줍니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "test", "table-name": "customer" }, "target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ { "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${FirstName},${LastName}" }, { "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${StoreId}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "{\"Name\":\"${FirstName}\",\"Home\":{\"Address\":\"${HomeAddress}\",\"Phone\":\"${HomePhone}\"}, \"Work\":{\"Address\":\"${WorkAddress}\",\"Phone\":\"${WorkPhone}\"}}" } ] } } ] }

열 매핑을 사용하는 또 다른 방법은 DynamoDB 형식을 문서 형식으로 사용하는 것입니다. 다음 코드 예제에서는 dynamodb-map을 속성 매핑을 위한 attribute-sub-type으로 사용합니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "TransformToDDB", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "test", "table-name": "customer" }, "target-table-name": "customer_t", "mapping-parameters": { "partition-key-name": "CustomerName", "sort-key-name": "StoreId", "exclude-columns": [ "FirstName", "LastName", "HomeAddress", "HomePhone", "WorkAddress", "WorkPhone" ], "attribute-mappings": [ { "target-attribute-name": "CustomerName", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${FirstName},${LastName}" }, { "target-attribute-name": "StoreId", "attribute-type": "scalar", "attribute-sub-type": "string", "value": "${StoreId}" }, { "target-attribute-name": "ContactDetails", "attribute-type": "document", "attribute-sub-type": "dynamodb-map", "value": { "M": { "Name": { "S": "${FirstName}" }, "Home": { "M": { "Address": { "S": "${HomeAddress}" }, "Phone": { "S": "${HomePhone}" } } }, "Work": { "M": { "Address": { "S": "${WorkAddress}" }, "Phone": { "S": "${WorkPhone}" } } } } } } ] } } ] }

의 대안으로 다음 예제와 attribute-sub-type 같이 속성 매핑에를 dynamodb-list로 사용할 dynamodb-map수 있습니다.

{ "target-attribute-name": "ContactDetailsList", "attribute-type": "document", "attribute-sub-type": "dynamodb-list", "value": { "L": [ { "N": "${FirstName}" }, { "N": "${HomeAddress}" }, { "N": "${HomePhone}" }, { "N": "${WorkAddress}" }, { "N": "${WorkPhone}" } ] } }

예제 1: 객체 매핑과 함께 속성 매핑 사용

다음 예제에서는 nfl_datasport_team이라는 두 개의 내SQL 데이터베이스 테이블에서 NFLTeams 및 라는 두 개의 DynamoDB 테이블로 데이터를 마이그레이션합니다SportTeams. 내SQL 데이터베이스 테이블의 데이터를 DynamoDB 테이블에 매핑하는 데 JSON 사용되는 테이블의 구조와는 다음과 같습니다.

내SQL 데이터베이스 테이블 nfl_data의 구조는 다음과 같습니다.

mysql> desc nfl_data; +---------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+-------+ | Position | varchar(5) | YES | | NULL | | | player_number | smallint(6) | YES | | NULL | | | Name | varchar(40) | YES | | NULL | | | status | varchar(10) | YES | | NULL | | | stat1 | varchar(10) | YES | | NULL | | | stat1_val | varchar(10) | YES | | NULL | | | stat2 | varchar(10) | YES | | NULL | | | stat2_val | varchar(10) | YES | | NULL | | | stat3 | varchar(10) | YES | | NULL | | | stat3_val | varchar(10) | YES | | NULL | | | stat4 | varchar(10) | YES | | NULL | | | stat4_val | varchar(10) | YES | | NULL | | | team | varchar(10) | YES | | NULL | | +---------------+-------------+------+-----+---------+-------+

내SQL 데이터베이스 테이블 sport_team의 구조는 다음과 같습니다.

mysql> desc sport_team; +---------------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------------------+--------------+------+-----+---------+----------------+ | id | mediumint(9) | NO | PRI | NULL | auto_increment | | name | varchar(30) | NO | | NULL | | | abbreviated_name | varchar(10) | YES | | NULL | | | home_field_id | smallint(6) | YES | MUL | NULL | | | sport_type_name | varchar(15) | NO | MUL | NULL | | | sport_league_short_name | varchar(10) | NO | | NULL | | | sport_division_short_name | varchar(10) | YES | | NULL | |

테이블 2개를 DynamoDB 테이블 2개에 매핑하는 데 사용된 테이블 매핑 규칙은 다음과 같습니다.

{ "rules":[ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "dms_sample", "table-name": "nfl_data" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "dms_sample", "table-name": "sport_team" }, "rule-action": "include" }, { "rule-type":"object-mapping", "rule-id":"3", "rule-name":"MapNFLData", "rule-action":"map-record-to-record", "object-locator":{ "schema-name":"dms_sample", "table-name":"nfl_data" }, "target-table-name":"NFLTeams", "mapping-parameters":{ "partition-key-name":"Team", "sort-key-name":"PlayerName", "exclude-columns": [ "player_number", "team", "name" ], "attribute-mappings":[ { "target-attribute-name":"Team", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"${team}" }, { "target-attribute-name":"PlayerName", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"${name}" }, { "target-attribute-name":"PlayerInfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"{\"Number\": \"${player_number}\",\"Position\": \"${Position}\",\"Status\": \"${status}\",\"Stats\": {\"Stat1\": \"${stat1}:${stat1_val}\",\"Stat2\": \"${stat2}:${stat2_val}\",\"Stat3\": \"${stat3}:${ stat3_val}\",\"Stat4\": \"${stat4}:${stat4_val}\"}" } ] } }, { "rule-type":"object-mapping", "rule-id":"4", "rule-name":"MapSportTeam", "rule-action":"map-record-to-record", "object-locator":{ "schema-name":"dms_sample", "table-name":"sport_team" }, "target-table-name":"SportTeams", "mapping-parameters":{ "partition-key-name":"TeamName", "exclude-columns": [ "name", "id" ], "attribute-mappings":[ { "target-attribute-name":"TeamName", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"${name}" }, { "target-attribute-name":"TeamInfo", "attribute-type":"scalar", "attribute-sub-type":"string", "value":"{\"League\": \"${sport_league_short_name}\",\"Division\": \"${sport_division_short_name}\"}" } ] } } ] }

NFLTeams DynamoDB 테이블의 샘플 출력은 다음과 같습니다.

"PlayerInfo": "{\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": {\"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"}", "PlayerName": "Allen, Ryan", "Position": "P", "stat1": "PUNTS", "stat1_val": "73", "stat2": "AVG", "stat2_val": "46", "stat3": "LNG", "stat3_val": "67", "stat4": "IN 20", "stat4_val": "31", "status": "ACT", "Team": "NE" }

SportsTeams DynamoDB 테이블의 샘플 출력은 다음과 같습니다.

{ "abbreviated_name": "IND", "home_field_id": 53, "sport_division_short_name": "AFC South", "sport_league_short_name": "NFL", "sport_type_name": "football", "TeamInfo": "{\"League\": \"NFL\",\"Division\": \"AFC South\"}", "TeamName": "Indianapolis Colts" }

DynamoDB에 대한 대상 데이터 형식

용 DynamoDB 엔드포인트는 대부분의 DynamoDB 데이터 형식을 AWS DMS 지원합니다. 다음 표에는를 사용할 때 지원되는 Amazon AWS DMS 대상 데이터 형식 AWS DMS 과 AWS DMS 데이터 형식의 기본 매핑이 나와 있습니다.

AWS DMS 데이터 유형에 대한 자세한 내용은 섹션을 참조하세요AWS Database Migration Service에서 사용되는 데이터 형식.

가 이기종 데이터베이스에서 데이터를 AWS DMS 마이그레이션하면 소스 데이터베이스의 데이터 유형을 AWS DMS 데이터 유형이라는 중간 데이터 유형으로 매핑합니다. 그런 다음, 중간 데이터 형식을 대상 데이터 형식에 매핑합니다. 다음 표에는 DynamoDB에서 매핑되는 각 AWS DMS 데이터 유형과 데이터 유형이 나와 있습니다.

AWS DMS 데이터 유형 DynamoDB 데이터 형식

String

문자열

WString

String

부울

날짜

String

DateTime

String

INT1

숫자

INT2

숫자

INT4

숫자

INT8

숫자

숫자

숫자

Real4

숫자

Real8

숫자

UINT1

숫자

UINT2

숫자

UINT4

숫자

UINT8 숫자
CLOB String
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.