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

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

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

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

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

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

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

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

  • table-name— 테이블, 보기 또는 컬렉션의 이름.

특정 스키마와 테이블 또는 뷰의 이름 또는 특정 데이터베이스 및 컬렉션의 이름 (와일드카드 제외)

parallel-load 객체는 다음 파라미터를 사용합니다.
  • type— parallel 로딩이 켜져 있는지 여부를 지정합니다.

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

    MongoDB 및 Amazon DocumentDB 엔드포인트의 경우 파티션은 세그먼트입니다.AWS DMS자동으로 지정된 관련 자동 분할 매개변수를 계산할 수 있습니다. 또는 범위 분할 매개변수를 사용하여 수동으로 지정할 수 있습니다.

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

  • partitions— 일시type입니다partitions-list, 이 값은 병렬로 로드할 모든 파티션을 지정합니다.

  • subpartitions— Oracle 엔드포인트에 한해, 다음과 같은 경우type입니다partitions-list이 값은 병렬로 로드할 모든 하위 분할 영역을 지정합니다.

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

  • boundaries— 일시type입니다ranges, 이 값은 의 값을 지정합니다.columns병렬로 로드할 범위 기반 세그먼트를 식별하는 데 사용됩니다.

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

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

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

  • 지정한 자동 세분화 또는 범위 기반 세그먼트를 사용합니다.

parallel 로드에 대한 자세한 내용은 단원을 참조하세요.선택한 테이블, 뷰 및 컬렉션에 parallel 로드 사용.

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

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

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

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

  • ranges— 테이블, 뷰 또는 컬렉션의 모든 범위 지정 세그먼트가 parallel 로드됩니다. 식별한 각 테이블, 뷰 또는 컬렉션 세그먼트는 고유한 스레드에 할당됩니다. 이러한 세그먼트는 열 이름(columns) 및 열 값(boundaries)으로 지정합니다.

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

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

병렬로 로드할 테이블, 뷰 또는 컬렉션 파티션, 하위 분할 영역 또는 세그먼트를 식별하는 메커니즘입니다.
number-of-partitions (선택 사항) 언제type입니다partitions-autoMongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대해 이 파라미터는 마이그레이션에 사용되는 총 파티션 (세그먼트) 수를 지정합니다. 기본값은 16입니다. 병렬로 로드할 파티션의 정확한 수를 지정합니다.
collection-count-from-metadata (선택 사항) 언제type입니다partitions-autoMongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대해 이 파라미터는 다음과 같이 설정됩니다.true,AWS DMS는 파티션 수를 결정하는 데 예상 컬렉션 수를 사용합니다. 이 파라미터가 로 설정되는 경우false,AWS DMS실제 컬렉션 수를 사용합니다. 기본값은 true입니다. 병렬로 로드할 파티션 수를 계산할 때 예상 수집 횟수를 사용할지 실제 수집 횟수를 사용할지 여부를 지정합니다.
max-records-skip-per-page (선택 사항) 언제type입니다partitions-autoMongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션의 경우 각 파티션의 경계를 결정할 때 한 번에 건너뛸 레코드 수입니다.AWS DMS페이지별 건너뛰기 방식을 사용하여 파티션의 최소 경계를 결정합니다. 기본값: 10,000. 각 파티션의 경계를 결정할 때 한 번에 건너뛸 레코드 수를 지정합니다. 상대적으로 큰 값을 기본값에서 설정하면 커서 제한 시간이 초과되고 작업이 실패할 수 있습니다. 기본값에서 상대적으로 낮은 값을 설정하면 페이지당 작업 수가 많아지고 전체 로드 속도가 느려집니다.
batch-size (선택 사항) 언제type입니다partitions-autoMongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대해 이 정수 값은 한 번의 왕복 배치로 반환되는 문서 수를 제한합니다. 배치 크기가 0일 경우 커서는 서버에서 정의한 최대 배치 크기를 사용합니다. 기본값은 0입니다. 한 일괄 처리로 반환된 최대 문서 수를 지정합니다. 각 배치에는 서버로의 왕복 이동이 필요합니다.
partitions typepartitions-list일 때, 병렬로 로드할 파티션의 이름을 지정하는 문자열 배열입니다. 병렬로 로드할 파티션의 이름입니다.
subpartitions (Oracle 엔드포인트 전용) typepartitions-list일 때, 병렬로 로드할 하위 파티션의 이름을 지정하는 문자열 배열입니다. 병렬로 로드할 하위 파티션의 이름입니다.
columns 일시type입니다ranges, 병렬로 로드할 범위 기반 테이블, 뷰 또는 컬렉션 세그먼트를 식별하는 열 이름으로 설정된 문자열 배열입니다. 병렬로 로드할 범위 기반 테이블, 뷰 또는 컬렉션 세그먼트를 식별하는 열 이름입니다.
boundaries typeranges일 때, 열-값 배열의 배열입니다. 각 열-값 배열은 columns에 의해 지정된 수량과 순서로 열 값을 포함합니다. 열 값 배열은 테이블, 뷰 또는 컬렉션 세그먼트의 상한선을 지정합니다. 각 열 값 배열을 추가하면 하나의 추가 테이블, 뷰 또는 컬렉션 세그먼트에 대한 상한선이 추가됩니다. 이러한 범위 기반 테이블, 뷰 또는 컬렉션 세그먼트는 모두 parallel 로드됩니다. 병렬로 로드할 범위 기반 테이블, 뷰 또는 컬렉션 파티션을 식별하는 열 값입니다.
lob-settings 객체는 다음 파라미터를 사용합니다.
  • mode— LOB의 마이그레이션 처리 모드를 지정합니다.

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

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 크기를 지원하지 않는 경우에만 이 옵션을 지정하십시오.

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

