테이블 및 컬렉션 설정 규칙과 작업 - AWS Database Migration Service

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

테이블 및 컬렉션 설정 규칙과 작업

테이블 설정을 사용하여 지정된 작업에서 선택한 테이블 또는 뷰에 적용할 설정을 지정합니다. 테이블 설정 규칙은 엔드포인트 및 마이그레이션 요구 사항에 따라 선택 사항입니다.

MongoDB 및 Amazon DocumentDB 데이터베이스는 테이블과 뷰의 개념 대신 데이터 레코드를 컬렉션에 함께 수집된 문서로 저장합니다. MongoDB 또는 Amazon DocumentDB 엔드포인트에 대한 단일 데이터베이스는 데이터베이스 이름으로 식별되는 특정 컬렉션 집합입니다.

MongoDB 또는 Amazon DocumentDB 소스에서 마이그레이션할 때는 병렬 로드 설정을 사용하는 방식이 약간 다릅니다. 이 경우, 테이블과 뷰보다는 선택한 컬렉션에 대한 자동 세분화 또는 범위 세그먼트화 유형의 병렬 로드 설정을 고려해 보십시오.

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

파라미터 가능한 값 설명
rule-type table-settings 선택 규칙에서 지정한 테이블, 뷰 또는 컬렉션에 규칙을 적용하는 값입니다.
rule-id 숫자 값. 규칙을 식별하기 위한 고유한 숫자 값입니다.
rule-name 영숫자 값입니다. 규칙을 식별하기 위한 고유한 이름입니다.
object-locator 객체는 다음 파라미터를 사용합니다.
  • schema-name – 스키마의 이름입니다. MongoDB 및 Amazon DocumentDB 엔드포인트의 경우, 컬렉션 세트를 보관하는 데이터베이스의 이름입니다.

  • table-name – 테이블, 뷰 또는 컬렉션의 이름입니다.

특정 스키마와 테이블 또는 뷰의 이름 또는 특정 데이터베이스 및 컬렉션의 이름(와일드카드 없음)입니다.

parallel-load 객체는 다음 파라미터를 사용합니다.
  • type – 병렬 로드를 활성화할지 여부를 지정합니다.

    사용할 경우 이 파라미터는 동시에 로드할 테이블 또는 뷰 파티션, 하위 파티션 또는 기타 세그먼트를 식별하는 메커니즘을 지정합니다. 파티션은 소스 테이블 또는 뷰에서 이미 이름별로 정의되고 식별된 세그먼트입니다.

    MongoDB 및 Amazon DocumentDB 엔드포인트의 경우 파티션은 세그먼트입니다. AWS DMS 자동으로 지정된 관련 자동 세그멘테이션 파라미터를 계산할 수 있습니다. 또는 범위 세그먼트화 파라미터를 사용하여 이러한 파라미터를 수동으로 지정할 수도 있습니다.

    Oracle 엔드포인트의 경우에 한해 하위 파티션은 이미 소스 테이블 또는 뷰에서 이름별로 정의되고 식별된 추가 수준의 세그먼트입니다. 하나 이상의 테이블 또는 뷰 열에 대한 값 범위의 경계를 지정하여 table-settings 규칙에서 다른 세그먼트를 식별할 수 있습니다.

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

  • subpartitions – Oracle 엔드포인트의 경우에 한해 typepartitions-list일 때 이 값은 동시에 로드할 모든 하위 파티션을 지정합니다.

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

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

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

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

  • 선택한 파티션 및 하위 파티션별로 로드합니다.

  • 자동 세분화로 로드하거나 지정한 범위 기반 세그먼트별로 로드합니다.

