View a markdown version of this page

DMS Schema Conversion의 메타데이터 모델 - AWS 데이터베이스 마이그레이션 서비스

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

DMS Schema Conversion의 메타데이터 모델

DMS Schema Conversion으로 작업하는 경우 서비스는 데이터베이스 스키마를 계층적 트리로 나타냅니다. 이 트리를 메타데이터 트리라고 하며 소스 스키마와 대상 스키마 모두에 적용됩니다. 루트 요소(“서버”)를 포함하여 트리의 각 요소는 메타데이터 모델입니다.

메타데이터 트리에는 두 가지 종류의 요소가 포함되어 있습니다.

  • 객체 - 테이블, 함수, 뷰, 시퀀스 및 인덱스와 같은 실제 데이터베이스 객체를 나타냅니다. DescribeMetadataModel 요청을 사용하여 객체의 SQL 정의를 검색할 수 있습니다.

  • 범주 - "Schemas", "Tables", "Functions" 및 "Indexes"와 같은 가상 그룹화 컨테이너입니다. 범주는 탐색을 위해 트리에 객체를 구성하지만 SQL 정의 자체는 없습니다.

메타데이터 트리는 사용자가 요청할 때만 데이터를 로드합니다. 이 접근 방식을 온디맨드 로드(느린 로드라고도 함)라고 합니다. 즉, DMS Schema Conversion은 필요한 경우에만 데이터베이스에서 데이터를 검색합니다. 가져오기 작업을 사용하여 특정 메타데이터 모델을 새로 고치거나 한 번에 전체 하위 트리를 가져와 메타데이터를 로드합니다. 평가 및 변환과 같은 작업도 메타데이터 트리를 자동으로 로드합니다.

메타데이터 모델의 작동 방식

DMS Schema Conversion의 메타데이터 모델은 작업 수명 주기를 따릅니다. 메타데이터 트리를 수정하는 작업(예: 가져오기 및 변환)은 비동기식입니다. 이러한 작업에 대한 요청을 시작하면 백그라운드에서 실행됩니다. 해당 설명 API를 호출하여 요청 상태를 확인합니다. 트리를 읽는 작업(예: 하위 항목 또는 정의 설명)은 동기식입니다.

참고

DMS Schema Conversion에서는 작업요청이라는 용어가 상호 교환적으로 사용됩니다.

일반적인 워크플로에는 다음 단계가 포함됩니다.

  1. 가져오기 - 소스 또는 대상 데이터베이스의 메타데이터를 메타데이터 트리에 로드합니다. 초기 메타데이터 모델을 로드하거나 데이터베이스에서 기존 모델을 다시 로드할 수 있습니다. 자세한 내용은 트리 탐색 단원을 참조하십시오. API 참조는 StartMetadataModelImport를 참조하세요.

  2. 평가 - 선택한 소스 메타데이터 모델을 분석하여 변환 복잡성과 잠재적 문제를 식별합니다. 자세한 내용은 DMS Schema Conversion을 사용하여 데이터베이스 마이그레이션 평가 보고서 생성 단원을 참조하십시오.

  3. 변환 - 선택한 소스 메타데이터 모델을 대상 호환 형식으로 변환합니다. 변환된 정의는 대상 메타데이터 트리의 일부로 저장됩니다. 자세한 내용은 DMS Schema Conversion에서 데이터베이스 스키마 변환: step-by-step 가이드 단원을 참조하십시오.

  4. 내보내기 - 메타데이터 정의를 저장합니다. 소스 메타데이터와 대상 메타데이터를 모두 SQL 스크립트로 Amazon S3 버킷으로 내보낼 수 있습니다. 가상이 아닌 대상의 경우 변환된 객체를 대상 데이터베이스에 직접 적용할 수도 있습니다. 가상 대상에 대한 자세한 내용은 섹션을 참조하세요가상 데이터 공급자. 변환된 객체 적용에 대한 자세한 내용은 섹션을 참조하세요변환된 코드 적용.

소스 메타데이터 모델을 평가하거나 변환한 후 평가 보고서를 생성하여 결과를 검토할 수 있습니다. 자세한 내용은 DMS Schema Conversion을 사용하여 데이터베이스 마이그레이션 평가 보고서 생성 단원을 참조하십시오.

지원되는 마이그레이션 페어의 경우 StartMetadataModelCreation을 사용하여 SQL 정의에서 사용자 지정 문 메타데이터 모델을 생성할 수도 있습니다. 자세한 내용은 문 모델 생성 단원을 참조하십시오.

