기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
테이블 설정을 사용하여 지정된 작업에서 선택한 테이블 또는 뷰에 적용할 설정을 지정합니다. 테이블 설정 규칙은 엔드포인트 및 마이그레이션 요구 사항에 따라 선택 사항입니다.
MongoDB 및 Amazon DocumentDB 데이터베이스는 테이블과 뷰의 개념 대신 데이터 레코드를 컬렉션에 함께 수집된 문서로 저장합니다. MongoDB 또는 Amazon DocumentDB 엔드포인트에 대한 단일 데이터베이스는 데이터베이스 이름으로 식별되는 특정 컬렉션 집합입니다.
MongoDB 또는 Amazon DocumentDB 소스에서 마이그레이션할 때는 병렬 로드 설정을 사용하는 방식이 약간 다릅니다. 이 경우, 테이블과 뷰보다는 선택한 컬렉션에 대한 자동 세분화 또는 범위 세그먼트화 유형의 병렬 로드 설정을 고려해 보십시오.
테이블 설정 규칙 유형을 사용하는 테이블 매핑 규칙의 경우, 다음 파라미터를 적용할 수 있습니다.
파라미터 | 가능한 값 | 설명 |
---|---|---|
rule-type |
table-settings
|
선택 규칙에서 지정한 테이블, 뷰 또는 컬렉션에 규칙을 적용하는 값입니다. |
rule-id |
숫자 값. | 규칙을 식별하기 위한 고유한 숫자 값입니다. |
rule-name |
영숫자 값입니다. | 규칙을 식별하기 위한 고유한 이름입니다. |
object-locator |
객체는 다음 파라미터를 사용합니다.
|
특정 스키마와 테이블 또는 뷰의 이름 또는 특정 데이터베이스 및 컬렉션의 이름(와일드카드 없음)입니다. |
parallel-load |
객체는 다음 파라미터를 사용합니다.
|
병렬 로드에 관한 자세한 내용은 선택한 테이블, 뷰 및 컬렉션에 병렬 로드 사용 단원을 참조하십시오. |
type |
parallel-load 에 다음 중 하나를 수행하십시오.
|
동시에 로드할 테이블, 뷰 또는 컬렉션 파티션, 하위 파티션 또는 세그먼트를 식별하는 메커니즘입니다. |
number-of-partitions |
(선택 사항) type 이 MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대한 partitions-auto 인 경우, 이 파라미터는 마이그레이션에 사용되는 총 파티션(세그먼트) 수를 지정합니다. 기본값은 16입니다. |
동시에 로드할 파티션의 정확한 이름을 지정합니다. |
collection-count-from-metadata |
(선택 사항) type 가 MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션partitions-auto 에 대해 이고이 파라미터가 로 설정된 경우 true 예상 컬렉션 수를 AWS DMS 사용하여 파티션 수를 결정합니다. 이 파라미터가 로 설정된 경우 실제 컬렉션 수를 false AWS DMS 사용합니다. 기본값은 true 입니다. |
동시에 로드할 파티션 수를 계산할 때 예상 컬렉션 수를 사용할지 아니면 실제 컬렉션 수를 사용할지를 지정합니다. |
max-records-skip-per-page |
(선택 사항) MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대한 type 이 partitions-auto 인 경우, 이것은 각 파티션의 경계를 결정할 때 한 번에 건너뛰어야 하는 레코드 수를 나타냅니다. AWS DMS
는 페이징된 건너뛰기 방식을 사용하여 파티션의 최소 경계를 결정합니다. 기본값은 10,000입니다. |
각 파티션의 경계를 결정할 때 한 번에 건너뛸 레코드 수를 지정합니다. 기본값보다 비교적 큰 값을 설정하면 커서 제한 시간이 초과되고 작업이 실패할 수 있습니다. 기본값보다 비교적 작은 값을 설정하면 페이지당 작업 수가 늘어나고 전체 로드 속도가 느려집니다. |
batch-size |
(선택 사항) MongoDB 또는 Amazon DocumentDB 엔드포인트의 지정된 컬렉션에 대한 type 이 partitions-auto 인 경우, 이 정수 값은 한 번의 왕복 배치에서 반환되는 문서 수를 제한합니다. 배치 크기가 0인 경우, 커서는 서버에서 정의한 최대 배치 크기를 사용합니다. 기본값은 0입니다. |
하나의 배치에 반환된 최대 문서 수를 지정합니다. 배치마다 서버를 왕복해야 합니다. |
partitions |
type 이 partitions-list 일 때 동시에 로드할 파티션의 이름을 지정하는 문자열 배열입니다. |
동시에 로드할 파티션의 이름입니다. |
subpartitions |
(Oracle 엔드포인트 전용) type 이 partitions-list 일 때 동시에 로드할 하위 파티션의 이름을 지정하는 문자열 배열입니다. |
동시에 로드할 하위 파티션의 이름입니다. |
columns |
type 이 ranges 일 때 동시에 로드할 범위 기반 테이블, 뷰 또는 컬렉션 세그먼트를 식별하는 열 이름으로 설정된 문자열 배열입니다. |
동시에 로드할 범위 기반 테이블, 뷰 또는 컬렉션 세그먼트를 식별하는 열 이름입니다. |
boundaries |
type 이 ranges 일 때 열-값 배열의 배열입니다. 각 열-값 배열은 columns 에 의해 지정된 수량과 순서로 열 값을 포함합니다. 열-값 배열은 테이블, 뷰 또는 컬렉션 세그먼트의 상한을 지정합니다. 각 추가 열-값 배열은 하나의 추가 테이블, 뷰 또는 컬렉션 세그먼트에 대한 상한을 추가합니다. 이러한 모든 범위 기반 테이블, 뷰 또는 컬렉션 세그먼트는 동시에 로드됩니다. |
동시에 로드할 범위 기반 테이블, 뷰 또는 컬렉션 파티션을 식별하는 열 값입니다. |
lob-settings |
객체는 다음 파라미터를 사용합니다.
|
object-locator 옵션으로 식별되는 테이블 또는 뷰에 대한 LOB 처리를 지정하는 값입니다. 지정된 LOB 처리는이 테이블 또는 뷰에 대한 모든 작업 LOB 설정을 재정의합니다. LOB 설정 파라미터 사용에 대한 자세한 내용은 섹션을 참조하세요선택한 테이블 또는 뷰에 대한 LOB 설정 지정. |
mode |
다음 값을 사용하여 지정된 테이블 또는 뷰LOBs에서에 대한 마이그레이션 처리를 지정합니다.
|
를 마이그레이션하는 데 사용되는 메커니즘입니다LOBs. |
bulk-max-size |
이 값의 효과는 mode 에 따라 다릅니다. |
의 최대 크기는 LOBs 킬로바이트 단위로 증가합니다. 작은를 복제해야 LOBs하거나 대상 엔드포인트가 무제한 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"
을 개별적으로 지정하여 가장 큰 컬렉션에 대한 소스 데이터베이스의 모든 컬렉션을 지정하십시오. 또한 마이그레이션 규모를 적절하게 확장하세요. 예를 들어, 충분한 수의 복제 인스턴스에서 여러 작업을 실행하여 데이터베이스의 수많은 대규모 컬렉션을 처리할 수 있습니다.
선택한 테이블, 뷰 및 컬렉션에 병렬 로드 사용
선택한 관계형 테이블, 뷰 및 컬렉션에 병렬 로드를 사용하여 마이그레이션 속도와 효율성을 향상시킬 수 있습니다. 즉, 여러 스레드를 동시에 사용하여 단일한 세그먼트화 테이블, 뷰 또는 컬렉션을 마이그레이션할 수 있습니다. 이를 위해는 전체 로드 작업을 스레드로 AWS DMS 분할하고 각 테이블 세그먼트를 자체 스레드에 할당합니다.
이 병렬 로드 프로세스를 사용하면 먼저 다중 스레드가 소스 엔드포인트에서 여러 테이블, 뷰 및 컬렉션을 동시에 언로드할 수 있습니다. 그런 다음, 여러 스레드가 동일한 테이블, 뷰 및 컬렉션을 대상 엔드포인트에 동시에 마이그레이션하고 로드할 수 있습니다. 일부 데이터베이스 엔진의 경우, 기존 파티션이나 하위 파티션별로 테이블 및 뷰를 세그먼트화할 수 있습니다. 다른 데이터베이스 엔진의 경우 특정 파라미터(자동 분할)에 따라 컬렉션을 AWS DMS 자동으로 분할할 수 있습니다. 그렇지 않으면 지정한 열 값의 범위로 테이블, 뷰 또는 컬렉션을 세그먼트화할 수 있습니다.
병렬 로드가 지원되는 소스 엔드포인트는 다음과 같습니다.
-
Oracle
-
Microsoft SQL 서버
-
내SQL
-
PostgreSQL
-
IBM Db2 LUW
-
SAP Adaptive Server Enterprise(ASE)
-
MongoDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)
-
Amazon DocumentDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)
MongoDB 및 Amazon DocumentDB 엔드포인트의 경우는 병렬 전체 로드의 범위 분할 옵션에 대한 파티션 키인 열에 대해 다음 데이터 유형을 AWS DMS 지원합니다.
-
배정밀도 실수
-
String
-
ObjectId
-
32비트 정수
-
64비트 정수
테이블 설정 규칙과 함께 사용할 병렬 로드는 다음 대상 엔드포인트에 대해 지원됩니다.
-
Oracle
-
Microsoft SQL 서버
-
내SQL
-
PostgreSQL
-
Amazon S3
-
SAP Adaptive Server Enterprise(ASE)
-
Amazon Redshift
-
MongoDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)
-
Amazon DocumentDB(병렬 전체 로드의 자동 세분화 및 범위 세그먼트화 옵션만 지원)
-
Db2 LUW
동시에 로드할 최대 테이블 및 뷰 수를 지정하려면 MaxFullLoadSubTasks
작업 설정을 사용합니다.
병렬 로드 작업의 지원되는 대상에 대해 테이블 또는 뷰당 최대 스레드 수를 지정하려면 열-값 경계를 사용하여 더 많은 세그먼트를 정의하십시오.
중요
MaxFullLoadSubTasks
는 동시에 로드할 테이블 또는 테이블 세그먼트의 수를 제어합니다. ParallelLoadThreads
는 마이그레이션 작업에서 로드를 동시에 실행하는 데 사용하는 스레드의 수를 제어합니다. 이러한 설정은 배수로 적용됩니다. 따라서 전체 로드 작업 중에 사용된 스레드의 총 개수는 대략 ParallelLoadThreads
의 값에 MaxFullLoadSubTasks
의 값을 곱한 결과(즉, ParallelLoadThreads
* MaxFullLoadSubtasks)
)입니다.
전체 로드 하위 작업의 수가 많고 병렬 로드 스레드의 수가 많은 작업을 만들면 작업이 너무 많은 메모리를 소비하여 실패할 수 있습니다.
Amazon DynamoDB, Amazon Kinesis Data Streams, Apache Kafka 또는 Amazon Elasticsearch Service 대상의 테이블당 최대 스레드 수를 지정하려면 ParallelLoadThreads
대상 메타데이터 작업 설정을 사용하십시오.
ParallelLoadThreads
사용 시 병렬 로드 작업의 버퍼 크기를 지정하려면 ParallelLoadBufferSize
대상 메타데이터 작업 설정을 사용합니다.
ParallelLoadThreads
및 ParallelLoadBufferSize
의 가용성과 설정은 대상 엔드포인트에 따라 다릅니다.
ParallelLoadThreads
및 ParallelLoadBufferSize
설정에 관한 자세한 내용은 대상 메타데이터 작업 설정을 참조하세요. MaxFullLoadSubTasks
설정에 관한 자세한 내용은 전체 로드 작업 설정를 참조하십시오. 대상 엔드포인트에 관한 자세한 내용은 관련 주제를 참조하십시오.
병렬 로드를 사용하려면 parallel-load
옵션을 사용하여 table-settings
유형의 테이블 매핑 규칙을 만듭니다. table-settings
규칙 내에서 동시에 로드하려는 단일한 테이블, 뷰 또는 컬렉션의 세그먼트화 기준을 지정할 수 있습니다. 이렇게 하려면 parallel-load
옵션의 type
파라미터를 여러 옵션 중 하나로 설정합니다.
이러한 설정을 수행하는 방법은 병렬 로드를 위해 테이블, 뷰 또는 컬렉션을 세그먼트화하려는 방법에 따라 다릅니다.
-
파티션별(세그먼트별) –
partitions-auto
유형을 사용하여 기존 테이블 또는 뷰 파티션(세그먼트)을 모두 로드합니다. 또는 지정된 파티션 배열이 있는partitions-list
유형을 사용하여 선택한 파티션만 로드합니다.MongoDB 및 Amazon DocumentDB 엔드포인트의 경우에만가
partitions-auto
유형 및 추가 선택적table-settings
파라미터를 사용하여 AWS DMS 자동으로 계산하는 세그먼트별로 모든 또는 지정된 컬렉션을 로드합니다. -
(Oracle 엔드포인트 전용) 하위 파티션별 –
subpartitions-auto
유형을 사용하여 기존 테이블 또는 뷰 하위 파티션을 모두 로드합니다. 또는 지정된subpartitions
배열이 있는partitions-list
유형을 사용하여 선택한 하위 파티션만 로드합니다. -
정의한 세그먼트별 – 열-값 경계를 사용하여 정의한 테이블, 뷰 또는 컬렉션 세그먼트를 로드합니다. 이렇게 하려면 지정된
columns
및boundaries
배열이 있는ranges
유형을 사용하십시오.참고
PostgreSQL 엔드포인트는 이러한 유형의 병렬 로드만 지원합니다. MongoDB와 Amazon DocumentDB는 소스 엔드포인트로 이 범위 세그먼트화 유형과 병렬 전체 로드(
partitions-auto
)의 자동 세분화 유형을 모두 지원합니다.
동시에 로드할 추가 테이블, 뷰 또는 컬렉션을 식별하려면 parallel-load
옵션을 사용하여 추가 table-settings
객체를 지정합니다.
다음 절차에서는 가장 간단한 것부터 가장 복잡한 것까지 각 병렬 로드 유형에 JSON 대해 코딩하는 방법을 확인할 수 있습니다.
모든 테이블, 뷰 또는 컬렉션 파티션이나 모든 테이블 또는 뷰 하위 파티션을 지정하려면
-
parallel-load
를partitions-auto
유형 또는subpartitions-auto
유형으로 지정하십시오(동시 지정은 불가).그러면 모든 테이블, 뷰 또는 컬렉션 파티션(또는 세그먼트) 또는 하위 파티션이 자동으로 자체 스레드에 할당됩니다.
일부 엔드포인트의 경우, 파티션 또는 하위 파티션은 테이블 또는 뷰에 이미 정의된 경우에만 병렬 로드에 포함됩니다. MongoDB 및 Amazon DocumentDB 소스 엔드포인트의 경우 선택적 추가 파라미터를 기반으로 파티션(또는 세그먼트)을 AWS DMS 자동으로 계산할 수 있습니다. 여기에는
number-of-partitions
,collection-count-from-metadata
,max-records-skip-per-page
,batch-size
가 포함됩니다.
선택한 테이블 또는 뷰 파티션, 하위 파티션 또는 둘 다 지정하려면
-
partitions-list
유형으로parallel-load
를 지정합니다. -
(선택 사항) 파티션 이름의 배열을
partitions
값으로 지정하여 파티션을 포함합니다.그러면 지정된 각 파티션이 자체 스레드에 할당됩니다.
중요
Oracle 엔드포인트의 경우, 병렬 로드를 위해 파티션과 하위 파티션을 선택할 때 파티션과 하위 파티션이 겹치지 않는지 확인하십시오. 겹치는 파티션과 하위 파티션을 사용하여 데이터를 동시에 로드하면 항목이 중복되거나 기본 키 중복 위반으로 인해 오류가 발생합니다.
-
(선택 사항) Oracle 엔드포인트의 경우 한해 하위 파티션 이름의 배열을
subpartitions
값으로 지정하여 하위 파티션을 포함합니다.그러면 지정된 각 하위 파티션이 자체 스레드에 할당됩니다.
참고
파티션 또는 하위 파티션은 테이블 또는 뷰에 이미 정의된 경우에만 병렬 로드에 포함됩니다.
테이블 또는 뷰 세그먼트를 열 값의 범위로 지정할 수 있습니다. 이렇게 하려면 다음 열 특성을 알고 있어야 합니다.
-
인덱싱된 열을 지정하면 성능이 크게 향상됩니다.
-
최대 10개의 열을 지정할 수 있습니다.
-
열을 사용하여 DOUBLE, , FLOAT, 및 AWS DMS 데이터 형식으로 세그먼트 경계를 정의할 수 없습니다BLOB. CLOB NCLOB
-
null 값의 레코드는 복제되지 않습니다.
테이블, 뷰 또는 컬렉션 세그먼트를 열 값의 범위로 지정하려면
-
ranges
유형으로parallel-load
를 지정합니다. -
열 이름의 배열을
columns
값으로 지정하여 테이블 또는 뷰 세그먼트 사이의 경계를 정의합니다. 테이블 또는 뷰 세그먼트 사이의 경계를 정의하려는 모든 열에 대해 이 작업을 수행합니다.열의 순서는 중요합니다. 다음 설명과 같이 각 경계를 정의하는 데 있어 첫 번째 열이 가장 중요하고 마지막 열은 가장 덜 중요합니다.
-
모든 테이블 또는 뷰 세그먼트의 데이터 범위를 정의하려면 경계 배열의 값을
boundaries
로 지정하십시오. 경계 배열은 열-값 배열의 배열입니다. 이 작업을 수행하려면 다음 단계를 수행하십시오.-
열-값 배열의 각 요소를 각 열에 맞는 값으로 지정합니다. 열-값 배열은 정의하려는 각 테이블 또는 뷰 세그먼트의 상한을 나타냅니다.
columns
배열에서 해당 열을 지정한 순서대로 각 열을 지정합니다.소스에서 지원하는 형식으로 DATE 열 값을 입력합니다.
-
각 열-값 배열을 테이블 또는 뷰의 하단에서 세그먼트까지 next-to-top 각 세그먼트의 상위 경계로 지정합니다. 지정한 맨 위 상한선 위에 행이 있으면 이 행은 테이블 또는 뷰의 맨 위 세그먼트를 완료합니다. 따라서 범위 기반 세그먼트의 수가 경계 배열의 세그먼트 경계 수보다 하나 더 많을 수 있습니다. 이러한 범위 기반 세그먼트는 각각 자체 스레드에 할당됩니다.
테이블 또는 뷰의 모든 열에 데이터 범위를 정의하지 않더라도 null이 아닌 모든 데이터가 복제됩니다.
예를 들어 다음과 COL3 같이 열 , COL1 COL2및에 대해 세 개의 열-값 배열을 정의한다고 가정해 보겠습니다.
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 서버
-
내SQL
-
PostgreSQL
-
IBM Db2,
mode
및bulk-max-size
설정에 따라 다음 설명 참조 -
SAP 다음에 설명된 대로
mode
및bulk-max-size
설정에 따라 Adaptive Server Enterprise(ASE)
선택한 테이블 또는 뷰에 대한 LOB 설정 지정은 다음 대상 엔드포인트에 대해 지원됩니다.
-
Oracle
-
Microsoft SQL 서버
-
내SQL
-
PostgreSQL
-
SAP ASE,
mode
및bulk-max-size
설정에 따라 다음 설명과 같이
참고
기본 키가 포함된 테이블 및 뷰에서만 LOB 데이터 형식을 사용할 수 있습니다.
선택한 테이블 또는 뷰에 대한 LOB 설정을 사용하려면 lob-settings
옵션을 table-settings
사용하여 테이블 매핑 유형의 규칙을 생성합니다. 이렇게 하면 object-locator
옵션으로 식별되는 테이블 또는 뷰에 대한 LOB 처리가 지정됩니다. table-settings
규칙 내에서 다음 파라미터를 사용하여 lob-settings
객체를 지정할 수 있습니다.
-
mode
- 다음과 같이 선택한 테이블 또는 뷰의 LOB 마이그레이션을 처리하는 메커니즘을 지정합니다.-
limited
– 기본 제한 LOB 모드는 가장 빠르고 효율적인 모드입니다. 모든 LOBs가 작거나(100MB 이내) 대상 엔드포인트가 무제한 LOB 크기를 지원하지 않는 경우에만이 모드를 사용합니다. 또한를 사용하는 경우limited
모두에 대해 설정한 크기 내에 LOBs 있어야 합니다bulk-max-size
.전체 로드 작업의이 모드에서 복제 인스턴스는 기본 테이블 또는 뷰 스토리지의 일부로 다른 열 데이터 유형과 함께 모든를 LOBs 인라인으로 마이그레이션합니다. 그러나 인스턴스는
bulk-max-size
값보다 LOB 큰 마이그레이션된를 지정된 크기로 잘라냅니다. 변경 데이터 캡처(CDC) 로드 작업의 경우 인스턴스는 표준 전체 LOB 모드에서와 같이 소스 테이블 조회를 LOBs 사용하여 모두 마이그레이션합니다(다음 참조).참고
뷰는 전체 로드 작업에 대해서만 마이그레이션할 수 있습니다.
-
unlimited
- 전체 LOB 모드의 마이그레이션 메커니즘은 다음과bulk-max-size
같이에 대해 설정한 값에 따라 달라집니다.-
표준 전체 LOB 모드 -를 0
bulk-max-size
으로 설정하면 복제 인스턴스가 표준 전체 LOB 모드를 LOBs 사용하여 모두 마이그레이션합니다. 이 모드에서는 크기에 LOB관계없이 모든를 마이그레이션하려면 소스 테이블 또는 뷰에서 조회해야 합니다. 이 접근 방식은 일반적으로 제한된 LOB 모드보다 마이그레이션 속도가 훨씬 느립니다. 전체 또는 대부분LOBs이 큰(1GB 이상) 경우에만이 모드를 사용합니다. -
조합 전체 LOB 모드 - 0
bulk-max-size
이 아닌 값으로 설정하면이 전체 LOB 모드는 제한 LOB 모드와 표준 전체 LOB 모드의 조합을 사용합니다. 즉, 전체 로드 작업의 경우 LOB 크기가bulk-max-size
값 내에 있는 경우 인스턴스는 제한된 LOB 모드에서와 같이 LOB 인라인을 마이그레이션합니다. LOB 크기가이 값보다 크면 인스턴스는 표준 전체 LOB 모드에서와 같이 소스 테이블 또는 뷰 조회를 LOB 사용하여를 마이그레이션합니다. 변경 데이터 캡처(CDC) 로드 작업의 경우 인스턴스는 표준 전체 LOB 모드에서와 같이 소스 테이블 조회를 LOBs 사용하여 모두 마이그레이션합니다(다음 참조). LOB 크기에 관계없이 가능합니다.참고
뷰는 전체 로드 작업에 대해서만 마이그레이션할 수 있습니다.
이 모드를 사용하면 마이그레이션 속도가 향상되어 더 빠르고 제한된 LOB 모드와 더 느린 표준 전체 LOB 모드가 손상됩니다. 이 모드는가 작고가 크LOBs며 대부분LOBs이 작은 경우에만 사용합니다.
이 조합 전체 LOB 모드는 다음 엔드포인트에서만 사용할 수 있습니다.
-
IBM Db2 소스
-
SAP ASE 소스 또는 대상
-
unlimited
모드에 대해 지정하는 메커니즘에 관계없이 인스턴스는 잘림 없이 모두 LOBs 완전히 마이그레이션됩니다. -
-
none
- 작업 LOB 설정을 사용하여 선택한 테이블 또는 뷰LOBs에서 복제 인스턴스가 마이그레이션됩니다. 이 옵션을 사용하면 선택한 테이블 또는 뷰에 대한 LOB 설정 유무와 관계없이 마이그레이션 결과를 비교할 수 있습니다.
지정된 테이블 또는 뷰가 복제에 LOBs 포함된 경우
limited
LOB 모드를 사용할 때true
만BatchApplyEnabled
작업 설정을 로 설정할 수 있습니다.경우에 따라
BatchApplyEnabled
를true
로,BatchApplyPreserveTransaction
을false
로 설정해야 할 수 있습니다. 이러한 경우 테이블 또는 뷰에가 LOBs 있고 소스 및 대상 엔드포인트가 Oracle인true
경우 인스턴스는BatchApplyPreserveTransaction
로 설정됩니다. -
-
bulk-max-size
– 이전 항목에서 설명한 대로,mode
에 따라 이 값을 0 또는 0이 아닌 값(킬로바이트)으로 설정합니다.limited
모드에서는 이 파라미터에 0이 아닌 값을 설정해야 합니다.인스턴스는 LOBs 이진 형식으로 변환됩니다. 따라서 복제해야 LOB 하는 최대 크기를 지정하려면 크기에 3을 곱합니다. 예를 들어, 가장 큰 값이 2MBLOB인 경우를 6,000(6MB)
bulk-max-size
으로 설정합니다.
테이블 설정 예제
다음은 테이블 설정 사용법을 보여주는 몇 가지 예제입니다.
예 파티션별로 세그먼트화된 테이블 로드
다음 예제는 모든 파티션을 기반으로 소스의 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
등). 지정된 하위 파티션의 이름은 숫자로 시작하는 값을 따라 지정됩니다(예: 01234
및 56789
).
{
"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_NO
및 REGION
열 값의 범위로 지정된 세그먼트별로 소스의 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_NO
및 REGION
인 세그먼트 범위에 두 개의 열이 지정됩니다. 두 경계는 두 열 값 집합(["1000","NORTH"]
및 ["3000","WEST"]
)으로 지정됩니다.
따라서 이 두 경계는 동시에 로드할 다음 세 개 테이블 세그먼트를 식별합니다.
- 세그먼트 1
-
1,000
SALES_NO
개 이하 및 "NORTH"REGION
미만의 행. 즉, EAST 리전에서 최대 1,000개의 판매 번호입니다. - 세그먼트 2
-
3,000
SALES_NO
이하 및 "WEST"REGION
미만인 세그먼트 1 이외의 행. 즉, NORTH 및 SOUTH 리전에서 1,000개 이상의 판매 수는 최대 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 설정을 LOBs 사용하여 로 테이블 로드
다음 예제에서는 작업 LOB 설정을 LOBs사용하여 모든를 포함하여 소스에 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"
}
}
]
}
예 제한 LOB 모드를 LOBs 사용하여 로 테이블 로드
다음 예제에서는 최대 비절단 크기가 100MB인 제한 LOB 모드(기본값)를 사용하여 LOBs 소스에를 포함한 ITEMS
테이블을 로드합니다. 이 크기보다 큰 모든 LOBs는 100MB로 잘립니다. 모든 LOBs는 다른 모든 열 데이터 유형과 인라인으로 로드됩니다.
{
"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 모드를 LOBs 사용하여 로 테이블 로드
다음 예제에서는 표준 전체 LOB 모드를 사용하여 잘림 LOBs 없이 모든 테이블을 포함하여 소스에 ITEMS
테이블을 로드합니다. 모든는 크기에 LOBs관계없이 소스 테이블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 모드를 LOBs 사용하여 로 테이블 로드
다음 예제에서는 조합 전체 LOB 모드를 사용하여 잘림 LOBs 없이 모든 테이블을 포함하여 소스에 ITEMS
테이블을 로드합니다. 크기가 100MB LOBs 이내인 모든는 제한 LOB 모드에서와 같이 다른 데이터 유형과 함께 인라인으로 로드됩니다. 크기가 100MBLOBs를 초과하는 모든 데이터는 다른 데이터 유형과 별도로 로드됩니다. 이 별도의 로드는 표준 전체 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"
}
}
]
}