병렬 로드에 관한 자세한 내용은 선택한 테이블, 뷰 및 컬렉션에 병렬 로드 사용 단원을 참조하십시오.

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

    이는 MongoDB 및 Amazon DocumentDB 소스 엔드포인트가 병렬 전체 로드의 자동 세분화 옵션을 사용하기 위한 필수 설정입니다.

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

  • partitions-list – 테이블 또는 뷰에서 지정된 모든 파티션이 동시에 로드됩니다. Oracle 엔드포인트의 경우에 한해 테이블 또는 뷰에서 지정된 모든 하위 파티션이 동시에 로드됩니다. 지정한 각 파티션 및 하위 파티션은 자체 스레드에 할당됩니다. 파티션 이름(partitions) 및 하위 파티션 이름(subpartitions)에 따라 동시에 로드할 파티션과 하위 파티션을 지정합니다.

  • ranges – 테이블, 뷰 또는 컬렉션에서 범위가 지정된 모든 세그먼트가 동시에 로드됩니다. 식별하는 각 테이블, 뷰 또는 컬렉션 세그먼트는 자체 스레드에 할당됩니다. 이러한 세그먼트는 열 이름(columns) 및 열 값(boundaries)으로 지정합니다.

    PostgreSQL 엔드포인트는 이러한 유형의 병렬 로드만 지원합니다. MongoDB와 Amazon DocumentDB는 소스 엔드포인트로 이 범위 세그먼트화 유형과 병렬 전체 로드(partitions-auto)의 자동 세분화 유형을 모두 지원합니다.

  • none – 테이블, 뷰 또는 컬렉션은 파티션 또는 하위 파티션에 관계없이 단일 스레드 작업(기본값)으로 로드됩니다. 자세한 정보는 작업 생성을 참조하세요.

동시에 로드할 테이블, 뷰 또는 컬렉션 파티션, 하위 파티션 또는 세그먼트를 식별하는 메커니즘입니다.
number-of-partitions (선택 사항) type이 MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대한 partitions-auto인 경우, 이 파라미터는 마이그레이션에 사용되는 총 파티션(세그먼트) 수를 지정합니다. 기본값은 16입니다. 동시에 로드할 파티션의 정확한 이름을 지정합니다.
collection-count-from-metadata (선택 사항) MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션용이고 이 파라미터가 true 로 AWS DMS 설정된 경우 예상 수집 수를 사용하여 파티션 수를 결정합니다. type partitions-auto 이 매개 변수가 로 설정된 경우 실제 false 수집 수를 AWS DMS 사용합니다. 기본값은 true입니다. 동시에 로드할 파티션 수를 계산할 때 예상 컬렉션 수를 사용할지 아니면 실제 컬렉션 수를 사용할지를 지정합니다.
max-records-skip-per-page (선택 사항) MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대한 typepartitions-auto인 경우, 이것은 각 파티션의 경계를 결정할 때 한 번에 건너뛰어야 하는 레코드 수를 나타냅니다. AWS DMS 는 페이징된 건너뛰기 방식을 사용하여 파티션의 최소 경계를 결정합니다. 기본값은 10,000입니다. 각 파티션의 경계를 결정할 때 한 번에 건너뛸 레코드 수를 지정합니다. 기본값보다 비교적 큰 값을 설정하면 커서 제한 시간이 초과되고 작업이 실패할 수 있습니다. 기본값보다 비교적 작은 값을 설정하면 페이지당 작업 수가 늘어나고 전체 로드 속도가 느려집니다.
batch-size (선택 사항) MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대한 typepartitions-auto인 경우, 이 정수 값은 한 번의 왕복 배치에서 반환되는 문서 수를 제한합니다. 배치 크기가 0인 경우, 커서는 서버에서 정의한 최대 배치 크기를 사용합니다. 기본값은 0입니다. 하나의 배치에 반환된 최대 문서 수를 지정합니다. 배치마다 서버를 왕복해야 합니다.
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 설정을 지정하는 방법에 관한 자세한 내용은 태스크의 소스 데이터베이스에 대한 LOB 지원 설정 AWS DMS 단원을 참조하십시오.

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

테이블 설정의 와일드카드는 제한됨

"table-settings" 규칙에 퍼센트 와일드카드("%")를 사용하는 것은 다음과 같이 소스 데이터베이스에서 지원되지 않습니다.

{ "rule-type": "table-settings", "rule-id": "8", "rule-name": "8", "object-locator": { "schema-name": "ipipeline-prod", "table-name": "%" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 16, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } }

그림과 같이 "%" "table-settings" 규칙에서 사용하면 다음과 같은 예외가 AWS DMS 반환됩니다.