메타데이터 모델 트리 탐색

다음 API 요청을 사용하여 메타데이터 트리를 탐색할 수 있습니다.

  • DescribeMetadataModelChildren - 지정된 메타데이터 모델의 하위 요소를 반환합니다. 각 하위 항목에는 심층 분석을 위해 다음 호출에 전달할 수 있는 선택 규칙(특정 메타데이터 모델을 식별하는 필터)이 포함되어 있습니다.

  • DescribeMetadataModel - 특정 메타데이터 모델의 이름, 유형 및 SQL 정의를 반환합니다.

두 요청 모두 Origin 파라미터(SOURCE 또는 TARGET)가 필요하며 선택 규칙을 사용하여 메타데이터 모델을 식별합니다. 탐색 패턴은 소스 트리와 대상 트리 모두에서 동일합니다. 선택 규칙 형식에 대한 자세한 내용은 섹션을 참조하세요DMS Schema Conversion의 선택 규칙.

원하는 인터페이스를 선택하여 탐색 지침을 봅니다.

AWS Management Console

스키마 변환 프로젝트를 연 후 소스 메타데이터 트리와 대상 메타데이터 트리를 모두 찾아볼 수 있습니다. 프로젝트 열기에 대한 자세한 내용은 섹션을 참조하세요DMS Schema Conversion에서 데이터베이스 스키마 변환: step-by-step 가이드.

콘솔에는 왼쪽에 소스 트리, 오른쪽에 대상 트리라는 두 개의 트리 패널이 표시됩니다. 각 패널은 데이터베이스 엔진, 작업 메뉴 및 메타데이터 트리 자체를 보여주는 헤더로 구성됩니다.

작업 메뉴는 컨텍스트에 따라 다릅니다. 모든 메타데이터 모델에 사용 가능한 모든 작업이 있는 것은 아닙니다. 소스 트리와 대상 트리의 작업 목록은 다릅니다.

메타데이터 모델의 SQL 정의 및 속성을 보려면 트리에서 선택합니다. 중앙 패널에는 정의가 있는 소스 SQL 및 대상 SQL 탭과 메타데이터 속성이 있는 속성 탭이 표시됩니다. 테이블 및 뷰의 열 또는 루틴의 파라미터와 같은 메타데이터 모델 유형에 따라 추가 탭이 나타날 수 있습니다.

메타데이터 모델의 하위 요소를 확장하려면 옆에 있는 확장 아이콘(검은색 삼각형)을 선택합니다. 확장 아이콘 또는 메타데이터 모델 이름을 선택하여 하위 항목을 자동으로 로드합니다.

변환된 소스 메타데이터 모델을 선택하면 대상 트리 패널에서 해당 대상 메타데이터 모델이 자동으로 선택됩니다.

메타데이터 트리 찾아보기

다음 연습에서는 메타데이터 트리를 탐색하고 메타데이터 모델 정의를 보는 방법을 보여줍니다.

  1. 트리 패널에서 서버 옆의 확장 아이콘을 선택하여 데이터베이스 엔진에 따라 데이터베이스 또는 스키마와 같은 최상위 범주를 표시합니다.

  2. 범주를 계속 확장하여 탐색하려는 메타데이터 모델로 이동합니다. 예를 들어 데이터베이스를 확장한 다음 특정 데이터베이스를 확장한 다음 스키마를 확장하고 스키마 이름을 확장한 다음 테이블, 또는 프로시저와 같은 범주를 확장합니다. 일부 데이터베이스 엔진에는 데이터베이스 수준이 없습니다.이 경우 스키마를 직접 확장합니다.

  3. 메타데이터 모델을 선택하여 중앙 패널에서 해당 SQL 정의를 봅니다. 소스 SQL 탭에는 소스 정의가 표시되고, 메타데이터 모델이 변환된 경우 대상 SQL 탭에는 변환된 정의가 표시됩니다.

AWS CLI
메타데이터 트리 찾아보기

메타데이터 트리를 찾아보려면 반복 패턴을 따릅니다. 즉, 수준에서 메타데이터를 가져온 다음 해당 수준의 하위 항목을 설명합니다. 이 프로세스를 반복하여 트리를 자세히 살펴봅니다.

먼저 최상위 메타데이터 모델을 식별하는 선택 규칙을 사용하여 start-metadata-model-import를 호출합니다. 에 server-name 및 최상위category-name(데이터베이스 엔진에 Schemas따라 Databases 또는 )를 포함합니다object-locator. 선택 규칙 구조에 대한 자세한 내용은 섹션을 참조하세요DMS Schema Conversion의 선택 규칙.

