Amazon DocumentDB 도큐먼트DB를 타겟으로 사용AWSDatabase Migration Service - AWS Database Migration Service

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

Amazon DocumentDB 도큐먼트DB를 타겟으로 사용AWSDatabase Migration Service

다음을 사용할 수 있습니다.AWS DMS다음과 같은 원본 데이터 엔진에서 Amazon DocumentDB (MongoDB 호환) 로 데이터를 마이그레이션하려면AWS DMS지원. 소스 엔진은 다음 엔진에 있을 수 있습니다.AWS-아마존 RDS, Aurora 또는 Amazon S3 S3와 같은 관리형 서비스. 또는 Amazon EC2 EC2에서 실행되는 MongoDB와 같은 자체 관리형 데이터베이스에 엔진이 있을 수 있습니다.

다음을 사용할 수 있습니다.AWS DMS소스 데이터를 Amazon DocumentDB 데이터베이스, 컬렉션 또는 문서에 복제할 수 있습니다.

참고

소스 엔드포인트가 MongoDB 또는 Amazon DocumentDB인 경우 에서 마이그레이션을 실행합니다.Document.

MongoDB는 데이터를 바이너리 JSON 형식 (BSON) 으로 저장합니다.AWS DMSAmazon DocumentDB에서 지원하는 모든 BSON 데이터 형식을 지원합니다. 이러한 데이터 형식의 목록은 단원을 참조하세요.지원되는 MongoDB API, 작업 및 데이터 유형에서Amazon DocumentDB 개발자 안내서.

소스 엔드포인트가 관계형 데이터베이스인 경우AWS DMS다음과 같이 데이터베이스 객체를 Amazon DocumentDB에 매핑합니다.

  • 관계형 데이터베이스 또는 데이터베이스 스키마는 Amazon DocumentDB에 매핑됩니다.데이터베이스.

  • 관계형 데이터베이스 내의 테이블은 다음에 매핑됩니다.컬렉션Amazon DocumentDB에서

  • 관계형 테이블의 레코드는 다음에 매핑됩니다.서류Amazon DocumentDB에서 각 문서는 원본 레코드의 데이터로 구성됩니다.

소스 엔드포인트가 Amazon S3 S3인 경우 결과 Amazon DocumentDB 객체는 다음에 해당합니다.AWS DMSAmazon S3 대한 매핑 규칙 예를 들어 다음 URI를 고려해 보십시오.

s3://mybucket/hr/employee

이 예제의 경우,AWS DMS객체를 매핑합니다.mybucketAmazon DocumentDB DocumentDB에 다음과 같이 전송합니다.

  • 최상위 URI 부분 (hr) 는 Amazon DocumentDB 데이터베이스에 매핑됩니다.

  • 다음 URI 부분 (employee) Amazon DocumentDB 컬렉션에 매핑됩니다.

  • 의 각 객체employee아마존 DocumentDB의 문서에 매핑됩니다.

Amazon S3 S3용 매핑 규칙에 대한 자세한 내용은 단원을 참조하십시오.Amazon S3 에서 소스로 사용AWS DMS.

Amazon DocumentDB를 대상으로 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.AWS DMS다음 섹션을 참조하세요.

참고

a를 위해 step-by-step 마이그레이션 프로세스 안내 (참조)MongoDB에서 Amazon DocumentDB 도큐먼트DB로 마이그레이션하기에서AWS Database Migration Service단계별 마이그레이션 안내서.

소스의 데이터를 Amazon DocumentDB 타겟으로 매핑

AWS DMS는 소스 엔드포인트에서 레코드를 읽고 판독한 데이터를 토대로 JSON 문서를 구성합니다. 각 JSON 문서에서 AWS DMS는 고유한 식별자 역할을 하는 _id 필드를 확인해야 합니다. 그런 다음 다음을 사용하여 JSON 문서를 Amazon DocumentDB 컬렉션에 기록합니다._id필드를 기본 키로 사용합니다.

단일 열인 소스 데이터

단일 열로 구성된 원본 데이터는 문자열 형식으로 간주됩니다. (소스 엔진에 따라 실제 데이터 유형은 VARCHAR, NVARCHAR, TEXT, LOB, CLOB 등이 될 수 있습니다.)AWS DMS는 데이터가 유효한 JSON 문서라고 가정하고 데이터를 Amazon DocumentDB DocumentDB에 있는 그대로 복제합니다.

결과 JSON 문서에 다음과 같은 필드가 포함된 경우_id, 그러면 해당 필드가 고유 필드로 사용됩니다._idAmazon DocumentDB에서