Error in mapping rules. Rule with ruleId = x failed validation. Exact schema and table name required when using table settings rule.

또한 를 사용하여 단일 작업을 사용하여 많은 수의 대규모 컬렉션을 로드하지 않는 것이 좋습니다parallel-load. AWS 단, AWS DMS 는 MaxFullLoadSubTasks 작업 설정 파라미터의 값에 따라 동시에 로드되는 세그먼트 수는 물론, 리소스 경합도 제한하며 최대값은 49입니다.

그 대신 각 "schema-name""table-name"을 개별적으로 지정하여 가장 큰 컬렉션에 대한 소스 데이터베이스의 모든 컬렉션을 지정하십시오. 또한 마이그레이션 규모를 적절하게 확장하세요. 예를 들어, 충분한 수의 복제 인스턴스에서 여러 작업을 실행하여 데이터베이스의 수많은 대규모 컬렉션을 처리할 수 있습니다.

선택한 테이블, 뷰 및 컬렉션에 병렬 로드 사용

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

이 병렬 로드 프로세스를 사용하면 먼저 다중 스레드가 소스 엔드포인트에서 여러 테이블, 뷰 및 컬렉션을 동시에 언로드할 수 있습니다. 그런 다음, 여러 스레드가 동일한 테이블, 뷰 및 컬렉션을 대상 엔드포인트에 동시에 마이그레이션하고 로드할 수 있습니다. 일부 데이터베이스 엔진의 경우, 기존 파티션이나 하위 파티션별로 테이블 및 뷰를 세그먼트화할 수 있습니다. 다른 데이터베이스 엔진의 경우 특정 매개 변수에 따라 컬렉션을 AWS DMS 자동으로 분할할 수 있습니다 (자동 세그멘테이션). 그렇지 않으면 지정한 열 값의 범위로 테이블, 뷰 또는 컬렉션을 세그먼트화할 수 있습니다.

병렬 로드가 지원되는 소스 엔드포인트는 다음과 같습니다.

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2

  • SAP Adaptive Server Enterprise(ASE)

  • MongoDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)

  • Amazon DocumentDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)

  • Amazon DynamoDB

MongoDB 및 Amazon DocumentDB 엔드포인트의 AWS DMS 경우 병렬 전체 로드의 범위 분할 옵션에 대한 파티션 키인 열에 대해 다음 데이터 유형을 지원합니다.

  • Double

  • String

  • ObjectId

  • 32비트 정수

  • 64비트 정수

테이블 설정 규칙과 함께 사용할 병렬 로드는 다음 대상 엔드포인트에 대해 지원됩니다.

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • Amazon S3

  • SAP Adaptive Server Enterprise(ASE)

  • Amazon Redshift

  • MongoDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)

  • Amazon DocumentDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)

동시에 로드할 최대 테이블 및 뷰 수를 지정하려면 MaxFullLoadSubTasks 작업 설정을 사용합니다.

병렬 로드 작업의 지원되는 대상에 대해 테이블 또는 뷰당 최대 스레드 수를 지정하려면 열-값 경계를 사용하여 더 많은 세그먼트를 정의하십시오.

중요

MaxFullLoadSubTasks는 동시에 로드할 테이블 또는 테이블 세그먼트의 수를 제어합니다. ParallelLoadThreads는 마이그레이션 작업에서 로드를 동시에 실행하는 데 사용하는 스레드의 수를 제어합니다. 이러한 설정은 배수로 적용됩니다. 따라서 전체 로드 작업 중에 사용된 스레드의 총 개수는 대략 ParallelLoadThreads 의 값에 MaxFullLoadSubTasks의 값을 곱한 결과(즉, ParallelLoadThreads * MaxFullLoadSubtasks))입니다.

전체 로드 하위 작업의 수가 많고 병렬 로드 스레드의 수가 많은 작업을 만들면 작업이 너무 많은 메모리를 소비하여 실패할 수 있습니다.

Amazon DynamoDB, Amazon Kinesis Data Streams, Apache Kafka 또는 Amazon Elasticsearch Service 대상의 테이블당 최대 스레드 수를 지정하려면 ParallelLoadThreads 대상 메타데이터 작업 설정을 사용하십시오.

