AWS Database Migration Service
사용 설명서 (버전 API Version 2016-01-01)

작업 설정을 지정하기 위한 테이블 매핑 사용

테이블 매핑에서는 여러 유형의 규칙을 사용하여 데이터 원본, 원본 스키마, 데이터, 작업 중 발생하는 모든 변환을 지정합니다. 테이블 매핑을 사용하여 마이그레이션할 데이터베이스의 개별 테이블과 마이그레이션에 사용할 스키마를 지정할 수 있습니다. 또한, 필터를 사용하여 필요한 지정된 테이블 열에서 복제할 데이터를 지정할 수 있습니다. 변환을 사용하여 대상 데이터베이스에 기록된 데이터를 수정할 수 있습니다.

콘솔에서 테이블 매핑을 통해 테이블 선택 및 변환 지정

테이블 선택과 변환 지정을 포함하여 AWS Management 콘솔을 사용하여 테이블 매핑을 수행할 수 있습니다. 콘솔에서 위치 섹션을 사용하여 스키마, 테이블, 작업을 지정합니다(포함 또는 제외). 필터 섹션을 사용하여 테이블에서 열 이름과 복제 작업에 적용할 조건을 지정합니다. 이와 함께 이 두 작업은 선택 규칙을 생성합니다.

1개 이상의 선택 규칙을 지정한 후 테이블 매핑에 변환을 포함시킬 수 있습니다. 변환을 사용하여 스키마나 테이블 이름을 변경하거나, 스키마나 테이블에 접두사나 접미사를 추가하거나, 또는 테이블 열을 제거할 수 있습니다.

다음 예제는 EntertainmentAgencySample이라는 스키마에서 Customers라는 테이블의 선택 규칙을 설정하는 방법을 보여줍니다. 가이드 탭에서 선택 규칙과 변환을 만듭니다. 이 탭은 소스 엔드포인트에 스키마와 테이블 정보가 있을 경우에만 표시됩니다.

AWS 콘솔을 사용하여 테이블 선택, 필터 기준, 변환을 지정하려면

  1. AWS Management 콘솔에 로그인하고 AWS DMS 선택을 수행합니다. AWS Identity and Access Management(IAM) 사용자로 로그인한 경우에는 AWS DMS에 액세스하기 위한 적절한 권한이 있어야 합니다. 필요한 권한에 대한 자세한 내용은 AWS DMS 사용에 필요한 IAM 권한 섹션을 참조하십시오.

  2. [Dashboard] 페이지에서 [Tasks]를 선택합니다.

  3. [Create Task]를 선택합니다.

  4. [Task name], [Replication instance], [Source endpoint], [Target endpoint], [Migration type]을 포함하여 작업 정보를 입력합니다. 테이블 매핑 섹션에서 가이드를 선택합니다.

    
                                스키마 및 테이블 선택
  5. 테이블 매핑 섹션에서 스키마 이름과 테이블 이름을 선택합니다. 테이블 이름을 지정할 때 "%"를 와일드카드 값으로 사용할 수 있습니다. 수행할 작업을 지정하여 필터에서 정의한 데이터를 포함하거나 제외합니다.

    
                                스키마 및 테이블 선택
  6. 열 필터 추가조건 추가 링크를 사용하여 필터 정보를 지정합니다.

    1. 열 필터 추가를 선택하여 열과 조건을 지정합니다.

    2. 조건 추가를 선택하여 조건을 추가할 수 있습니다.

    다음은 0185 사이에 AgencyIDs을(를) 포함하는 Customers 테이블에 대한 필터를 보여주는 예입니다.

    
                                스키마 및 테이블 선택
  7. 원하는 대로 선택하고 선택 규칙 추가를 선택합니다.

  8. 최소 1개 이상의 선택 규칙을 생성한 후 작업에 변환을 추가할 수 있습니다. 변환 규칙 추가를 선택합니다.

    
                                변환 규칙
  9. 변환할 대상을 선택하고 요청된 추가 정보를 입력합니다. 다음은 Customer 테이블에서 AgencyStatus 열을 삭제하는 변환을 보여주는 예입니다.

    
                                변환 규칙
  10. 변환 규칙 추가를 선택합니다.

  11. (선택 사항) 선택 규칙 추가 또는 변환 규칙 추가를 선택하여 선택 규칙 또는 변환 규칙을 추가합니다. 모두 마쳤으면 [Create task]를 선택합니다.

    
                                변환 규칙

JSON을 사용하여 테이블 매핑을 통해 테이블 선택 및 변환 지정

테이블 매핑을 JSON 형식으로 생성할 수 있습니다. AWS DMS Management Console을 사용하여 마이그레이션 작업을 생성할 경우 테이블 매핑 상자에 JSON을 직접 입력할 수 있습니다. CLI 또는 API를 사용해 마이그레이션을 수행할 경우, JSON 파일을 생성하여 마이그레이션 중에 적용하려는 테이블 매핑을 지정할 수 있습니다.

사용할 테이블이나 스키마를 지정하고, 스키마와 테이블 변환을 수행할 수 있습니다. selectiontransformation 규칙 유형을 사용하여 테이블 매핑 규칙을 생성합니다.

참고

Amazon S3 대상의 경우 post-processing 규칙 유형과 add-tag 규칙 작업을 사용하여 선택된 테이블 및 스키마로 매핑된 S3 객체에 태그를 지정할 수도 있습니다. 자세한 내용은 Amazon S3 객체 태깅 단원을 참조하십시오.

선택 규칙 및 작업

테이블 매핑을 사용하여 사용할 테이블이나 스키마를 지정하기 위해 선택 규칙과 작업을 이용할 수 있습니다. 선택 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 값을 적용할 수 있습니다.

파라미터 가능한 값 설명
rule-type selection 테이블 매핑을 지정할 때에는 1개 이상의 선택 규칙을 정의합니다.
rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값.
rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름.
rule-action include, exclude, explicit 규칙에서 선택한 객체 또는 객체들을 포함하거나 제외합니다. explicit가 지정되면 명시적으로 지정된 테이블 및 스키마에 해당하는 객체 하나만을 선택 및 포함할 수 있습니다.
object-locator 객체는 다음 파라미터를 사용합니다.
  • schema-name – 스키마의 이름입니다.

  • table-name – 테이블의 이름입니다.