JSON에 포함되지 않은 경우_id필드를 입력하면 Amazon DocumentDB DocumentDB가 다음을 생성합니다._id값을 자동으로 지정합니다.

다중 열인 소스 데이터

원본 데이터가 여러 개의 열로 구성된 경우, AWS DMS는 이러한 모든 열에서 JSON 문서를 구성합니다. 해당 문서에 대한 _id 필드를 확인하기 위해 AWS DMS는 다음과 같이 진행됩니다.

  • 열 중 하나의 이름이 _id이면 해당 열의 데이터가 대상 _id로 사용됩니다.

  • _id 열은 없지만 원본 데이터가 기본 키나 고유한 인덱스를 가지고 있으면 AWS DMS는 _id 값으로 해당 키 또는 인덱스 값을 사용합니다. 또한 기본 키 또는 고유 인덱스에서 나온 데이터는 JSON 문서에 명시적 필드 형태로 나타납니다.

  • 없는 경우_id열을 사용하고 기본 키나 고유 인덱스가 없는 경우 Amazon DocumentDB는_id값을 자동으로 지정합니다.

대상 엔드포인트에서 데이터 형식을 강제로 적용

AWS DMSAmazon DocumentDB 대상 엔드포인트에 데이터를 쓸 때 데이터 구조를 수정할 수 있습니다. 소스 엔드포인트에서 열과 테이블의 이름을 변경하거나 작업 실행 시 적용되는 변환 규칙을 제공하여 이러한 변경을 요청할 수 있습니다.

중첩 JSON 문서(json_ prefix) 사용

데이터 형식을 강제로 적용하려면 직접, 또는 변환 기능을 사용해 원본 열 이름에 json_(즉, json_columnName) 접두사를 붙일 수 있습니다. 이 경우, 열은 문자열 필드가 아니라 대상 문서 내에 중첩 JSON 문서 형태로 생성됩니다.

예를 들어 MongoDB 원본 엔드포인터에서 다음 문서를 마이그레이션하고 싶다고 가정해 봅시다.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}" }

원본 데이터 유형을 강제로 적용하지 않으면 기본적으로 포함된 ContactDetails 문서가 문자열 형태로 마이그레이션됩니다.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}" }

하지만 JSON 객체에 ContactDetails를 강제 적용하기 위한 변환 규칙을 추가할 수 있습니다. 예를 들어 원래의 원본 열 이름이 ContactDetails라고 가정해 봅시다. 데이터 유형을 중첩된 JSON으로 강제 변환하려면 소스 엔드포인트의 열 이름을 json_로 변경해야 합니다.ContactDetails” 는 소스에 “*json_*” 접두사를 수동으로 추가하거나 변환 규칙을 통해 추가할 수 있습니다. 예를 들어, 다음 변환 규칙을 사용할 수 있습니다.

{ "rules": [ { "rule-type": "transformation", "rule-id": "1", "rule-name": "1", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "ContactDetails" }, "rule-action": "rename", "value": "json_ContactDetails", "old-value": null } ] }

AWS DMS를 복제합니다 ContactDetails 필드는 다음과 같이 중첩된 JSON입니다.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": { "Home": { "Address": "Boston", "Phone": "1111111111" }, "Work": { "Address": "Boston", "Phone": "2222222222" } } }

JSON 배열(array_ prefix) 사용

데이터 형식을 강제로 적용하려면 직접, 또는 변환 기능을 사용해 열 이름에 array_(즉, array_columnName) 접두사를 붙일 수 있습니다. 이 경우, AWS DMS는 해당 열을 JSON 어레이로 간주하고 대상 문서에서와 같이 이를 생성합니다.

MongoDB 원본 엔드포인터에서 다음 문서를 마이그레이션하고 싶다고 가정해 봅시다.

{ "_id" : "1", "FirstName": "John", "LastName": "Doe",
 "ContactAddresses": ["Boston", "New York"],
 "ContactPhoneNumbers": ["1111111111", "2222222222"] }

원본 데이터 유형을 강제로 적용하지 않으면 기본적으로 포함된 ContactDetails 문서가 문자열 형태로 마이그레이션됩니다.

{ "_id": "1", "FirstName": "John", "LastName": "Doe",
 "ContactAddresses": "[\"Boston\", \"New York\"]",
 "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]"
 }

하지만 JSON 어레이에 ContactAddressContactPhoneNumbers를 강제 적용하기 위한 변환 규칙을 추가할 수 있습니다(아래 표 참조).

원래의 소스 열 이름 이름이 변경된 소스 열
ContactAddress array_ContactAddress
ContactPhoneNumbers array_ContactPhoneNumbers