aws dms start-metadata-model-import \ --migration-project-identifier "my-migration-project" \ --origin SOURCE \ --refresh \ --selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1", "rule-name":"1","object-locator":{"server-name":"my-server","category-name":"top-level-category"},"rule-action":"explicit"}]}'

가져오기 요청은 비동기식입니다. describe-metadata-model-imports를 사용하여 검색 전에 상태를 확인합니다. 에서 반환한 RequestIdentifier 값과 함께 request-id 필터를 사용하여 특정 가져오기를 start-metadata-model-import 찾습니다.

aws dms describe-metadata-model-imports \ --migration-project-identifier "my-migration-project" \ --filters Name=request-id,Values=request-identifier

가져오기가 완료되면 describe-metadata-model-children을 호출하여 해당 수준에서 하위 항목을 검색합니다.

aws dms describe-metadata-model-children \ --migration-project-identifier "my-migration-project" \ --origin SOURCE \ --selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1", "rule-name":"1","object-locator":{"server-name":"my-server"}, "rule-action":"explicit"}]}'

응답의 각 하위 항목에는 SelectionRules 필드가 포함됩니다. 다음 가져오기에 이러한 선택 규칙을 전달하고 심층 분석을 위한 호출을 설명합니다.

{ "MetadataModelChildren": [ { "MetadataModelName": "Schemas", "SelectionRules": "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"server-name\":\"src-database-server\",\"category-name\":\"Schemas\"},\"rule-action\":\"explicit\"}]}" } ] }

다음 수준으로 드릴하려면 이전 describe-metadata-model-children 호출에서 반환된 선택 규칙을 사용하여 해당 수준에서를 가져온 다음 하위 항목을 설명합니다.

aws dms start-metadata-model-import \ --migration-project-identifier "my-migration-project" \ --origin SOURCE \ --refresh \ --selection-rules 'selection-rules-from-previous-response'

하위 항목을 설명하기 전에를 사용하여 상태를 확인하여 가져오기가 완료되었는지 확인합니다describe-metadata-model-imports. 그런 describe-metadata-model-children다음를 호출합니다.

aws dms describe-metadata-model-children \ --migration-project-identifier "my-migration-project" \ --origin SOURCE \ --selection-rules 'selection-rules-from-previous-response'

응답은 각각 고유한 선택 규칙이 있는 해당 수준의 하위 항목을 반환합니다. 이러한 선택 규칙을 다음 가져오기에 전달하고 호출을 설명하여 트리에 대한 심층 분석을 계속합니다.

{ "MetadataModelChildren": [ { "MetadataModelName": "child-name", "SelectionRules": "selection-rules-JSON-string" } ] }

사용 - 전체 가져오기와 비교하여 새로 고침

--refresh를 사용하여 데이터베이스에서 특정 메타데이터 모델을 다시 로드합니다. 또한 직접 하위 항목의 이름도 로드됩니다. 를 사용하여 이러한 하위 항목을 나열할 수 describe-metadata-model-children있지만 더 자세히 설명하거나 찾아보려면 하위 수준에서 다른 가져오기를 실행해야 합니다.

전체 하위 트리(예: 스키마, 데이터베이스 또는 테이블 또는 프로시저와 같은 특정 범주의 모든 객체)를 로드하려면 --refresh 플래그를 생략하고 선택 규칙include에서를 rule-action로 변경합니다.

aws dms start-metadata-model-import \ --migration-project-identifier "my-migration-project" \ --origin SOURCE \ --selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1", "rule-name":"1","object-locator":{...}, "rule-action":"include"}]}'

전체 하위 트리를 로드하는 데는 큰 스키마에 몇 분 또는 몇 시간이 걸릴 수 있으며 데이터베이스에 로드를 배치합니다. 대화형 탐색을 위해 --refresh를 사용하고 필요에 따라 특정 브랜치로 드릴합니다.

메타데이터 모델의 정의 가져오기

메타데이터 모델의 SQL 정의를 검색하려면 describe-metadata-model을 사용합니다. 이전 describe-metadata-model-children 응답에서 특정 메타데이터 모델을 식별하는 선택 규칙을 전달합니다.

aws dms describe-metadata-model \ --migration-project-identifier "my-migration-project" \ --origin SOURCE \ --selection-rules 'selection-rules-for-target-object'

응답에는 메타데이터 모델 이름, 유형 및 SQL 정의가 포함됩니다.