규칙이 적용되는 각 스키마와 테이블의 이름입니다. rule-actioninclude이거나 exclude인 경우 각 object-locator 파라미터의 값의 전부 또는 일부에 대한 와일드카드로 "%" 퍼센트 기호를 사용할 수 있습니다. 따라서 다음 항목들을 일치시킬 수 있습니다.

  • 단일 스키마의 단일 테이블

  • 일부 또는 전체 스키마의 단일 테이블

  • 단일 스키마의 일부 또는 전체 테이블

  • 일부 또는 전체 스키마의 일부 또는 전체 테이블

rule-actionexplicit인 경우 단일 테이블 및 스키마의 정확한 이름만을 지정할 수 있습니다(와일드카드 없음).

load-order 양의 정수입니다. 최댓값은 2147483647입니다. 테이블 로드 우선순위를 지정합니다. 우선순위 값이 높은 테이블이 먼저 로드됩니다.
filters 객체의 배열. 소스를 필터링하기 위한 하나 이상의 객체입니다. 소스의 단일 열에서 필터링할 객체 파라미터를 지정합니다. 여러 열에서 필터링할 여러 객체를 지정합니다. 자세한 내용은 소스 필터 사용 단원을 참조하십시오.

예 스키마에서 모든 테이블 마이그레이션

다음은 소스에서 이름이 Test인 스키마의 모든 테이블을 대상 엔드포인트로 마이그레이션하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" } ] }

예 스키마에서 일부 테이블 마이그레이션

다음은 소스에서 이름이 Test인 스키마에서 DMS로 시작하는 테이블을 제외한 모든 테이블을 대상 엔드포인트로 마이그레이션하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "DMS%" }, "rule-action": "exclude" } ] }

예 단일 스키마에서 지정된 단일 테이블을 마이그레이션

다음은 소스의 NewCust 스키마에서 Customer 테이블을 대상 엔드포인트로 마이그레이션하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "NewCust", "table-name": "Customer" }, "rule-action": "explicit" } ] }

참고

여러 선택 규칙을 지정하여 여러 테이블 및 스키마에서 명시적으로 선택할 수 있습니다.

예 설정된 순서로 테이블 마이그레이션

다음은 테이블을 두 개를 마이그레이션하는 예제입니다. 테이블loadfirst(우선순위 2)은 loadsecond 테이블 전에 마이그레이션됩니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "loadfirst" }, "rule-action": "include", "load-order": "2" }, { "rule-type": "selection", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "Test", "table-name": "loadsecond" }, "rule-action": "include", "load-order": "1" } ] }

변환 규칙 및 작업

변환 작업을 사용하여 선택한 스키마 또는 테이블에 적용할 변환을 지정합니다. 변환 규칙은 선택적입니다.

변환 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 값을 적용할 수 있습니다.

파라미터 가능한 값 설명
rule-type transformation 선택 규칙에서 지정한 각 객체에 규칙을 적용하는 값입니다. 달리 지정되지 않는 한 transformation을 사용합니다.
rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값.
rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름.
object-locator 객체는 다음 파라미터를 사용합니다.
  • schema-name – 스키마의 이름입니다.

  • table-name – 테이블의 이름입니다.

  • table-tablespace-name – 기존 테이블 테이블스페이스의 이름입니다.

  • index-tablespace-name – 기존 인덱스 테이블스페이스의 이름입니다.

규칙이 적용되는 각 스키마, 테이블, 테이블 테이블스페이스, 인덱스 테이블스페이스의 이름입니다. 각 object-locator 파라미터 값의 전부 또는 일부에 '%'(퍼센트 기호)를 와일드카드로 사용할 수 있습니다. 따라서 다음 항목들을 일치시킬 수 있습니다.

  • 단일 스키마의 단일 테이블

  • 일부 또는 전체 스키마의 단일 테이블

  • 단일 스키마의 일부 또는 전체 테이블

  • 일부 또는 전체 스키마의 일부 또는 전체 테이블

또한 table-tablespace-name 또는 index-tablespace-name 파라미터는 Oracle 소스 엔드포인트와 일치시키는 데만 사용할 수 있습니다. 단일 규칙에서 table-tablespace-name 또는 index-tablespace-name를 지정할 수 있지만 둘 다 지정할 수는 없습니다. 따라서 다음 항목 중 하나와 일치시킬 수 있습니다.

  • 하나의, 일부 또는 모든 테이블 테이블스페이스

  • 하나의, 일부 또는 모든 인덱스 테이블스페이스

rule-action

rename

remove-column

convert-lowercase, convert-uppercase

add-prefix, remove-prefix, replace-prefix

add-suffix, remove-suffix, replace-suffix

define-primary-key

객체에 적용할 변환. 모든 변환 규칙 작업은 대소문자를 구분합니다.
rule-target schema, table, column, table-tablespace, index-tablespace 변환 중인 객체 유형입니다.

table-tablespace 또는 index-tablespace 값은 Oracle 대상 엔드포인트에만 사용할 수 있습니다. 또한 object-locator: table-tablespace-name 또는 index-tablespace-name의 일부로 지정하는 해당 파라미터와 일치하는 값을 지정합니다.

value 대상 유형에서 명명 규칙을 따르는 영숫자 값입니다. rename과 같이 입력이 필요한 작업의 새 값입니다.
old-value 대상 유형에서 명명 규칙을 따르는 영숫자 값입니다. replace-prefix와 같이 대체가 필요한 작업의 이전 값입니다.
primary-key-def 객체는 다음 파라미터를 사용합니다.
  • name – 테이블에 대한 새 기본 키 또는 고유 인덱스의 이름입니다.

  • (선택 사항) origin – 정의할 고유 키의 유형: primary-key(기본값) 또는 unique-index.

  • columns – 기본 키 또는 고유 인덱스에서 나타나는 순서대로 열의 이름을 나열하는 문자열 배열입니다.

규칙 작업이 define-primary-key로 설정되고 규칙 대상이 table로 설정된 경우 이 파라미터는 변환된 테이블에서 고유 키의 이름, 유형 및 내용을 정의합니다. 기본적으로 고유 키는 기본 키로 정의됩니다.

