View a markdown version of this page

DMS Schema Conversion의 선택 규칙 - AWS 데이터베이스 마이그레이션 서비스

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

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-namedatabase-nameschema-name객체 수준 키(예: table-name). 이러한 엔진에는 서버와 스키마 사이에 추가 database-name 수준이 있습니다.

  • 다른 모든 엔진(Oracle, z/OS용 IBM Db2 및 모든 대상 엔진: PostgreSQL, Aurora PostgreSQL, MySQL, Aurora MySQL 및 IBM Db2 LUW) — server-nameschema-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.

동작

이를 사용해야 하는 경우

"include"

이름이 패턴과 일치하는 모든 객체를 선택합니다. 와일드카드로 % (0개 이상의 문자 시퀀스) 및 _ (단일 문자)를 지원합니다. 리터럴 밑줄[_]을 일치시키고 리터럴 백분율 문자를 일치시키는 [%] 데 사용합니다.

를 사용하여 객체 그룹을 공유 이름 지정 패턴과 일치시킵니다.

"exclude"

이전 include 규칙에 의해 이미 선택된 세트에서 객체를 제거합니다. 앞의가 없는 exclude 규칙include은 효과가 없습니다.

를 사용하여 더 광범위한에서 예외를 제거합니다include.

"explicit"

명명된 객체를 정확히 선택합니다. schema-name, 및 table-name 또는 database-name와 같은 리프 키를 포함한 모든 로케이터 값은 리터럴 문자열로 scalar-function-name일치됩니다. %, _, [, 등의 와일드카드 문자]는 아래에 특별한 의미가 없습니다explicit.

작업하려는 모든 객체의 정확한 이름을 알고 있는 경우를 사용합니다.

참고

일부 작업은 "explicit" 규칙만 허용하며 "include" 또는를 지원하지 않습니다"exclude". 특정 작업에 대한 AWS API 참조를 확인하여 지원하는 규칙 작업을 확인합니다.

객체 로케이터 참조

데이터베이스별 객체 로케이터 키

다음 탭은 지원되는 각 데이터베이스의 로케이터 키를 보여줍니다.

SQL Server

Key(키)

를 선택합니다.

server-name

서버입니다.

database-name

서버의 데이터베이스입니다.

schema-name

데이터베이스 내의 스키마입니다.

table-name

기본적으로 테이블 또는와 함께 사용할 때의 뷰입니다"table-type": "view".

table-type

"table" (기본값) 또는 "view".

procedure-name

저장 프로시저입니다.

scalar-function-name

스칼라 값 함수입니다.

table-valued-function-name

테이블 값 함수입니다.

inline-function-name

인라인 함수입니다.

aggregate-function-name

집계 함수입니다.

synonym-name

동의어입니다.

sequence-name

시퀀스입니다.

type-name

유형입니다.

table-type-name

테이블 유형입니다.

user-defined-type-name

사용자 정의 유형입니다.

xml-schema-collection-name

XML 스키마 컬렉션입니다.

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

Oracle

Key(키)

를 선택합니다.

server-name

서버입니다.

schema-name

스키마(Oracle 사용자).

table-name

기본적으로 테이블 또는와 함께 사용할 때의 뷰입니다"table-type": "view".

table-type

"table" (기본값) 또는 "view".

procedure-name

저장 프로시저입니다.

function-name

함수.

package-name

패키지.

sequence-name

시퀀스입니다.

synonym-name

동의어입니다.

type-name

사용자 정의 유형입니다.

materialized-view-name

구체화된 뷰

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

SAP ASE (Sybase ASE)

Key(키)

를 선택합니다.

server-name

서버입니다.

database-name

서버의 데이터베이스입니다.

schema-name

데이터베이스 내의 스키마입니다.

table-name

기본적으로 테이블 또는와 함께 사용할 때의 뷰입니다"table-type": "view".

table-type

"table" (기본값) 또는 "view".

materialized-view-name

구체화된 뷰

procedure-name

저장 프로시저입니다.

scalar-function-name

스칼라 값 함수입니다.

table-valued-function-name

테이블 값 함수입니다.

user-defined-type-name

사용자 정의 유형입니다.

default-name

사용자 정의 기본값입니다. Describe*를 통해서만 연결할 수 있습니다.

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

PostgreSQL

Key(키)

를 선택합니다.

server-name

서버입니다.

schema-name

스키마입니다.

table-name

테이블 또는 뷰.를 사용하여 구분table-type합니다.

function-name

함수.

procedure-name

저장 프로시저입니다.

sequence-name

시퀀스입니다.

materialized-view-name

구체화된 뷰

type-name

사용자 정의 유형입니다.

domain-name

도메인.

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

MySQL

Key(키)

를 선택합니다.

server-name

서버입니다.

schema-name

스키마입니다.

table-name

테이블 또는 뷰.를 사용하여 구분table-type합니다.

procedure-name

저장 프로시저입니다.

function-name

함수.

event-name

이벤트.

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

IBM Db2 for z/OS

Key(키)

를 선택합니다.

server-name

서버입니다.

schema-name

스키마입니다.

table-name

테이블, 뷰 또는 글로벌 임시 테이블.를 사용하여 구분table-type합니다.

table-type

"table" (기본값) 또는 "view".

procedure-name

저장 프로시저 또는 외부 프로시저입니다.

function-name

함수(인라인, 스칼라, 소스, 테이블 또는 외부 함수).

sequence-name

시퀀스입니다.

alias-name

별칭. PostgreSQL 대상 모델이 없으며와 StartMetadataModelExportAsScript 함께 사용합니다Origin: SOURCE.

mqtable-name

구체화된 쿼리 테이블(MQT). PostgreSQL 대상 모델이 없습니다.

