View a markdown version of this page

Modelo de metadatos en DMS Schema Conversion - AWS Database Migration Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Modelo de metadatos en DMS Schema Conversion

Cuando trabaja con DMS Schema Conversion, el servicio representa los esquemas de su base de datos como un árbol jerárquico. Este árbol se denomina árbol de metadatos y se aplica tanto a los esquemas de origen como a los de destino. Cada elemento del árbol, incluido el elemento raíz («Servidores»), es un modelo de metadatos.

El árbol de metadatos contiene dos tipos de elementos:

  • Objetos: representan objetos reales de la base de datos, como tablas, funciones, vistas, secuencias e índices. Puede recuperar la definición SQL de un objeto mediante la DescribeMetadataModelsolicitud.

  • Categorías: contenedores de agrupamiento virtuales como «esquemas», «tablas», «funciones» e «índices». Las categorías organizan los objetos en el árbol para su navegación, pero no tienen definiciones de SQL propiamente dichas.

El árbol de metadatos carga los datos solo cuando usted los solicita. Este enfoque se denomina carga bajo demanda (también conocida como carga diferida), lo que significa que DMS Schema Conversion recupera los datos de la base de datos solo cuando los necesita. La operación de importación se utiliza para cargar metadatos, ya sea actualizando un modelo de metadatos específico o importando un subárbol completo de una sola vez. Las operaciones como la evaluación y la conversión también cargan el árbol de metadatos automáticamente.

Cómo funciona el modelo de metadatos

El modelo de metadatos de DMS Schema Conversion sigue un ciclo de vida de operaciones. Las operaciones que modifican el árbol de metadatos (como la importación y la conversión) son asíncronas. Se inicia una solicitud para estas operaciones y se ejecuta en segundo plano. Llama a la API de descripción correspondiente para comprobar el estado de la solicitud. Las operaciones que leen el árbol (como la descripción de elementos secundarios o definiciones) son sincrónicas.

nota

En la conversión de esquemas de DMS, los términos operación y solicitud se utilizan indistintamente.

El flujo de trabajo típico incluye los siguientes pasos:

  1. Importación: carga los metadatos de la base de datos de origen o destino al árbol de metadatos. Puede cargar el modelo de metadatos inicial o volver a cargar un modelo existente de la base de datos. Para obtener más información, consulte Navegue por el árbol. Para obtener la referencia de la API, consulte StartMetadataModelImport.

  2. Evalúe: analice los modelos de metadatos de origen seleccionados para identificar la complejidad de la conversión y los posibles problemas. Para obtener más información, consulte Creación de informes de evaluación de migración de bases de datos con conversión de esquemas del DMS.

  3. Convertir: convierte los modelos de metadatos de origen seleccionados a un formato compatible con el destino. Las definiciones convertidas se almacenan como parte del árbol de metadatos de destino. Para obtener más información, consulte Conversión de esquemas de bases de datos en DMS Schema Conversion: guía paso a paso.

  4. Exportar: guarda las definiciones de metadatos. Puede exportar los metadatos de origen y destino como scripts SQL a su bucket de Amazon S3. En el caso de los destinos no virtuales, también puede aplicar los objetos convertidos directamente a la base de datos de destino. Para obtener más información sobre los objetivos virtuales, consulteProveedor de datos virtual. Para obtener más información sobre la aplicación de objetos convertidos, consulteAplicación del código convertido.

Tras evaluar o convertir los modelos de metadatos de origen, puede generar un informe de evaluación para revisar los resultados. Para obtener más información, consulte Creación de informes de evaluación de migración de bases de datos con conversión de esquemas del DMS.

Para los pares de migración compatibles, también puede crear modelos de metadatos de declaraciones personalizados a partir de definiciones de SQL utilizando StartMetadataModelCreation. Para obtener más información, consulte Cree modelos de declaraciones.

Navegue por el árbol del modelo de metadatos

Puedes navegar por el árbol de metadatos mediante las siguientes solicitudes de API:

  • DescribeMetadataModelChildren— Devuelve los elementos secundarios de un modelo de metadatos determinado. Cada elemento secundario incluye reglas de selección (filtros que identifican modelos de metadatos específicos) que puede pasar a la siguiente llamada para obtener más detalles.

  • DescribeMetadataModel— Devuelve el nombre, el tipo y la definición SQL de un modelo de metadatos específico.