예 스키마 이름 바꾸기

다음은 소스의 스키마 이름 Test를 대상 엔드포인트의 Test1로 변경하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "Test" }, "value": "Test1" } ] }

예 테이블 이름 바꾸기

다음은 소스의 테이블 이름 Actor를 대상 엔드포인트의 Actor1로 변경하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table", "object-locator": { "schema-name": "Test", "table-name": "Actor" }, "value": "Actor1" } ] }

예 열 이름 바꾸기

다음은 Actor 테이블에서 소스의 열 이름 first_name을 대상 엔드포인트의 fname으로 변경하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "4", "rule-name": "4", "rule-action": "rename", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name" : "first_name" }, "value": "fname" } ] }

예 Oracle 테이블 테이블스페이스의 이름 바꾸기

다음은 Oracle 소스에서 Actor라는 테이블에 대해 SetSpace라는 테이블 테이블스페이스의 이름을 Oracle 대상 엔드포인트의 SceneTblSpace로 바꾸는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetSpace" }, "value": "SceneTblSpace" } ] }

예 Oracle 인덱스 테이블스페이스의 이름 바꾸기

다음은 Oracle 소스에서 Actor라는 테이블에 대해 SetISpace라는 인덱스 테이블스페이스의 이름을 Oracle 대상 엔드포인트의 SceneIdxSpace로 바꾸는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Play", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "Play", "table-name": "Actor", "table-tablespace-name: "SetISpace" }, "value": "SceneIdxSpace" } ] }

예 열 제거

다음은 소스의 Actor라는 테이블을 변환하여 col 문자로 시작하는 모든 열을 대상 엔드포인트에서 제거하는 예입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }

예 소문자로 변환

다음은 소스의 테이블 이름 ACTOR를 대상 엔드포인트의 actor로 변환하는 예입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-lowercase", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "ACTOR" } }] }

예 대문자로 변환

다음은 모든 테이블의 전체 열과 모든 스키마를 원본의 소문자에서 대상 엔드포인트의 대문자로 전환하는 예제입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "convert-uppercase", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" } } ] }

예 접두사 추가

다음은 소스의 모든 테이블을 변환하여 대상 엔드포인트에서 테이블에 DMS_ 접두사를 추가하는 예입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-prefix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "DMS_" }] }

예 접두사 바꾸기

다음은 원본에서 Pre_ 접두사를 포함하는 모든 열을 변환하여 이 접두사를 대상 엔드포인트의 NewPre_ 접두사로 대체하는 예입니다.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "replace-prefix", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "%" }, "value": "NewPre_", "old-value": "Pre_" } ] }

예 접미사 제거

다음은 소스의 모든 테이블을 변환하여 대상 엔드포인트의 테이블에서 _DMS 접미사를 제거하는 예입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-suffix", "rule-target": "table", "object-locator": { "schema-name": "test", "table-name": "%" }, "value": "_DMS" }] }

예 기본 키 정의

대상 엔드포인트로 마이그레이션된 ITEM 테이블의 세 열에서 ITEM-primary-key라는 기본 키를 정의하는 예입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": ITEM-primary-key, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }

예 고유 인덱스 정의

대상 엔드포인트로 마이그레이션된 ITEM 테이블의 세 열에서 ITEM-unique-idx라는 고유 인덱스를 정의하는 예입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "inventory", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "define-primary-key", "rule-target": "table", "object-locator": { "schema-name": "inventory", "table-name": "ITEM" }, "primary-key-def": { "name": ITEM-unique-idx, "origin": unique-index, "columns": [ "ITEM-NAME", "BOM-MODEL-NUM", "BOM-PART-NUM" ] } }] }

테이블 설정 규칙 및 작업

테이블 설정을 사용하여 지정된 작업에서 선택한 테이블에 적용할 설정을 지정합니다. 테이블 설정 규칙은 선택 사항입니다.

테이블 설정 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 파라미터를 적용할 수 있습니다.

파라미터 가능한 값 설명
rule-type table-settings 선택 규칙에서 지정한 테이블에 규칙을 적용하는 값입니다.
rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값.
rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름.
object-locator 객체는 다음 파라미터를 사용합니다.
  • schema-name – 스키마의 이름입니다.

  • table-name – 테이블의 이름입니다.

특정 스키마 및 테이블의 이름입니다(와일드카드 허용 안 함).

parallel-load 객체는 다음 파라미터를 사용합니다.
  • type – 병렬 로드를 사용할지 여부를 지정합니다. 사용할 경우 이 파라미터는 병렬로 로드할 테이블 파티션, 하위 파티션 또는 기타 세그먼트를 식별하는 메커니즘을 지정합니다. 파티션은 원본 테이블에서 이미 이름별로 정의되고 식별된 세그먼트입니다. Oracle 엔드포인트 전용으로, 하위 파티션은 이미 원본 테이블에서 이름별로 정의되고 식별된 추가 수준의 세그먼트입니다. 하나 이상의 테이블 열에 대한 값 범위의 경계를 지정하여 table-settings 규칙에서 다른 세그먼트를 식별할 수 있습니다.

  • partitionstypepartitions-list일 때 이 값은 병렬로 로드할 모든 파티션을 지정합니다.

  • subpartitions – Oracle 엔드포인트 전용으로, typepartitions-list일 때 이 값은 병렬로 로드할 모든 하위 파티션을 지정합니다.

  • columnstyperanges일 때 이 값은 병렬로 로드할 범위 기반 세그먼트를 식별하는 데 사용되는 열의 이름을 지정합니다.

  • boundariestyperanges일 때 이 값은 병렬로 로드할 범위 기반 세그먼트를 식별하는 데 사용되는 columns의 값을 지정합니다.

object-locator 옵션으로 식별되는 테이블에서 병렬 로드(다중 스레드) 작업을 지정하는 값입니다. 이 경우 다음과 같은 방법으로 병렬로 로드할 수 있습니다.

  • 사용 가능한 모든 파티션이나 하위 파티션으로 지정된 세그먼트별

  • 선택한 파티션 및 하위 파티션별

  • 지정한 범위 기반 세그먼트별

병렬 로드에 대한 자세한 내용은 선택한 테이블에 병렬 로드 사용 단원을 참조하십시오.