AWS DMS는 다음과 같이 ContactAddressContactPhoneNumbers를 복제합니다.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] }

TLS를 사용하여 Amazon DocumentDB 도큐먼트DB에 연결

기본적으로 새로 생성된 Amazon DocumentDB 클러스터는 TLS (전송 계층 보안) 를 사용한 보안 연결만 허용합니다. TLS가 활성화되면 Amazon DocumentDB DocumentDB에 연결할 때마다 공개 키가 필요합니다.

파일을 다운로드하여 Amazon DocumentDB 퍼블릭 키를 검색할 수 있습니다.rds-combined-ca-bundle.pem1 (사용)AWS- Amazon S3 버킷에 호스팅되었습니다. 이 파일 다운로드에 대한 자세한 내용은 단원을 참조하세요.TLS를 사용한 연결 암호화에서Amazon DocumentDB Developer Guide

이 .pem 파일을 다운로드한 후 다음 설명에 따라 AWS DMS에 포함된 퍼블릭 키를 가져올 수 있습니다.

AWS Management Console

퍼블릭 키(.pem) 파일을 가져오려면

  1. 을 엽니다.AWS DMS콘솔 세트https://console.aws.amazon.com/dms.

  2. 탐색 창에서 [Certificates]를 선택합니다.

  3. 인증서 가져오기를 선택하고 다음과 같이 합니다.

    • 인증서 식별자에 해당 인증서의 고유 이름(예: docdb-cert)을 입력합니다.

    • 파일 가져오기에서 .pem 파일이 저장된 위치로 이동합니다.

    원하는 대로 설정이 되었으면 새 CA 인증서 추가를 선택합니다.

AWS CLI

다음 예와 같이 aws dms import-certificate 명령을 사용하십시오.

aws dms import-certificate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem

AWS DMS 대상 엔드포인트를 생성할 때 인증서 식별자(예: docdb-cert)를 제공합니다. 또한 SSL 모드 파라미터를 verify-full로 설정합니다.

Amazon DocumentDB DocumentDB를 타겟으로 하여 지속적인 복제

지속적인 복제가 활성화된 경우AWS DMSAmazon DocumentDB 문서가 소스와 동기화된 상태로 유지되도록 합니다. 소스 레코드가 생성되거나 업데이트될 때AWS DMS먼저 다음 작업을 수행하여 어떤 Amazon DocumentDB 레코드가 영향을 받는지 확인해야 합니다.

  • 원본 레코드에 다음과 같은 열이 있는 경우_id, 해당 열의 값에 따라 해당 열이 결정됩니다._id아마존 도큐먼트DB 컬렉션에서

  • 없는 경우_id열, 하지만 소스 데이터에 기본 키 또는 고유 인덱스가 있는 경우AWS DMS해당 키 또는 인덱스 값을_id아마존 도큐먼트DB 컬렉션용.

  • 원본 레코드에 원본 레코드가 없는 경우_id열, 기본 키 또는 고유 색인,AWS DMS모든 소스 열을 Amazon DocumentDB 컬렉션의 해당 필드와 일치시킵니다.

새 소스 레코드가 생성되면AWS DMSAmazon DocumentDB에 해당 문서를 작성합니다. 기존 소스 레코드가 업데이트되는 경우AWS DMSAmazon DocumentDB DocumentDB에서 대상 문서의 해당 필드를 업데이트합니다. 대상 문서에는 존재하지만 원본 레코드에 존재하지 않는 필드는 그대로 남아 있습니다.

소스 레코드가 삭제되면AWS DMS아마존 DocumentDB에서 해당 문서를 삭제합니다.

소스에서 구조 변경(DDL)

지속적인 복제를 통해 소스 데이터 구조 (예: 테이블, 열 등) 에 대한 모든 변경 사항이 Amazon DocumentDB 해당 구조에 전파됩니다. 관계형 데이터베이스에서 이러한 변경 사항은 데이터 정의 언어(DDL) 명령문을 사용해 시작됩니다. 방법을 알 수 있습니다AWS DMS다음 표의 Amazon DocumentDB DocumentDB에 이러한 변경 사항을 전파합니다.