Ambas solicitudes requieren el Origin parámetro (SOURCEoTARGET) y utilizan reglas de selección para identificar el modelo de metadatos. El patrón de navegación es el mismo para los árboles de origen y de destino. Para obtener más información sobre el formato de las reglas de selección, consulteReglas de selección en la conversión de esquemas de DMS.

Elija la interfaz que prefiera para ver las instrucciones de navegación.

AWS Management Console

Tras abrir el proyecto de conversión de esquemas, puede explorar los árboles de metadatos de origen y de destino. Para obtener más información sobre cómo abrir un proyecto, consulteConversión de esquemas de bases de datos en DMS Schema Conversion: guía paso a paso.

La consola muestra dos paneles en árbol: el árbol de origen a la izquierda y el árbol de destino a la derecha. Cada panel consta de un encabezado que muestra el motor de base de datos, un menú de acciones y el propio árbol de metadatos.

El menú Acciones depende del contexto. No todos los modelos de metadatos tienen todas las acciones disponibles. Los árboles de origen y destino tienen listas de acciones diferentes.

Para ver la definición SQL y las propiedades de un modelo de metadatos, elíjalo en el árbol. El panel central muestra las pestañas SQL de origen y SQL de destino con la definición, y una pestaña de propiedades con los atributos de los metadatos. Es posible que aparezcan pestañas adicionales según el tipo de modelo de metadatos, por ejemplo, Columnas para tablas y vistas o Parámetros para rutinas.

Para expandir los elementos secundarios de un modelo de metadatos, elija el icono de expansión (triángulo negro) situado junto a él. Elija el icono de expansión o el nombre del modelo de metadatos para cargar sus elementos secundarios automáticamente.

Al elegir un modelo de metadatos de origen que se ha convertido, el modelo de metadatos de destino correspondiente se selecciona automáticamente en el panel del árbol de destino.

Examine el árbol de metadatos

El siguiente tutorial muestra cómo navegar por el árbol de metadatos y ver la definición de un modelo de metadatos.

  1. En el panel de árbol, seleccione el icono de expansión situado junto al servidor para mostrar las categorías de nivel superior, como bases de datos o esquemas, según el motor de base de datos.

  2. Continúe expandiendo las categorías para navegar hasta el modelo de metadatos que desee explorar. Por ejemplo, expanda Bases de datos, luego una base de datos específica, luego Esquemas, luego un nombre de esquema y, por último, una categoría como Tablas, Vistas o Procedimientos. Algunos motores de bases de datos no tienen el nivel Bases de datos; en ese caso, expanda directamente los esquemas.

  3. Elija un modelo de metadatos para ver su definición de SQL en el panel central. La pestaña SQL de origen muestra la definición de origen y la pestaña SQL de destino muestra la definición convertida si el modelo de metadatos se ha convertido.

AWS CLI
Examine el árbol de metadatos

Para navegar por el árbol de metadatos, siga un patrón que se repite: importe los metadatos de un nivel y, a continuación, describa a los elementos secundarios de ese nivel. Repite este proceso para profundizar en el árbol.

Comience por llamar a start-metadata-model-import con una regla de selección que identifique el modelo de metadatos de nivel superior. Incluya el nivel superior server-name y uno category-name (uno Databases o varios, según el motor de base de datos) en Schemas el. object-locator Para obtener más información sobre la estructura de las reglas de selección, consulteReglas de selección en la conversión de esquemas de DMS.

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"}]}'

Las solicitudes de importación son asíncronas. Usa describe-metadata-model-imports para comprobar el estado antes de navegar. Usa el request-id filtro con el RequestIdentifier valor devuelto por para buscar una importación específica: start-metadata-model-import

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

Una vez completada la importación, llama a describe-metadata-model-children para recuperar los elementos secundarios de ese nivel:

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"}]}'

Cada hijo de la respuesta incluye un campo. SelectionRules Pase estas reglas de selección a la siguiente importación y describa las llamadas para profundizar más:

{ "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\"}]}" } ] }

