

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
<a name="sc-metadata-model"></a>

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 [DescribeMetadataModel](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeMetadataModel.html)solicitud.
+ **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
<a name="sc-metadata-model-how-it-works"></a>

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](#sc-metadata-model-navigating). Para obtener la referencia de la API, consulte [StartMetadataModelImport](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartMetadataModelImport.html).

1. **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](assessment-reports.md).

1. **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](schema-conversion-convert.md).

1. **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, consulte[Proveedor de datos virtual](virtual-data-provider.md). Para obtener más información sobre la aplicación de objetos convertidos, consulte[Aplicación del código convertido](schema-conversion-save-apply.md#schema-conversion-apply).

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](assessment-reports.md).

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](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartMetadataModelCreation.html). Para obtener más información, consulte [Cree modelos de declaraciones](#sc-metadata-model-creation).

## Navegue por el árbol del modelo de metadatos
<a name="sc-metadata-model-navigating"></a>

Puedes navegar por el árbol de metadatos mediante las siguientes solicitudes de API:
+ [DescribeMetadataModelChildren](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeMetadataModelChildren.html)— 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](https://docs.aws.amazon.com/dms/latest/APIReference/API_DescribeMetadataModel.html)— Devuelve el nombre, el tipo y la definición SQL de un modelo de metadatos específico.

Ambas solicitudes requieren el `Origin` parámetro (`SOURCE`o`TARGET`) 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, consulte[Reglas de selección en la conversión de esquemas de DMS](sc-selection-rules.md).

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, consulte[Conversión de esquemas de bases de datos en DMS Schema Conversion: guía paso a paso](schema-conversion-convert.md).

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.

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.

1. 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**.

1. 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 ]

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](https://docs.aws.amazon.com/cli/latest/reference/dms/start-metadata-model-import.html) 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, consulte[Reglas de selección en la conversión de esquemas de DMS](sc-selection-rules.md).

```
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](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-metadata-model-imports.html) 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](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-metadata-model-children.html) 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 con`describe-metadata-model-imports`. Luego llama al`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}}'
```

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 utilizando`describe-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.

Para recuperar la definición SQL de un modelo de metadatos, utilice [describe-metadata-model](https://docs.aws.amazon.com/cli/latest/reference/dms/describe-metadata-model.html). 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.

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](https://docs.aws.amazon.com/cli/latest/reference/dms/get-target-selection-rules.html) 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
<a name="sc-metadata-model-creation"></a>

**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](https://docs.aws.amazon.com/dms/latest/APIReference/API_StartMetadataModelCreation.html) 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](https://docs.aws.amazon.com/cli/latest/reference/dms/start-metadata-model-creation.html). 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.

------