소스의 DDL 아마존 도큐먼트DB 타겟에 미치는 영향
CREATE TABLE 빈 모음을 생성합니다.
테이블 이름을 변경하는 명령문(RENAME TABLE, ALTER TABLE...RENAME 등) 모음의 이름을 바꿉니다.
TRUNCATE TABLE 해당 모음에서 모든 문서를 제거합니다(단, HandleSourceTableTruncatedtrue인 경우에만). 자세한 내용은 변경 처리 DDL을 다루기 위한 작업 설정을 참조하세요.
DROP TABLE 해당 모음을 삭제합니다(단, HandleSourceTableDroppedtrue인 경우에만). 자세한 내용은 변경 처리 DDL을 다루기 위한 작업 설정을 참조하세요.
테이블에 열을 추가하는 명령문(ALTER TABLE...ADD 등) DDL 명령문이 무시되면서 경고가 발행됩니다. 첫 번째 INSERT가 원본에서 수행될 때 대상 문서에 새 필드가 추가됩니다.
ALTER TABLE...RENAME COLUMN DDL 명령문이 무시되면서 경고가 발행됩니다. 첫 번째 INSERT가 원본에서 수행될 때 대상 문서에 새로운 이름의 필드가 추가됩니다.
ALTER TABLE...DROP COLUMN DDL 명령문이 무시되면서 경고가 발행됩니다.
열 데이터 형식을 변경하는 명령문(ALTER COLUMN...MODIFY 등) DDL 명령문이 무시되면서 경고가 발행됩니다. 첫 번째 INSERT가 원본에서 새 데이터 형식으로 수행될 때 이러한 새 데이터 형식을 가진 필드와 함께 대상 문서가 생성됩니다.

Amazon DocumentDB DocumentDB를 타겟으로 사용하는 것에 대한 제한

Amazon DocumentDB를 의 대상으로 사용할 경우 다음과 같은 제한이 적용됩니다.AWS DMS:

  • Amazon DocumentDB DocumentDB에서 컬렉션 이름은 달러 기호 ($) 를 포함할 수 없습니다. 또한 데이터베이스 이름에는 어떤 Unicode 문자도 포함될 수 없습니다.

  • AWS DMS여러 소스 테이블을 단일 Amazon DocumentDB 컬렉션으로 병합하는 것을 지원하지 않습니다.

  • AWS DMS가 기본 키가 없는 원본 데이터에서 변경 사항을 처리할 때 해당 테이블의 모든 LOB 열이 무시됩니다.

  • Change table(변경 테이블) 옵션이 활성화되고 AWS DMS에 "_id"라는 원본 열이 나타나면 해당 열은 변경 테이블에 "__id"(2개의 밑줄)로 표시됩니다.

  • 소스 엔드포인트로 Oracle을 선택하면 Oracle 원본에서 전체 보충 로깅을 활성화해야 합니다. 그렇지 않으면 원본에 변경되지 않은 열이 있는 경우 데이터가 Amazon DocumentDB에 null 값으로 로드됩니다.

  • 복제 작업 설정,TargetTablePrepMode:TRUNCATE_BEFORE_LOADDocumentDB 대상 엔드포인트와 함께 사용할 수 없습니다.

Amazon DocumentDB DocumentDB용 대상 데이터 유형

다음 표에는 사용 시 지원되는 Amazon DocumentDB 대상 데이터 형식이 나와 있습니다.AWSDMS 및 기본 매핑AWSDMS 데이터 유형. 에 대한 자세한 내용은AWSDMS 데이터 유형, 참조데이터 형식AWSDatabase Migration Service.

AWSDMS 데이터 형식

Amazon DocumentDB 데이터 형식

BOOLEAN

부울

BYTES

이진 데이터

DATE

날짜

TIME

문자열(UTF8)

DATETIME

날짜

INT1

32비트 정수

INT2

32비트 정수

INT4

32비트 정수

INT8

64비트 정수

NUMERIC

문자열(UTF8)

REAL4

Double

REAL8

Double

STRING

데이터가 JSON으로 인식되면AWS DMS이를 Amazon DocumentDB DocumentDB에 문서로 마이그레이션합니다. 그렇지 않으면 데이터가 문자열(UTF8)로 매핑됩니다.

UINT1

32비트 정수

UINT2

32비트 정수

UINT4

64비트 정수

UINT8

문자열(UTF8)

WSTRING

데이터가 JSON으로 인식되면AWS DMS이를 Amazon DocumentDB DocumentDB에 문서로 마이그레이션합니다. 그렇지 않으면 데이터가 문자열(UTF8)로 매핑됩니다.

BLOB

이진수

CLOB

데이터가 JSON으로 인식되면AWS DMS이를 Amazon DocumentDB DocumentDB에 문서로 마이그레이션합니다. 그렇지 않으면 데이터가 문자열(UTF8)로 매핑됩니다.

NCLOB

데이터가 JSON으로 인식되면AWS DMS이를 Amazon DocumentDB DocumentDB에 문서로 마이그레이션합니다. 그렇지 않으면 데이터가 문자열(UTF8)로 매핑됩니다.