Para profundizar en el siguiente nivel, importe ese nivel utilizando las reglas de selección devueltas en la describe-metadata-model-children convocatoria anterior y, a continuación, describa sus elementos secundarios:

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

Antes de describir a los hijos, asegúrese de que la importación se ha completado comprobando su estado condescribe-metadata-model-imports. Luego llama aldescribe-metadata-model-children:

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

La respuesta devuelve a los niños a ese nivel, cada uno con sus propias reglas de selección. Pase estas reglas de selección a la siguiente importación y describa las llamadas a seguir perforando más profundamente en el árbol.

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

Se utiliza --refresh en comparación con la importación completa

Se utiliza --refresh para volver a cargar un modelo de metadatos específico de la base de datos. Esto también carga los nombres de sus hijos directos. Puede enumerar estos niños utilizandodescribe-metadata-model-children, pero para describirlos o explorarlos con más detalle, debe ejecutar otra importación a nivel de hijo.

Para cargar un subárbol completo (por ejemplo, todos los objetos de un esquema, una base de datos o una categoría específica, como tablas o procedimientos), omita la --refresh marca y cambie rule-action a lo siguiente include en las reglas de selección:

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"}]}'

La carga de un subárbol completo puede tardar minutos u horas en el caso de los esquemas grandes y supone una carga para la base de datos. Para una exploración interactiva, utilice ramas específicas --refresh y profundice en ellas según sea necesario.

Obtenga la definición de un modelo de metadatos

Para recuperar la definición SQL de un modelo de metadatos, utilice describe-metadata-model. Apruebe las reglas de selección que identifican el modelo de metadatos específico de una respuesta anterior: describe-metadata-model-children

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

La respuesta incluye el nombre, el tipo y la definición de SQL del modelo de metadatos:

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

Es posible que el Definition campo no se complete en algunos modelos de metadatos, como los esquemas y las categorías.

Vea las definiciones convertidas

Tras convertir los modelos de metadatos de origen, las definiciones convertidas están disponibles en el árbol de destino. Hay tres formas de recuperarlos.

Uso de las reglas de selección de objetivos de la respuesta de origen

Al describir un modelo de metadatos de origen después de la conversión, la respuesta incluye un TargetMetadataModels campo con las reglas de selección del destino:

{ "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);" }

Transfiera las reglas de selección de TargetMetadataModels a describe-metadata-model con--origin TARGET:

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

La respuesta contiene la definición SQL convertida en la sintaxis del motor de destino:

{ "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);" }

Uso de get-target-selection-rules

Puede usar get-target-selection-rules para convertir las reglas de selección de fuentes en sus homólogas de destino directamente, sin tener que recurrir primero a la fuente: describe-metadata-model

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

Navegar directamente por el árbol de destino

También puede navegar por el árbol de destino de la misma manera que por el árbol de origen, utilizando--origin TARGET. Esto resulta útil si desea explorar todos los objetos convertidos sin partir de la fuente.

Cree modelos de metadatos llamativos

nota

Actualmente, la creación de declaraciones solo admite las siguientes instrucciones: de SQL Server a Aurora PostgreSQL o de SQL Server a Amazon RDS para PostgreSQL.

Puede crear modelos de metadatos de declaraciones a partir de definiciones de SQL utilizando. StartMetadataModelCreation Esto resulta útil cuando desea convertir sentencias SQL que no existen como objetos en la base de datos de origen, por ejemplo, consultas de aplicaciones o código SQL ad hoc.

AWS Management Console

La creación de modelos de metadatos de sentencias no está disponible en la consola AWS de administración. En su lugar, utilice el AWS CLI o un AWS SDK.

AWS CLI

Para crear un modelo de metadatos de declaraciones, utilice start-metadata-model-creation. Las reglas de selección deben especificar un esquema que exista en la base de datos de origen. El modelo de metadatos creado aparece en la Statements categoría de ese esquema.

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;"}}'

Tras crearlo, puede buscar el modelo de metadatos en el árbol de la Statements categoría y describirlo:

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

Tras la creación, puede ejecutar cualquier operación compatible en el modelo de metadatos de la declaración, como la evaluación, la conversión o la exportación.