type parallel-load에 다음 중 하나를 수행하십시오.
  • partitions-auto – 테이블의 모든 파티션이 병렬로 로드됩니다. 모든 파티션은 자체 스레드에 할당됩니다.

  • subpartitions-auto – (Oracle 엔드포인트 전용) 테이블의 모든 하위 파티션이 병렬로 로드됩니다. 모든 하위 파티션은 자체 스레드에 할당됩니다.

  • partitions-list – 테이블에서 지정된 모든 파티션이 병렬로 로드됩니다. Oracle 엔드포인트 전용으로, 테이블에서 지정된 모든 하위 파티션이 병렬로 로드됩니다. 지정한 각 파티션 및 하위 파티션은 자체 스레드에 할당됩니다. 파티션 이름(partitions) 및 하위 파티션 이름(subpartitions)에 따라 병렬로 로드할 파티션과 하위 파티션을 지정합니다.

  • ranges – 테이블에서 지정된 모든 세그먼트가 병렬로 로드됩니다. 식별하는 각 테이블 세그먼트는 자체 스레드에 할당됩니다. 이러한 세그먼트는 열 이름(columns) 및 열 값(boundaries)으로 지정합니다.

  • none – 테이블은 파티션 또는 하위 파티션에 관계없이 단일 스레드 작업(기본값)으로 로드됩니다. 자세한 내용은 작업 생성 단원을 참조하십시오.

병렬로 로드할 테이블 파티션, 하위 파티션 또는 세그먼트를 식별하는 메커니즘입니다.
partitions typepartitions-list일 때, 병렬로 로드할 파티션의 이름을 지정하는 문자열 배열입니다. 병렬로 로드할 파티션의 이름입니다.
subpartitions (Oracle 엔드포인트 전용) typepartitions-list일 때, 병렬로 로드할 하위 파티션의 이름을 지정하는 문자열 배열입니다. 병렬로 로드할 하위 파티션의 이름입니다.
columns typeranges일 때 병렬로 로드할 범위 기반 테이블 세그먼트를 식별하는 열 이름으로 설정된 문자열 배열입니다. 병렬로 로드할 범위 기반 테이블 세그먼트를 식별하는 열 이름입니다.
boundaries typeranges일 때, 열-값 배열의 배열입니다. 각 열-값 배열은 columns에 의해 지정된 수량과 순서로 열 값을 포함합니다. 열-값 배열은 테이블 세그먼트의 상위 경계를 지정합니다. 각 추가 열-값 배열은 하나의 추가 테이블 세그먼트에 대한 상위 경계를 추가합니다. 이러한 모든 범위 기반 테이블 세그먼트는 병렬로 로드됩니다. 병렬로 로드할 범위 기반 테이블 파티션을 식별하는 열 값입니다.
lob-settings 객체는 다음 파라미터를 사용합니다.
  • mode – LOB에 대한 마이그레이션 처리 모드를 지정합니다.

  • bulk-max-sizemode 설정에 따라 LOB의 최대 크기를 지정합니다.

object-locator 옵션으로 식별된 테이블에 대한 LOB 처리를 지정하는 값입니다. 지정된 LOB 처리는 이 테이블에만 지정된 작업 LOB 설정을 재정의합니다. LOB 설정 파라미터 사용에 대한 자세한 내용은 선택한 테이블의 LOB 설정 지정 단원을 참조하십시오.
mode 다음 값을 사용하여 지정한 테이블의 LOB에 대한 마이그레이션 처리를 지정합니다.
  • limited(기본값) – 이 값은 모든 LOB가 테이블의 다른 모든 열 데이터 형식과 함께 인라인으로 마이그레이션되는 제한적 LOB 모드로 마이그레이션을 설정합니다. 이 값은 주로 작은 LOB(100MB 이하)를 복제하는 경우 사용합니다. 또한 bulk-max-size 값을 지정합니다(0은 유효하지 않음). 마이그레이션된 모든 LOB가 bulk-max-size보다 클 경우 사용자가 설정한 크기로 잘립니다.

  • unlimited – 이 값은 마이그레이션을 전체 LOB 모드로 설정합니다. 이 값은 복제하려는 LOB의 전체 또는 대부분이 1GB보다 큰 경우 사용합니다. bulk-max-size 값을 0으로 지정하면 모든 LOB가 표준 전체 LOB 모드로 마이그레이션됩니다. 이 형식의 unlimited 모드에서 모든 LOB는 원본 테이블의 조회를 사용하여 다른 열 데이터 유형과 별도로 마이그레이션됩니다. bulk-max-size 값을 0보다 큰 값으로 지정하면 모든 LOB가 조합 전체 LOB 모드로 마이그레이션됩니다. 이 형식의 unlimited 모드에서는 bulk-max-size보다 큰 LOB가 표준 전체 LOB 모드와 비슷한 방식으로 원본 테이블 조회를 사용하여 마이그레이션됩니다. 그렇지 않으면 제한적 LOB 모드와 유사하게 이 크기 이하의 LOB가 인라인으로 마이그레이션됩니다. 사용하는 형식에 상관없이 unlimited 모드에서는 LOB가 잘리지 않습니다.

  • none – 모든 테이블 LOB는 작업 LOB 설정에 따라 마이그레이션됩니다.

    작업 LOB 설정에 대한 자세한 내용은 대상 메타데이터 작업 설정 단원을 참조하십시오.

    LOB를 마이그레이션하는 방법 및 이러한 작업 LOB 설정을 지정하는 방법에 대한 자세한 내용은 AWS DMS 작업의 원본 데이터베이스에 대한 LOB 지원 설정 단원을 참조하십시오.

LOB를 마이그레이션하는 데 사용되는 메커니즘입니다.
bulk-max-size 이 값의 효과는 mode에 따라 다릅니다. LOB의 최대 크기입니다(킬로바이트 단위). 작은 LOB를 복제해야 하거나 대상 엔드포인트가 무제한 LOB 크기를 지원하지 않는 경우에만 이 옵션을 지정하십시오.

선택한 테이블에 병렬 로드 사용