퍼센트 와일드카드 사용 ("%") 에서"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.

또한,AWS단일 작업을 사용하여 많은 수의 대규모 컬렉션을 로드하지 않는 것이 좋습니다.parallel-load. 참고AWS DMS리소스 경합과 병렬로 로드되는 세그먼트 수를 다음 값으로 제한합니다.MaxFullLoadSubTasks작업 설정 매개 변수 (최대값 49)

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

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

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

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

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

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2

  • SAP Adaptive Server Enterprise(ASE)

  • MongoDB (parallel 전체 로드의 자동 세분화 및 범위 분할 옵션만 지원)

  • Amazon DocumentDB (parallel 전체 로드의 자동 세분화 및 범위 분할 옵션만 지원)

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

  • Double

  • 문자열

  • ObjectId

  • 32비트 정수

  • 64비트 정수

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

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • Amazon S3

  • SAP Adaptive Server Enterprise(ASE)

  • Amazon Redshift

  • MongoDB (parallel 전체 로드의 자동 세분화 및 범위 분할 옵션만 지원)

  • Amazon DocumentDB (parallel 전체 로드의 자동 세분화 및 범위 분할 옵션만 지원)

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

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

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

parallel 로드 작업의 버퍼 크기를 지정하려면 다음과 같이 하십시오.ParallelLoadThreads사용됩니다.ParallelLoadBufferSize대상 메타데이터 작업 설정

의 사용 가능 여부 및 설정ParallelLoadThreadsParallelLoadBufferSize대상 엔드포인트에 따라 달라집니다.

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

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

이 작업을 수행하는 방법은 parallel 로드를 위해 테이블, 뷰 또는 컬렉션을 분할하는 방법에 따라 달라집니다.

  • 파티션 (또는 세그먼트) 별 — 를 사용하여 기존의 모든 테이블 또는 뷰 파티션 (또는 세그먼트) 을 로드합니다.partitions-auto유형. 또는 를 사용하여 선택한 파티션만 로드하십시오.partitions-list지정된 파티션 배열을 사용하여 입력하십시오.

    MongoDB 및 Amazon DocumentDB 엔드포인트의 경우에만 모든 컬렉션 또는 지정된 컬렉션을 다음과 같은 세그먼트별로 로드하십시오.AWS DMS또한 를 사용하여 자동으로 계산합니다.partitions-auto유형 및 추가 옵션table-settings파라미터.

  • (Oracle 엔드포인트만 해당) 하위 분할 영역별 — 기존 테이블을 모두 로드하거나 를 사용하여 하위 분할 영역을 봅니다.subpartitions-auto유형. 또는 지정된 subpartitions 배열이 있는 partitions-list 유형을 사용하여 선택한 하위 파티션만 로드합니다.

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

    참고

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

병렬로 로드할 추가 테이블, 뷰 또는 컬렉션을 식별하려면 추가로 지정하십시오.table-settings로 객체parallel-load옵션.

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

모든 테이블, 뷰 또는 컬렉션 파티션 또는 모든 테이블 또는 뷰 하위 분할 영역을 지정하려면

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

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

    일부 엔드포인트의 경우 테이블 또는 뷰에 이미 정의된 파티션이나 하위 파티션만 parallel 로드에 포함됩니다. 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 엔드포인트의 경우, parallel 로드용으로 파티션과 하위 파티션을 선택할 때 파티션과 하위 파티션이 겹치지 않는지 확인하십시오. 중복되는 파티션과 하위 파티션을 사용하여 데이터를 parallel 로드하면 항목이 중복되거나 기본 키 중복 위반으로 인해 실패합니다.

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

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

    참고

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

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

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

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

  • 다음과 같은 경우에는 열을 사용하여 세그먼트 경계를 정의할 수 없습니다.AWS DMS데이터 유형: 더블, 플로트, 블럽, 클롭 및 NCLOB

  • 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

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

      • 콤비네이션 풀 LOB 모드— 설정할 때bulk-max-size이 전체 LOB 모드는 0이 아닌 값으로 제한되는 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— 다음 값에 따라 이 값을 0이 아닌 값 (KB) 으로 설정합니다.mode이전 항목에 대한 설명과 같습니다. 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

이외의 행세그먼트 1SALES_NO3,000 이하 및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" } } ] }