{ "MetadataModelName": "employees", "MetadataModelType": "table", "Definition": "CREATE TABLE hr.employees(\n id integer NOT NULL,\n name varchar(100),\n department_id integer\n);" }
참고

스키마 및 범주와 같은 일부 메타데이터 모델의 경우 Definition 필드가 채워지지 않을 수 있습니다.

변환된 정의 보기

소스 메타데이터 모델을 변환한 후에는 변환된 정의를 대상 트리에서 사용할 수 있습니다. 세 가지 방법으로 검색할 수 있습니다.

소스 응답에서 대상 선택 규칙 사용

변환 후 소스 메타데이터 모델을 설명할 때 응답에는 대상 선택 규칙이 있는 TargetMetadataModels 필드가 포함됩니다.

{ "MetadataModelName": "employees", "MetadataModelType": "table", "TargetMetadataModels": [ { "MetadataModelName": "employees", "SelectionRules": "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"server-name\":\"tgt-database-server\",\"schema-name\":\"hr\",\"table-name\":\"employees\",\"table-type\":\"table\"},\"rule-action\":\"explicit\"}]}" } ], "Definition": "CREATE TABLE hr.employees(\n id integer NOT NULL,\n name varchar(100),\n department_id integer\n);" }

를 사용하여에서 TargetMetadataModelsdescribe-metadata-model로 선택 규칙을 전달합니다--origin TARGET.

aws dms describe-metadata-model \ --migration-project-identifier "my-migration-project" \ --origin TARGET \ --selection-rules 'selection-rules-from-TargetMetadataModels'

응답에는 대상 엔진 구문에 변환된 SQL 정의가 포함됩니다.

{ "MetadataModelName": "employees", "MetadataModelType": "table", "Definition": "CREATE TABLE hr.employees (\nid INT NOT NULL,\nname VARCHAR(100) DEFAULT NULL,\ndepartment_id INT DEFAULT NULL,\nPRIMARY KEY (id)\n);" }

get-target-selection-rules 사용

get-target-selection-rules를 사용하면 소스describe-metadata-model에서를 먼저 호출하지 않고도 소스 선택 규칙을 대상 규칙으로 직접 변환할 수 있습니다.

aws dms get-target-selection-rules \ --migration-project-identifier "my-migration-project" \ --selection-rules 'source-selection-rules'

대상 트리 직접 탐색

를 사용하여 소스 트리와 동일한 방식으로 대상 트리를 찾아볼 수도 있습니다--origin TARGET. 이는 소스에서 시작하지 않고 변환된 모든 객체를 탐색하려는 경우에 유용합니다.

문 메타데이터 모델 생성

참고

문 생성은 현재 SQL Server에서 Aurora PostgreSQL로 또는 SQL Server에서 Amazon RDS for PostgreSQL로의 지침만 지원합니다.

StartMetadataModelCreation을 사용하여 SQL 정의에서 문 메타데이터 모델을 생성할 수 있습니다. 이는 애플리케이션 쿼리 또는 임시 SQL 코드와 같이 소스 데이터베이스에 객체로 존재하지 않는 SQL 문을 변환하려는 경우에 유용합니다.

AWS Management Console

명령문 메타데이터 모델 생성은 관리 콘솔에서 사용할 수 AWS 없습니다. 대신 AWS CLI 또는 AWS SDK를 사용합니다.

AWS CLI

문 메타데이터 모델을 생성하려면 start-metadata-model-creation을 사용합니다. 선택 규칙은 소스 데이터베이스에 존재하는 스키마를 지정해야 합니다. 생성된 메타데이터 모델은 해당 스키마 내의 Statements 범주 아래에 나타납니다.

aws dms start-metadata-model-creation \ --migration-project-identifier "my-migration-project" \ --metadata-model-name "GetAllEmployees" \ --selection-rules '{"rules":[{"rule-type":"selection","rule-id":"1", "rule-name":"1","object-locator":{"server-name":"my-server", "database-name":"my_database","schema-name":"dbo"}, "rule-action":"explicit"}]}' \ --properties '{"StatementProperties":{"Definition":"SELECT * FROM dbo.Employees;"}}'

생성 후 범주 아래의 트리에서 메타데이터 모델을 찾아 Statements 설명할 수 있습니다.

{ "MetadataModelName": "GetAllEmployees", "MetadataModelType": "statement", "Definition": "SELECT * FROM dbo.Employees;" }

생성 후 평가, 변환 또는 내보내기와 같이 문 메타데이터 모델에서 지원되는 모든 작업을 실행할 수 있습니다.