선택한 테이블에 병렬 로드를 사용하여 마이그레이션 속도와 효율성을 향상시킬 수 있습니다. 즉, 여러 스레드를 병렬로 사용하여 세분화된 테이블 하나를 마이그레이션할 수 있습니다. 이를 위해 AWS DMS는 전체 로드 작업을 스레드로 분할하고 각 테이블 세그먼트를 자체 스레드에 할당합니다.

이 병렬 로드 프로세스를 사용하면 먼저 다중 스레드가 소스 엔드포인트에서 여러 테이블을 병렬로 언로드할 수 있습니다. 그런 다음 여러 스레드가 대상 엔드포인트에 병렬로 동일한 테이블을 마이그레이션하고 로드하게 할 수 있습니다. 일부 데이터베이스 엔진의 경우 기존 파티션이나 하위 파티션별로 테이블을 세분화할 수 있습니다. 그렇지 않으면, 지정한 열 값 범위로 테이블을 조각화할 수 있습니다.

다음 소스 엔드포인트에 병렬 로드가 지원됩니다.

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2

  • SAP Adaptive Server Enterprise(ASE)

다음 대상 엔드포인트에 병렬 로드가 지원됩니다.

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • Amazon Redshift

  • SAP Adaptive Server Enterprise(ASE)

  • Amazon DynamoDB

  • Amazon Kinesis Data Streams

  • Amazon Elasticsearch Service

병렬로 로드할 최대 테이블 수를 지정하려면 MaxFullLoadSubTasks 작업 설정을 사용합니다. 병렬 로드 작업의 테이블당 최대 스레드 수를 지정하려면 ParallelLoadThreads 작업 설정을 사용합니다. 병렬 로드 작업의 버퍼 크기를 지정하려면 ParallelLoadBufferSize 작업 설정을 사용합니다. ParallelLoadThreadsParallelLoadBufferSize의 가용성과 설정은 대상 엔드포인트에 따라 다릅니다.

ParallelLoadThreadsParallelLoadBufferSize에 대한 자세한 내용은 대상 메타데이터 작업 설정 단원을 참조하십시오. MaxFullLoadSubTasks 설정에 대한 자세한 내용은 전체 로드 작업 설정 단원을 참조하십시오. 대상 엔드포인트에 대한 자세한 내용은 관련 주제를 참조하십시오.

병렬 로드를 사용하려면 parallel-load 옵션을 사용하여 table-settings 유형의 테이블 매핑 규칙을 만듭니다. table-settings 규칙 내에서 병렬로 로드하려는 단일 테이블의 세분화 기준을 지정할 수 있습니다. 이렇게 하려면 parallel-load 옵션의 type 파라미터를 여러 옵션 중 하나로 설정합니다. 이렇게 하는 방법은 병렬 로드를 위해 테이블을 세그먼트화하려는 방법에 따라 다릅니다.

  • 파티션별 – partitions-auto 유형을 사용하여 기존 테이블 파티션을 모두 로드합니다. 또는 지정된 partitions 배열이 있는 partitions-list 유형을 사용하여 선택한 파티션만 로드합니다.

  • (Oracle 엔드포인트 전용) 하위 파티션별 – subpartitions-auto 유형을 사용하여 기존 테이블 하위 파티션을 모두 로드합니다. 또는 지정된 subpartitions 배열이 있는 partitions-list 유형을 사용하여 선택한 하위 파티션만 로드합니다.

  • 정의한 세그먼트별 – 열-값 경계를 사용하여 정의한 테이블 세그먼트를 로드합니다. 이렇게 하려면 지정된 columnsboundaries 배열이 있는 ranges 유형을 사용하십시오.

병렬로 로드할 추가 테이블을 식별하려면 parallel-load 옵션을 사용하여 추가 table-settings 객체를 지정합니다.

다음 절차에서는 가장 간단한 것부터 가장 복잡한 것까지 각 병렬 로드 유형별로 JSON을 코드화하는 방법을 확인할 수 있습니다.

모든 테이블 파티션 또는 모든 테이블 하위 파티션을 지정하려면

  • parallel-loadpartitions-auto 유형 또는 subpartitions-auto 유형으로 지정하십시오(동시 지정은 불가).

    그러면 모든 테이블 파티션 또는 하위 파티션이 자동으로 자체 스레드에 할당됩니다.

    참고

    파티션 또는 하위 파티션은 테이블에 이미 정의된 경우에만 병렬 로드에 포함됩니다.

선택한 테이블 파티션, 하위 파티션 또는 둘 다 지정하려면

  1. partitions-list 유형으로 parallel-load를 지정합니다.

  2. (선택 사항) 파티션 이름의 배열을 partitions 값으로 지정하여 파티션을 포함합니다.

    그러면 지정된 각 파티션이 자체 스레드에 할당됩니다.

  3. (선택 사항, Oracle 엔드포인트 전용) 하위 파티션 이름의 배열을 subpartitions 값으로 지정하여 하위 파티션을 포함합니다.

    그러면 지정된 각 하위 파티션이 자체 스레드에 할당됩니다.

    참고

    파티션 또는 하위 파티션은 테이블에 이미 정의된 경우에만 병렬 로드에 포함됩니다.

테이블 세그먼트를 열 값의 범위로 지정할 수 있습니다. 이렇게 하려면 다음 열 특성을 알고 있어야 합니다.

  • 인덱싱된 열을 지정하면 성능이 크게 향상됩니다.

  • 최대 10개의 열을 지정할 수 있습니다.

  • 열을 사용하여 DOUBLE, FLOAT, BLOB, CLOB 및 NCLOB와 같은 AWS DMS 데이터 형식의 세그먼트 경계를 정의할 수 없습니다.

  • null 값의 레코드는 복제되지 않습니다.