type-name

사용자 정의 유형(구분 유형 또는 구조화된 유형). PostgreSQL 대상 모델이 없습니다.

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

IBM Db2 LUW

Key(키)

를 선택합니다.

server-name

서버입니다.

schema-name

스키마입니다.

table-name

테이블 또는 뷰.를 사용하여 구분table-type합니다.

procedure-name

저장 프로시저입니다.

function-name

함수(스칼라, 소스 또는 테이블 함수).

sequence-name

시퀀스입니다.

module-name

모듈.

category-name

객체 클래스입니다. 를 사용하여 객체의 전체 범주를 대상으로 지정합니다. 단원을 참조하십시오엔진별 범주 이름.

엔진별 범주 이름

선택 규칙의 category-name 값은 개별 객체가 아닌 전체 객체 클래스를 대상으로 합니다. 범주 이름은 엔진별로 다르며 대/소문자를 구분합니다. 작업 허용 여부는 작업에 category-name 따라 다릅니다. 사용 중인 작업에 대한 AWS API 참조를 확인하세요. 아래 탭은 소스 엔진과 대상 엔진을 모두 다룹니다.

중요

한 엔진에서 다른 엔진에 대해 구성된 프로젝트로 범주 이름을 보내면 오류가 반환됩니다.

SQL Server

다음 범주 이름은 Microsoft SQL Server 소스에 적용됩니다.

category-name

그룹화 대상

Tables

기본 테이블.

Views

보기.

Procedures

저장 프로시저.

SQL scalar functions

Scalar T-SQL 함수.

SQL table-valued functions

다중 문 테이블 값 함수입니다.

SQL inline functions

인라인 테이블 값 함수입니다.

Aggregate functions

사용자 정의 집계 함수입니다.

Synonyms

T-SQL 동의어입니다.

Sequences

시퀀스 객체.

Types

XML 스키마 컬렉션 및 열 유형.

Table types

테이블 형식 파라미터 선언입니다.

User-Defined Types

별칭 및 CLR 사용자 정의 유형.

XML Schema Collections

XML 스키마 컬렉션.

Oracle

Oracle 소스에는 다음 범주 이름이 적용됩니다.

category-name

그룹화 대상

Tables

테이블.

External Tables

외부 테이블.

Views

보기.

Packages

PL/SQL 패키지 사양 및 본문.

Procedures

저장 프로시저.

Functions

스칼라 및 파이프라인을 포함한 모든 사용자 함수.

User Defined Types

객체 유형.

Collection Types

VARRAY 및 중첩 테이블 유형.

Sequences

시퀀스.

Materialized Views

구체화된 뷰.

Materialized View Logs

구체화된 보기 변경 로그.

Synonyms

퍼블릭 및 프라이빗 동의어입니다.

Clusters

인덱싱 및 해시 클러스터.

Database Links

데이터베이스 링크.

SAP ASE (Sybase ASE)

SAP ASE(Sybase ASE) 소스에는 다음 범주 이름이 적용됩니다.

category-name

그룹화 대상

Tables

기본 테이블.

Views

보기.

Procedures

저장 프로시저.

Scalar Functions

Scalar T-SQL 함수.

Table Valued Functions

테이블 값 함수.

Materialized Views

구체화된 뷰.

User Defined Types

별칭 사용자 정의 유형입니다.

Defaults

바인딩된 기본 객체입니다. 설명 전용이며 독립적으로 변환할 수 없습니다.

PostgreSQL

다음 범주 이름은 PostgreSQL 및 Aurora PostgreSQL 대상에 적용됩니다.

category-name

그룹화 대상

Tables

기본 테이블.

Views

보기.

Functions

함수.

Procedures

저장 프로시저.

Sequences

시퀀스.

Materialized Views

구체화된 뷰.

Types

사용자 정의 유형입니다.

Domains

도메인.

MySQL

다음 범주 이름은 MySQL 및 Aurora MySQL 대상에 적용됩니다.

category-name

그룹화 대상

Tables

기본 테이블.

Views

보기.

Functions

함수.

Procedures

저장 프로시저.

Events

이벤트.

IBM Db2 for z/OS

다음 범주 이름은 IBM Db2 for z/OS 소스에 적용됩니다.

category-name

로케이터 키

그룹화 대상

Tables

table-name + "table-type": "table"

기본 테이블.

Global Temporary Tables

table-name + "table-type": "table"

글로벌 임시 테이블. PostgreSQL 대상 모델이 없습니다.

Materialized Query Tables

mqtable-name

구체화된 쿼리 테이블(MQTs). PostgreSQL 대상 모델이 없습니다.

Views

table-name + "table-type": "view"

보기.

Aliases

alias-name

별칭. PostgreSQL 대상 모델이 없습니다.

Procedures

procedure-name

저장 프로시저.

Functions

function-name

모든 함수 하위 유형: 스칼라, 테이블, 인라인, 소스.

Sequences

sequence-name

시퀀스.

User Defined Types

type-name

고유한 유형 및 구조화된 유형입니다. PostgreSQL 대상 모델이 없습니다.

External Routines

function-name / procedure-name

외부 함수 및 외부 프로시저.

IBM Db2 LUW

IBM Db2 LUW 대상에는 다음 범주 이름이 적용됩니다.

category-name

그룹화 대상

Tables

기본 테이블.

Views

보기.

Functions

함수(스칼라, 소스, 테이블).

Procedures

저장 프로시저.

Sequences

시퀀스.

Modules

모듈.

선택 규칙 예제

다음 예제에서는 일반적인 마이그레이션 시나리오에 대한 선택 규칙을 작성하는 방법을 보여줍니다. 각 예제에서는 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" } } ] }