ParallelLoadThreads 사용 시 병렬 로드 작업의 버퍼 크기를 지정하려면 ParallelLoadBufferSize 대상 메타데이터 작업 설정을 사용합니다.

ParallelLoadThreadsParallelLoadBufferSize의 가용성과 설정은 대상 엔드포인트에 따라 다릅니다.

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

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

이러한 설정을 수행하는 방법은 병렬 로드를 위해 테이블, 뷰 또는 컬렉션을 세그먼트화하려는 방법에 따라 다릅니다.

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

    MongoDB 및 Amazon DocumentDB 엔드포인트의 경우에만 유형 및 추가 선택적 파라미터를 사용하여 자동으로 AWS DMS 계산되는 세그먼트별로 전체 또는 지정된 컬렉션을 로드하십시오. partitions-auto table-settings

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

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

    참고

    PostgreSQL 엔드포인트는 이러한 유형의 병렬 로드만 지원합니다. MongoDB와 Amazon DocumentDB는 소스 엔드포인트로 이 범위 세그먼트화 유형과 병렬 전체 로드(partitions-auto)의 자동 세분화 유형을 모두 지원합니다.

동시에 로드할 추가 테이블, 뷰 또는 컬렉션을 식별하려면 parallel-load 옵션을 사용하여 추가 table-settings 객체를 지정합니다.

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

모든 테이블, 뷰 또는 컬렉션 파티션이나 모든 테이블 또는 뷰 하위 파티션을 지정하려면
  • parallel-loadpartitions-auto 유형 또는 subpartitions-auto 유형으로 지정하십시오(동시 지정은 불가).

    그러면 모든 테이블, 뷰 또는 컬렉션 파티션(또는 세그먼트) 또는 하위 파티션이 자동으로 자체 스레드에 할당됩니다.

    일부 엔드포인트의 경우, 파티션 또는 하위 파티션은 테이블 또는 뷰에 이미 정의된 경우에만 병렬 로드에 포함됩니다. MongoDB 및 Amazon DocumentDB 소스 엔드포인트의 경우 선택적 추가 파라미터를 기반으로 파티션 (또는 세그먼트) 을 자동으로 계산할 수 있습니다 AWS DMS . 여기에는 number-of-partitions, collection-count-from-metadata, max-records-skip-per-page, batch-size가 포함됩니다.

선택한 테이블 또는 뷰 파티션, 하위 파티션 또는 둘 다 지정하려면
  1. partitions-list 유형으로 parallel-load를 지정합니다.

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

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

    중요

    Oracle 엔드포인트의 경우, 병렬 로드를 위해 파티션과 하위 파티션을 선택할 때 파티션과 하위 파티션이 겹치지 않는지 확인하십시오. 겹치는 파티션과 하위 파티션을 사용하여 데이터를 동시에 로드하면 항목이 중복되거나 기본 키 중복 위반으로 인해 오류가 발생합니다.

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

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

    참고

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

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

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

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

  • DOUBLE, FLOAT, BLOB, CLOB, NCLOB 등의 AWS DMS 데이터 유형으로는 열을 사용하여 세그먼트 경계를 정의할 수 없습니다.

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

테이블, 뷰 또는 컬렉션 세그먼트를 열 값의 범위로 지정하려면
  1. ranges 유형으로 parallel-load를 지정합니다.

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

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

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

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

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

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

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

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

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

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

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

    세그먼트 1

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

    세그먼트 2

    세그먼트 1 행을 제외한 모든 행을 복제하는 경우는 처음 두 열의 값이 해당 세그먼트 2 상한 값 이하이고 세 번째 열의 값이 세그먼트 2 상한 값 미만일 때 해당합니다.

    세그먼트 3

    세그먼트 2 행을 제외한 모든 행을 복제하는 경우는 처음 두 열의 값이 해당 세그먼트 3 상한 값 이하이고 세 번째 열의 값이 세그먼트 3 상한 값 미만일 때 해당합니다.

    세그먼트 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

  • SAP 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

세그먼트 1 이외의 행이 3,000개 SALES_NO 이하이고 ‘WEST’ REGION 미만입니다. 즉, 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" } } ] }