테이블 세그먼트를 열 값의 범위로 지정하려면

  1. ranges 유형으로 parallel-load를 지정합니다.

  2. 테이블 열 이름의 배열을 columns 값으로 지정하여 테이블 세그먼트 사이의 경계를 정의합니다. 테이블 세그먼트 사이의 경계를 정의하려는 모든 열에 대해 이 작업을 수행합니다.

    열의 순서는 중요합니다. 다음 설명과 같이 각 경계를 정의하는 데 첫 번째 열이 가장 중요하고 마지막 열은 가장 덜 중요합니다.

  3. 모든 테이블 세그먼트의 데이터 범위를 정의하려면 경계 배열의 값을 boundaries로 지정하십시오. 경계 배열은 열-값 배열의 배열입니다. 이 작업을 수행하려면 다음 단계를 수행하십시오.

    1. 열-값 배열의 각 요소를 각 열에 맞는 값으로 지정합니다. 열-값 배열은 정의하려는 각 테이블 세그먼트의 상위 경계를 나타냅니다. columns 배열에서 해당 열을 지정한 순서대로 각 열을 지정합니다.

      참고

      소스에서 지원하는 형식으로 DATE 열의 값을 입력합니다.

    2. 테이블의 맨 아래에서 맨 위의 옆 세그먼트까지 각 세그먼트의 순서에 따라 각 열-값 배열을 상위 경계로 지정합니다. 지정한 맨 위 경계 위에 테이블 행이 있으면 이 행은 테이블의 맨 위 세그먼트를 완료합니다. 따라서 범위 기반 세그먼트의 수가 경계 배열의 세그먼트 경계 수보다 하나 더 많을 수 있습니다. 이러한 범위 기반 세그먼트는 각각 자체 스레드에 할당됩니다.

      참고

      테이블의 모든 열에 데이터 범위를 정의하지 않더라도 null이 아닌 모든 테이블 데이터가 복제됩니다.

    예를 들어, 다음과 같이 열 COL1, COL2 및 COL3에 세 개의 열-값 배열을 정의한다고 가정합니다.

    COL1 COL2 COL3
    10 30 105
    20 20 120
    100 12 99

    가능한 총 4개 세그먼트에 세 개의 세그먼트 경계를 정의했습니다.

    각 세그먼트별로 복제할 행의 범위를 식별하기 위해 복제 인스턴스는 각각의 4개 세그먼트에서 이 3개 열에 다음과 같은 검색을 적용합니다.

    세그먼트 1

    처음 두 열의 값이 해당 세그먼트 1 상위 경계 값 이하이고 세 번째 열의 값이 세그먼트 1 상위 경계 값 미만인 경우 모든 행을 복제합니다.

    세그먼트 2

    처음 두 열의 값이 해당 세그먼트 2 상위 경계 값 이하이고 세 번째 열의 값이 세그먼트 2 상위 경계 값 미만인 경우 모든 행을 복제합니다(세그먼트 1 행은 제외).

    세그먼트 3

    처음 두 열의 값이 해당 세그먼트 3 상위 경계 값 이하이고 세 번째 열의 값이 세그먼트 3 상위 경계 값 미만인 경우 모든 행을 복제합니다(세그먼트 2 행은 제외).

    세그먼트 4

    나머지 모든 행을 복제합니다( 세그먼트 1, 2 및 3 행은 제외).

    이 경우 복제 인스턴스는 다음과 같이 WHERE 절을 작성하여 각 세그먼트를 로드합니다.

    세그먼트 1

    ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))

    세그먼트 2

    NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))

    세그먼트 3

    NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

    세그먼트 4

    NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

선택한 테이블의 LOB 설정 지정

하나 이상의 table-settings 객체에 대해 lob-settings 옵션으로 table-settings 유형의 테이블 매핑 규칙을 생성하여 하나 이상의 테이블에 대한 작업 LOB 설정을 지정할 수 있습니다.

선택된 테이블에 대한 LOB 설정 지정은 다음 소스 엔드포인트에서 지원됩니다.

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2는 modebulk-max-size 설정에 따라 다음과 같이 설명됩니다.

  • SAP Adaptive Server Enterprise(ASE)는 다음과 같이 modebulk-max-size 설정에 따라 다릅니다.

선택된 테이블에 대한 LOB 설정 지정은 다음 대상 엔드포인트에서 지원됩니다.

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM ASE는 modebulk-max-size 설정에 따라 다음과 같이 설명됩니다.

참고

기본 키를 포함하는 테이블에서만 LOB 데이터 형식을 사용할 수 있습니다.

