기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
DMS Schema Conversion의 선택 규칙
DMS Schema Conversion은 데이터베이스 스키마를 한 엔진에서 다른 엔진으로 변환합니다. 선택 규칙을 사용하여 평가, 변환 및 내보내기와 같은 작업 중에 DMS Schema Conversion이 수행하는 데이터베이스 객체를 제어할 수 있습니다. 선택 규칙은 SelectionRules 파라미터를 통해(또는 AWS CLI--selection-rules에서) 전달하는 JSON 객체입니다. 선택 규칙이 없으면 작업에 아무 작업도 수행할 필요가 없습니다. 규칙을 사용하면 단일 객체, 전체 스키마, 전체 데이터베이스(Microsoft SQL Server 및 SAP ASE(Sybase ASE) 소스용) 또는 패턴과 일치하는 객체 그룹으로 작업의 범위를 지정할 수 있습니다.
참고
AWS 관리 콘솔을 사용하면 DMS Schema Conversion은 마이그레이션 프로젝트 UI의 선택에 따라 선택 규칙을 자동으로 구성합니다. DMS Schema Conversion API 또는 AWS CLI를 사용할 때는 선택 규칙만 직접 작성하면 됩니다.
마이그레이션 프로젝트의 소스 측과 대상 측 모두에서 동일한 규칙 셰이프를 사용합니다. 객체 로케이터의 server-name 필드는 규칙이 소스 데이터 공급자를 대상으로 하는지 아니면 대상 데이터 공급자를 대상으로 하는지 지정합니다. 단일 마이그레이션 프로젝트는 일반적으로 평가 및 변환을 위한 소스 규칙, SQL 내보내기를 위한 대상 규칙 등 두 가지 규칙을 모두 사용합니다.
선택 규칙 형식
선택 규칙 문서는 단일 rules 배열이 있는 JSON 객체입니다. 배열의 각 항목은 하나의 규칙이며 모든 규칙에는 다음 필드가 모두 포함되어야 합니다.
| 파라미터 | 값 | 설명 |
|---|---|---|
rule-type |
selection |
규칙 유형을 식별하는 값입니다. 모든 선택 규칙에 대해이 값을 로 설정합니다selection. 필수 파라미터. |
rule-id |
숫자(정수) 값입니다. | 규칙의 고유한 숫자 식별자입니다. 필수 파라미터. |
rule-name |
영숫자 값입니다. | 규칙을 식별하기 위한 고유한 이름입니다. 필수 파라미터. |
rule-action |
explicit,include 또는 exclude |
객체 로케이터가 해석되는 방식을 결정하는 값입니다. 규칙 작업을(를) 참조하세요. 필수 파라미터. |
object-locator |
엔진별 로케이터 키가 포함된 JSON 객체입니다. | 규칙이 적용되는 데이터베이스 객체를 식별하는 객체입니다. 객체 로케이터 계층 구조을(를) 참조하세요. 필수 파라미터. |
다음 최소 예제는 소스 서버에서 하나의 스키마를 대상으로 합니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
참고
AWS CLI를 사용할 때 다음과 같은 방법으로 선택 규칙을 전달할 수 있습니다. 이 기능은 모든 문자열 파라미터와 함께 작동하는 표준 AWS CLI 기능입니다.
-
인라인:
--selection-rules '{"rules":[...]}'(JSON 큰따옴표 이스케이프 방지를 위해 작은따옴표 사용) -
상대 경로:
--selection-rules file://example-rules.json -
절대 경로:
--selection-rules file:///tmp/example-rules.json
내부의 모든 필드 값은 비어 있지 않은 문자열이어야 object-locator 합니다. 빈 문자열(예: "schema-name": "")은 오류와 함께 거부됩니다.
참고
database-name 키는 Microsoft SQL Server 및 SAP ASE(Sybase ASE) 소스에만 유효합니다. 다른 소스 엔진database-name에 대한 로케이터의 전송은 지원되지 않는 키로 거부됩니다.
쓰기 규칙
객체 로케이터 계층 구조
는 엔진별 키의 계층 구조를 통해 하나 이상의 데이터베이스 객체를 object-locator 식별합니다. 각 키는 범위를 좁히고 하위 수준 키를 생략하여 범위를 넓힙니다. 계층 구조는 소스 엔진에 따라 다릅니다.
-
Microsoft SQL Server 및 SAP ASE(Sybase ASE) -
server-name→database-name→schema-name→객체 수준 키(예:table-name). 이러한 엔진에는 서버와 스키마 사이에 추가database-name수준이 있습니다. -
다른 모든 엔진(Oracle, z/OS용 IBM Db2 및 모든 대상 엔진: PostgreSQL, Aurora PostgreSQL, MySQL, Aurora MySQL 및 IBM Db2 LUW) —
server-name→schema-name→객체 수준 키. 이러한 엔진에는database-name레벨이 없습니다. 스키마는 바로 아래에 있는 최상위 컨테이너입니다server-name.
다음 예제에서는 특정 Microsoft SQL Server 테이블 하나를 선택합니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
범위를 전체 스키마로 확장하려면 리프 레벨 키를 생략합니다. 그런 다음 규칙은 소스 엔진이 노출하는 테이블, 뷰, 프로시저, 함수, 시퀀스 및 기타 객체를 포함하여 해당 스키마의 모든 주소 지정 가능 객체 유형에 적용됩니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name" } } ] }
사용할 수 있는 로케이터 키는 소스 또는 대상 엔진에 따라 다릅니다. 엔진당 전체 키 참조는 섹션을 참조하세요데이터베이스별 객체 로케이터 키.
소스 규칙 및 대상 규칙
명시적 rule-type 필드는 규칙을 "소스" 또는 "대상"으로 표시하지 않습니다. 의 server-name 값을 통해 완전히 구분을 제어합니다object-locator.가 소스 데이터 공급자와 server-name 일치하면 규칙은 소스 메타데이터 트리를 대상으로 하고, 대상 데이터 공급자와 일치하면 규칙은 대상 메타데이터 트리를 대상으로 합니다.
의 server-name 경우 다음 중 하나를 사용할 수 있습니다.
-
데이터 공급자에 구성된 서버 이름 값입니다. 이는 일반적으로 호스트 이름 또는 IP 주소이지만 동일한 시스템으로 확인되는 다른 DNS 이름 또는 IP가 아니라 데이터 공급자에 저장된 값과 정확히 일치해야 합니다.
-
데이터 공급자의 리소스 ID - ARN의 마지막 세그먼트입니다(예: ARN이
arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS인 경우 리소스 ID는EXAMPLEABCDEFGHIJKLMNOPQRS).
규칙 작업
rule-action 필드를 사용하여 DMS Schema Conversion이 객체 로케이터 내부의 값을 해석하는 방법을 지정합니다. 와일드카드는 include 및 에서만 사용할 수 있습니다exclude.
값 |
동작 |
이를 사용해야 하는 경우 |
|---|---|---|
|
이름이 패턴과 일치하는 모든 객체를 선택합니다. 와일드카드로 |
를 사용하여 객체 그룹을 공유 이름 지정 패턴과 일치시킵니다. |
|
이전 |
를 사용하여 더 광범위한에서 예외를 제거합니다 |
|
명명된 객체를 정확히 선택합니다. |
작업하려는 모든 객체의 정확한 이름을 알고 있는 경우를 사용합니다. |
참고
일부 작업은 "explicit" 규칙만 허용하며 "include" 또는를 지원하지 않습니다"exclude". 특정 작업에 대한 AWS API 참조를 확인하여 지원하는 규칙 작업을 확인합니다.
객체 로케이터 참조
데이터베이스별 객체 로케이터 키
다음 탭은 지원되는 각 데이터베이스의 로케이터 키를 보여줍니다.
엔진별 범주 이름
선택 규칙의 category-name 값은 개별 객체가 아닌 전체 객체 클래스를 대상으로 합니다. 범주 이름은 엔진별로 다르며 대/소문자를 구분합니다. 작업 허용 여부는 작업에 category-name 따라 다릅니다. 사용 중인 작업에 대한 AWS API 참조를 확인하세요. 아래 탭은 소스 엔진과 대상 엔진을 모두 다룹니다.
중요
한 엔진에서 다른 엔진에 대해 구성된 프로젝트로 범주 이름을 보내면 오류가 반환됩니다.
선택 규칙 예제
다음 예제에서는 일반적인 마이그레이션 시나리오에 대한 선택 규칙을 작성하는 방법을 보여줍니다. 각 예제에서는 StartMetadataModelConversion 또는와 같은 DMS Schema Conversion API 작업에 전달할 --selection-rules 파라미터 값을 사용합니다StartMetadataModelAssessment.
Microsoft SQL Server 소스에서 변환할 특정 테이블을 하나 선택합니다. Microsoft SQL Server에는 database-name 외에도가 필요합니다schema-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
객체 수준 키를 생략하여 Oracle 스키마의 모든 객체를 선택합니다. Oracle에는 database-name 레벨이 없습니다. 스키마는 아래의 최상위 컨테이너입니다server-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Oracle 뷰는 table-name와 함께를 사용하여 처리됩니다"table-type": "view". 별도의 view-name 키는 없습니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "view_name", "table-type": "view" } } ] }
IBM Db2 for z/OS 소스에서 특정 저장 프로시저 하나를 선택합니다. IBM Db2 for z/OS는를 사용procedure-name하며 database-name 수준 없이에서 schema-name server-name로 직접 이동합니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "procedure-name": "procedure_name" } } ] }
를의 와일드카드%로 사용하여 SAP ASE(Sybase ASE) 스키마의 모든 절차를 선택합니다procedure-name. SAP ASE(Sybase ASE)에는 database-name server-name ~ 사이의가 필요합니다schema-name.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "%" } } ] }
접두사별로 여러 테이블을 일치시키는 % 데 사용합니다. 이 예제에서는 이름이 로 시작하는 모든 테이블을 선택합니다Fact_.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "table-name": "Fact_%" } } ] }
Oracle 스키마에 모든 객체를 포함시킨 다음 이름이 로 시작하는 테이블을 제외합니다TMP_. 규칙은 rule-id 순서대로 평가되며 일치하면 exclude가 우선합니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "TMP_%" } } ] }
단일 문서에서 여러 explicit 규칙을 사용하여 이름별로 특정 프로시저 세트를 선택합니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_A" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_B" } }, { "rule-type": "selection", "rule-id": "3", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_C" } } ] }
include 규칙을 사용하여 이름이 로 시작하는 모든 절차와 일치시킨 PROC_다음 해당 집합PROC_TEST에서 제거할 exclude 규칙을 일치시킵니다. exclude 규칙은 include 규칙을 따라야 합니다. 독립 실행형 exclude는 효과가 없습니다.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_%" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_TEST" } } ] }