선택한 테이블의 LOB 설정을 사용하려면 lob-settings 옵션을 사용하여 table-settings 유형의 테이블 매핑 규칙을 생성하십시오. 이렇게 하면 object-locator 옵션으로 식별된 테이블에 대한 LOB 처리를 지정하게 됩니다. table-settings 규칙 내에서 다음 파라미터를 사용하여 lob-settings 객체를 지정할 수 있습니다.

  • mode – 다음과 같이 선택한 테이블에 LOB 마이그레이션 처리 메커니즘을 지정합니다.

    • limited – 기본 모드인 제한적 LOB 모드는 가장 빠르고 효율적입니다. 모든 LOB의 크기가 작거나(100MB 이내) 대상 엔드포인트가 무제한 LOB 크기를 지원하지 않는 경우에만 이 모드를 사용하십시오. 또한 limited를 사용하는 경우 모든 LOB는 bulk-max-size에 설정된 크기 내에 있어야 합니다.

      전체 로드 작업의 경우 이 모드에서 복제 인스턴스는 기본 테이블 스토리지의 일부로 다른 열 데이터 형식과 함께 모든 LOB를 인라인으로 마이그레이션합니다. 그러나 인스턴스는 bulk-max-size 값보다 큰 마이그레이션된 LOB를 모두 지정된 크기로 자릅니다. CDC(Change Data Capture) 로드 작업의 경우, 인스턴스는 표준 전체 LOB 모드(다음 참조)에서처럼 원본 테이블 조회를 사용하여 모든 LOB를 마이그레이션합니다. LOB 크기와는 관계없습니다.

    • unlimited – 전체 LOB 모드의 마이그레이션 메커니즘은 다음과 같이 bulk-max-size에 설정한 값에 따라 다릅니다.

      • 표준 ​​전체 LOB 모드bulk-max-size를 0으로 설정하면 복제 인스턴스가 표준 전체 LOB 모드를 사용하여 모든 LOB를 마이그레이션합니다. 이 모드에서는 크기에 관계없이 모든 LOB를 마이그레이션하려면 원본 테이블을 조회해야 합니다. 이 경우 일반적으로 제한적 LOB 모드보다 마이그레이션 속도가 훨씬 느립니다. 대부분 또는 모든 LOB가 큰 경우에만(1GB 이상) 이 모드를 사용하십시오.

      • 조합 전체 LOB 모드bulk-max-size를 0이 아닌 값으로 설정하면 이 전체 LOB 모드는 제한적 LOB 모드와 표준 전체 LOB 모드를 조합하여 사용합니다. 전체 로드 작업에서 LOB 크기가 bulk-max-size 값 이내에 있는 경우, 인스턴스는 제한적 LOB 모드에서처럼 LOB를 인라인으로 마이그레이션합니다. LOB 크기가 이 값보다 큰 경우, 인스턴스는 표준 전체 LOB 모드에서와 같이 원본 테이블 조회를 사용하여 LOB를 마이그레이션합니다. CDC(Change Data Capture) 로드 작업의 경우, 인스턴스는 표준 전체 LOB 모드(다음 참조)에서처럼 원본 테이블 조회를 사용하여 모든 LOB를 마이그레이션합니다. LOB 크기와는 관계없습니다.

        이 모드의 마이그레이션 속도는 빠른 제한적 LOB 모드와 느린 표준 전체 LOB 모드 사이에서 절충한 수준이 됩니다. 작고 큰 LOB가 혼합되어 있지만 대부분의 LOB가 작은 경우에만 이 모드를 사용하십시오.

        이 조합된 전체 LOB 모드는 다음 엔드포인트에서만 사용 가능합니다.

        • IBM Db2 소스로만 사용

        • SAP ASE 소스 또는 대상으로 사용

      unlimited 모드를 지정하는 메커니즘에 관계없이, 인스턴스는 모든 LOB를 자르지 않고 온전히 마이그레이션합니다.

    • none – 복제 인스턴스는 작업 LOB 설정을 사용하여 선택한 테이블의 LOB를 마이그레이션합니다. 이 옵션을 사용하면 선택한 테이블의 LOB 설정 유무와 관계없이 마이그레이션 결과를 쉽게 비교할 수 있습니다.

    복제에 포함된 LOB가 있는 테이블을 지정한 경우 limited LOB 모드 사용 시 BatchApplyEnabled 작업 설정을 true로만 설정할 수 있습니다.

    경우에 따라 BatchApplyEnabledtrue로, BatchApplyPreserveTransactionfalse로 설정해야 할 수 있습니다. 이러한 경우, 테이블에 LOB가 있고 소스 및 대상 엔드포인트가 Oracle이면 인스턴스가 BatchApplyPreserveTransactiontrue로 설정합니다.

  • bulk-max-size – 이전 항목에서 설명한 대로, mode에 따라 이 값을 0 또는 0이 아닌 값(킬로바이트)으로 설정합니다. limited 모드에서는 이 파라미터에 0이 아닌 값을 설정해야 합니다.

    인스턴스는 LOB를 이진 형식으로 변환합니다. 따라서 복제해야 하는 가장 큰 LOB를 지정하려면 크기에 3을 곱하십시오. 예를 들어, 가장 큰 LOB가 2MB라면 bulk-max-size를 6,000(6MB)으로 설정합니다.

테이블 설정 예제

다음은 테이블 설정 사용법을 보여주는 몇 가지 예제입니다.

예 파티션으로 세분화한 테이블 로드

다음 예제는 모든 파티션을 기반으로 병렬로 소스의 SALES 테이블을 로드하기 때문에 보다 효율적입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }

예 하위 파티션으로 조각화한 테이블 로드

다음 예제는 모든 하위 파티션을 기반으로 병렬로 Oracle 소스의 SALES 테이블을 로드하기 때문에 보다 효율적입니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }

예 파티션 목록으로 조각화한 테이블 로드

다음 예제는 특정 파티션 목록별로 병렬로 소스의 SALES 테이블을 로드합니다. 여기서 지정된 파티션은 알파벳의 일부(예: ABCD, EFGH 등)로 시작하는 값을 따라 이름이 지정됩니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }

예 선택한 파티션 및 하위 파티션 목록으로 세분화한 Oracle 테이블 로드

다음 예제는 선택한 파티션 및 하위 파티션 목록별로 병렬로 Oracle 소스의 SALES 테이블을 로드합니다. 여기서 지정된 파티션은 알파벳의 일부(예: ABCD, EFGH 등)로 시작하는 값을 따라 이름이 지정됩니다. 지정된 하위 파티션의 이름은 숫자로 시작하는 값을 따라 지정됩니다(예: 0123456789)

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }

예 열 값 범위로 세분화한 테이블 로드

다음 예에서는 SALES_NOREGION 열 값의 범위로 지정된 세그먼트별로 소스의 SALES 테이블을 병렬로 로드합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }

여기에서는 이름이 SALES_NOREGION인 세그먼트 범위에 두 개의 열이 지정됩니다. 두 경계는 두 열 값 집합(["1000","NORTH"]["3000","WEST"])으로 지정됩니다.

따라서 이 두 경계는 병렬로 로드할 다음 세 개 테이블 세그먼트를 식별합니다.

세그먼트 1

SALES_NO가 1,000 이하이고 REGION이 "NORTH"보다 작은 행. 즉, EAST 리전에서 1,000 이하의 매출 수치입니다.

세그먼트 2

SALES_NO가 3,000 이하이고 REGION이 "WEST"보다 작은 세그먼트 1 이외의 행. 즉, NORTH 및 SOUTH 리전에서 1000보다 크고 3,000 이하인 매출 수치입니다.

세그먼트 3

세그먼트 1세그먼트 2 이외의 모든 나머지 행. 즉, WEST 리전에서 3,000을 초과하는 매출 수치입니다.

예 두 개의 테이블 로드: 하나는 범위별로 세분화, 다른 하나는 파티션별로 세분화

다음 예제에서는 식별하는 세그먼트 경계로 SALES 테이블을 병렬로 로드합니다. 또한 이전 예제와 같이 모든 파티션으로 ORDERS 테이블을 병렬로 로드합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }

예 제한적 LOB 모드를 사용하여 LOB 포함 테이블 로드

다음 예제는 제한적 LOB 모드(기본값)를 사용하여 소스의 LOB를 포함하는 ITEMS 테이블을 로드하며, 잘리지 않는 최대 크기로 100MB를 지원합니다. 이 크기보다 큰 LOB는 100MB로 잘립니다. 모든 LOB는 다른 모든 열 데이터 유형과 인라인으로 로드됩니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }

예 표준 전체 LOB 모드를 사용하여 LOB 포함 테이블 로드

다음 예제는 표준 전체 LOB 모드를 사용하여 잘리지 않은 모든 LOB를 포함하여 소스의 ITEMS 테이블을 로드합니다. 크기에 관계없이 모든 LOB는 소스 테이블의 각 LOB 조회를 사용하여 다른 데이터 유형과 별도로 로드됩니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited" "bulk-max-size": "0" } } ] }

예 조합 전체 LOB 모드를 사용하여 LOB 포함 테이블 로드

다음 예제는 조합 전체 LOB 모드를 사용하여 잘리지 않은 모든 LOB를 포함하여 소스의 ITEMS 테이블을 로드합니다. 제한적 LOB 모드에서와 같이, 크기 100MB 이내의 모든 LOB는 다른 데이터 유형과 함께 인라인으로 로드됩니다. 크기가 100MB를 초과하는 모든 LOB는 표준 전체 LOB 모드에서와 같이, 소스 테이블의 이러한 각 LOB 조회를 사용하여 다른 데이터 유형과 별도로 로드됩니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited" "bulk-max-size": "100000" } } ] }

예 작업 LOB 설정을 사용하여 LOB 포함 테이블 로드

다음 예제는 작업 LOB 설정을 사용하여 모든 LOB를 포함하여 소스의 ITEMS 테이블을 로드합니다. 100MB의 bulk-max-size 설정은 무시되며 limited 또는 unlimited 모드로 신속하게 재설정하는 경우에만 유지됩니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none" "bulk-max-size": "100000" } } ] }

소스 필터 사용

원본 필터를 사용하여 원본에서 대상으로 전송되는 레코드의 수와 유형을 제한할 수 있습니다. 예를 들어, 본사 사업장에서 근무하는 직원만이 대상 데이터베이스로 이동되도록 지정할 수 있습니다. 필터는 선택 규칙의 일부입니다. 데이터 열에서 필터를 적용합니다.

소스 필터는 다음 제약 조건을 준수해야 합니다.

  • 선택 규칙에는 필터가 전혀 없거나 필터가 하나 이상 있을 수 있습니다.

  • 모든 필터에는 하나 이상의 필터 조건이 있을 수 있습니다.

  • 필터를 2개 이상 사용하는 경우, 필터 사이에서 AND 연산자를 사용하는 것처럼 필터 목록이 결합됩니다.

  • 단일 필터 내에서 필터 조건을 2개 이상 사용하면, 필터 조건 사이에서 OR 연산자를 사용하는 것처럼 필터 조건 목록이 결합됩니다.

  • rule-action = 'include'인 경우 필터만이 적용됩니다.

  • 필터에는 열 이름과 필터 조건 목록이 필요합니다. 필터 조건에는 필터 연산자와 값이 있어야 합니다.

  • 열 이름, 테이블 이름, 스키마 이름은 대소문자를 구분합니다.

JSON에서 원본 필터 규칙 생성

선택 규칙의 JSON filters 파라미터를 사용하여 소스 필터를 생성할 수 있습니다. filters 파라미터는 1개 이상의 JSON 객체 배열을 지정합니다. 각 객체는 소스 필터 유형, 열 이름 및 필터 조건을 지정하는 파라미터를 가지고 있습니다. 이러한 필터 조건에는 하나 이상의 필터 연산자 및 필터 값이 포함됩니다.

다음 표에는 filters 객체에서 소스 필터링을 지정하기 위한 파라미터가 나와 있습니다.

파라미터

filter-type

source

column-name

필터를 적용할 원본 열의 이름입니다. 이름은 대/소문자를 구분합니다.

filter-conditions

filter-operator 값에 따라 달라지는 filter-operator 파라미터 및 적절한 값 파라미터가 포함된 하나 이상의 객체 배열입니다.

filter-operator

이 파라미터는 다음 값 중 하나를 가질 수 있습니다.

  • ste – 작거나 같음

  • gte – 크거나 같음

  • eq – 같음

  • between – 같음 또는 두 값 사이

value 또는

start-value

end-value

filter-operator 파라미터의 값입니다. filter-operatorbetween 이외의 값이 있는 경우 value를 사용합니다. filter-operatorbetween으로 설정된 경우 값 2개(start-value 1개와 end-value 1개)를 제공합니다.

다음 예제에서는 원본 필터를 사용하는 일반적인 방법에 대해 다룹니다.

예 단일 필터

다음 필터는 empid >= 100인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "gte", "value": "100" }] }] }] }

예 여러 필터 연산자

다음 필터는 여러 필터 연산자를 단일 데이터 열에 적용합니다. 이 필터는 (empid <=10) OR (empid is between 50 and 75) OR (empid >= 100)인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "ste", "value": "10" }, { "filter-operator": "between", "start-value": "50", "end-value": "75" }, { "filter-operator": "gte", "value": "100" }] }] }] }

예 여러 필터

다음 필터는 여러 필터를 테이블의 열 2개에 적용합니다. 이 필터는 (empid <= 100) AND (dept= tech)인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "ste", "value": "100" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "eq", "value": "tech" }] }] }] }

시간과 날짜로 필터링

가져올 데이터를 선택할 때 필터 기준의 일부로 날짜 또는 시간을 지정할 수 있습니다. AWS DMS에서는 필터링에 YYYY-MM-DD 날짜 형식과 YYYY-MM-DD HH:MM:SS 시간 형식을 사용합니다. AWS DMS 비교 기능은 SQLite 규칙을 준수합니다. SQLite 데이터 형식과 날짜 비교에 대한 자세한 내용은 SQLite 설명서의 SQLite 버전 3의 데이터 형식을 참조하십시오.

다음은 날짜에서 필터링하는 방법을 보여주는 예제입니다. 이 필터는 empstartdate >= January 1, 2002인 모든 직원을 대상 데이터베이스로 복제합니다.

예 단일 날짜 필터

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [{ "filter-operator": "gte", "value": "2002-01-01" }] }] }] }