View a markdown version of this page

Modèle de métadonnées dans la conversion du schéma DMS - AWS Database Migration Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Modèle de métadonnées dans la conversion du schéma DMS

Lorsque vous utilisez DMS Schema Conversion, le service représente les schémas de votre base de données sous la forme d'une arborescence hiérarchique. Cet arbre est appelé arbre de métadonnées et s'applique à la fois aux schémas source et cible. Chaque élément de l'arborescence, y compris l'élément racine (« Serveurs »), est un modèle de métadonnées.

L'arborescence des métadonnées contient deux types d'éléments :

  • Objets : représentent des objets de base de données réels tels que des tables, des fonctions, des vues, des séquences et des index. Vous pouvez récupérer la définition SQL d'un objet à l'aide de la DescribeMetadataModelrequête.

  • Catégories — Conteneurs de regroupement virtuels tels que « Schémas », « Tables », « Fonctions » et « Index ». Les catégories organisent les objets dans l'arborescence à des fins de navigation, mais elles ne contiennent pas de définitions SQL en tant que telles.

L'arborescence de métadonnées charge les données uniquement lorsque vous les demandez. Cette approche est appelée chargement à la demande (également appelé chargement différé), ce qui signifie que DMS Schema Conversion extrait les données de votre base de données uniquement lorsque cela est nécessaire. Vous utilisez l'opération d'importation pour charger les métadonnées, soit en actualisant un modèle de métadonnées spécifique, soit en important une sous-arborescence complète en une seule fois. Les opérations telles que l'évaluation et la conversion chargent également automatiquement l'arborescence des métadonnées.

Fonctionnement du modèle de métadonnées

Le modèle de métadonnées de DMS Schema Conversion suit un cycle de vie d'opérations. Les opérations qui modifient l'arborescence des métadonnées (telles que l'importation et la conversion) sont asynchrones. Vous lancez une demande pour ces opérations, qui s'exécute en arrière-plan. Appelez l'API de description correspondante pour vérifier l'état de la demande. Les opérations de lecture de l'arborescence (telles que la description des enfants ou des définitions) sont synchrones.

Note

Dans DMS Schema Conversion, les termes opération et demande sont utilisés de manière interchangeable.

Le flux de travail typique comprend les étapes suivantes :

  1. Importer : chargez les métadonnées de votre base de données source ou cible dans l'arborescence des métadonnées. Vous pouvez charger le modèle de métadonnées initial ou recharger un modèle existant depuis la base de données. Pour de plus amples informations, veuillez consulter Naviguez dans l'arborescence. Pour la référence de l'API, voir StartMetadataModelImport.

  2. Évaluer : analysez les modèles de métadonnées source sélectionnés pour identifier la complexité de la conversion et les problèmes potentiels. Pour de plus amples informations, veuillez consulter Création de rapports d’évaluation de migration de base de données avec la conversion de schéma DMS.

  3. Convertir — Convertit les modèles de métadonnées source sélectionnés dans un format compatible avec la cible. Les définitions converties sont stockées dans le cadre de l'arborescence de métadonnées cible. Pour de plus amples informations, veuillez consulter Conversion de schémas de base de données dans DMS Schema Conversion : guide étape par étape.

  4. Exporter — Enregistrez les définitions des métadonnées. Vous pouvez exporter les métadonnées source et cible sous forme de scripts SQL vers votre compartiment Amazon S3. Pour les cibles non virtuelles, vous pouvez également appliquer des objets convertis directement à votre base de données cible. Pour plus d'informations sur les cibles virtuelles, consultezFournisseur de données virtuelles. Pour plus d'informations sur l'application d'objets convertis, consultezApplication de votre code converti.

Après avoir évalué ou converti les modèles de métadonnées source, vous pouvez générer un rapport d'évaluation pour examiner les résultats. Pour de plus amples informations, veuillez consulter Création de rapports d’évaluation de migration de base de données avec la conversion de schéma DMS.

Pour les paires de migration prises en charge, vous pouvez également créer des modèles de métadonnées d'instructions personnalisés à partir de définitions SQL à l'aide de StartMetadataModelCreation. Pour de plus amples informations, veuillez consulter Créez des modèles de déclarations.

Naviguer dans l'arbre du modèle de métadonnées

Vous pouvez parcourir l'arborescence des métadonnées à l'aide des requêtes d'API suivantes :

  • DescribeMetadataModelChildren— Renvoie les enfants d'un modèle de métadonnées donné. Chaque enfant inclut des règles de sélection (filtres qui identifient des modèles de métadonnées spécifiques) que vous pouvez transmettre à l'appel suivant pour approfondir vos connaissances.

  • DescribeMetadataModel— Renvoie le nom, le type et la définition SQL d'un modèle de métadonnées spécifique.

Les deux demandes nécessitent le Origin paramètre (SOURCEouTARGET) et utilisent des règles de sélection pour identifier le modèle de métadonnées. Le modèle de navigation est le même pour les arborescences source et cible. Pour plus d'informations sur le format des règles de sélection, consultezRègles de sélection dans la conversion de schémas DMS.

Choisissez votre interface préférée pour consulter les instructions de navigation.

AWS Management Console

Après avoir ouvert votre projet de conversion de schéma, vous pouvez parcourir les arborescences de métadonnées source et cible. Pour plus d'informations sur l'ouverture d'un projet, consultezConversion de schémas de base de données dans DMS Schema Conversion : guide étape par étape.

La console affiche deux panneaux d'arborescence : l'arborescence source sur la gauche et l'arborescence cible sur la droite. Chaque panneau comprend un en-tête qui montre le moteur de base de données, un menu Actions et l'arborescence de métadonnées elle-même.

Le menu Actions dépend du contexte. Toutes les actions ne sont pas disponibles dans tous les modèles de métadonnées. Les arborescences source et cible ont des listes d'actions différentes.

Pour afficher la définition SQL et les propriétés d'un modèle de métadonnées, sélectionnez-le dans l'arborescence. Le panneau central affiche les onglets SQL source et SQL cible avec la définition, ainsi qu'un onglet Propriétés avec les attributs de métadonnées. Des onglets supplémentaires peuvent apparaître en fonction du type de modèle de métadonnées, par exemple, des colonnes pour les tables et les vues, ou des paramètres pour les routines.

Pour développer les enfants d'un modèle de métadonnées, cliquez sur l'icône d'extension (triangle noir) située à côté de celui-ci. Choisissez l'icône d'extension ou le nom du modèle de métadonnées pour charger automatiquement ses enfants.

Lorsque vous choisissez un modèle de métadonnées source qui a été converti, le modèle de métadonnées cible correspondant est automatiquement sélectionné dans le panneau de l'arborescence cible.

Parcourez l'arborescence des métadonnées

La procédure pas à pas suivante montre comment parcourir l'arborescence des métadonnées et afficher la définition d'un modèle de métadonnées.

  1. Dans l'arborescence, cliquez sur l'icône de développement à côté de votre serveur pour afficher les catégories de niveau supérieur, telles que les bases de données ou les schémas, en fonction du moteur de base de données.

  2. Continuez à développer les catégories pour accéder au modèle de métadonnées que vous souhaitez explorer. Par exemple, développez Databases, puis une base de données spécifique, puis Schemas, puis un nom de schéma, puis une catégorie telle que Tables, Views ou Procedures. Certains moteurs de base de données n'ont pas le niveau Bases de données. Dans ce cas, développez directement les schémas.

  3. Choisissez un modèle de métadonnées pour afficher sa définition SQL dans le panneau central. L'onglet Source SQL affiche la définition de la source, et l'onglet Target SQL affiche la définition convertie si le modèle de métadonnées a été converti.

AWS CLI
Parcourez l'arborescence des métadonnées

Pour parcourir l'arborescence des métadonnées, vous devez suivre un schéma récurrent : importez des métadonnées à un niveau, puis décrivez les enfants de ce niveau. Répétez ce processus pour percer plus profondément dans l'arbre.

Commencez par appeler start-metadata-model-import avec une règle de sélection qui identifie le modèle de métadonnées de niveau supérieur. Incluez le server-name et un niveau supérieur category-name (l'un Databases ou l'autre ouSchemas, selon le moteur de base de données) dans leobject-locator. Pour plus d'informations sur la structure des règles de sélection, consultezRègles de sélection dans la conversion de schémas 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"}]}'

Les demandes d'importation sont asynchrones. Utilisez describe-metadata-model-imports pour vérifier le statut avant de naviguer. Utilisez le request-id filtre avec la RequestIdentifier valeur renvoyée par start-metadata-model-import pour rechercher une importation spécifique :

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

Une fois l'importation terminée, appelez describe-metadata-model-children pour récupérer les enfants à ce niveau :

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

Chaque enfant de la réponse inclut un SelectionRules champ. Transférez ces règles de sélection à l'importation suivante et décrivez les appels à effectuer pour approfondir la question :

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

Pour passer au niveau suivant, importez à ce niveau en utilisant les règles de sélection renvoyées lors de l'describe-metadata-model-childrenappel précédent, puis décrivez ses enfants :

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

Avant de décrire les enfants, assurez-vous que l'importation est terminée en vérifiant son statut auprès dedescribe-metadata-model-imports. Appelez ensuite 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 réponse renvoie les enfants à ce niveau, chacun ayant ses propres règles de sélection. Transmettez ces règles de sélection à l'importation suivante et décrivez les appels à effectuer pour continuer à approfondir l'arbre.

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

Utilisation de --refresh par rapport à une importation complète

--refreshÀ utiliser pour recharger un modèle de métadonnées spécifique depuis la base de données. Cela charge également les noms de ses enfants directs. Vous pouvez répertorier ces enfants en utilisantdescribe-metadata-model-children, mais pour les décrire ou les parcourir plus en détail, vous devez exécuter une autre importation au niveau de l'enfant.

Pour charger un sous-arbre complet (par exemple, tous les objets d'un schéma, d'une base de données ou d'une catégorie spécifique telle que les tables ou les procédures), omettez l'--refreshindicateur et remplacez-le include dans rule-action les règles de sélection :

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

Le chargement d'une sous-arborescence complète peut prendre des minutes, voire des heures pour les schémas volumineux, et entraîne une charge sur votre base de données. Pour une exploration interactive, utilisez --refresh et explorez des branches spécifiques selon vos besoins.

Obtenez la définition d'un modèle de métadonnées

Pour récupérer la définition SQL d'un modèle de métadonnées, utilisez describe-metadata-model. Appliquez les règles de sélection qui identifient le modèle de métadonnées spécifique à partir d'une describe-metadata-model-children réponse précédente :

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

La réponse inclut le nom, le type et la définition SQL du modèle de métadonnées :

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

Le Definition champ peut ne pas être renseigné pour certains modèles de métadonnées, tels que les schémas et les catégories.

Afficher les définitions converties

Après avoir converti les modèles de métadonnées source, les définitions converties sont disponibles dans l'arborescence cible. Il existe trois manières de les récupérer.

Utilisation des règles de sélection des cibles à partir de la réponse source

Lorsque vous décrivez un modèle de métadonnées source après la conversion, la réponse inclut un TargetMetadataModels champ contenant les règles de sélection des cibles :

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

Passez les règles de sélection de TargetMetadataModels à describe-metadata-model avec --origin TARGET :

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

La réponse contient la définition SQL convertie dans la syntaxe du moteur cible :

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

Utilisation de get-target-selection-rules

Vous pouvez utiliser get-target-selection-rules pour convertir directement les règles de sélection de source en leurs homologues cibles, sans avoir à appeler au préalable la source : describe-metadata-model

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

Naviguer directement dans l'arborescence cible

Vous pouvez également parcourir l'arborescence cible de la même manière que l'arborescence source, en utilisant--origin TARGET. Cela est utile lorsque vous souhaitez explorer tous les objets convertis sans partir de la source.

Création de modèles de métadonnées de relevés

Note

La création d'instructions ne prend actuellement en charge que les directions suivantes : de SQL Server à Aurora PostgreSQL, ou de SQL Server à Amazon RDS for PostgreSQL.

Vous pouvez créer des modèles de métadonnées d'instructions à partir de définitions SQL à l'aide de StartMetadataModelCreation. Cela est utile lorsque vous souhaitez convertir des instructions SQL qui n'existent pas sous forme d'objets dans votre base de données source, par exemple des requêtes d'application ou du code SQL ad hoc.

AWS Management Console

La création de modèles de métadonnées de relevés n'est pas disponible dans la console AWS de gestion. Utilisez plutôt le AWS CLI ou un AWS SDK.

AWS CLI

Pour créer un modèle de métadonnées de déclaration, utilisez start-metadata-model-creation. Les règles de sélection doivent spécifier un schéma existant dans votre base de données source. Le modèle de métadonnées créé apparaît sous la Statements catégorie de ce schéma.

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

Après sa création, vous pouvez trouver le modèle de métadonnées dans l'arborescence sous la Statements catégorie et le décrire :

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

Après la création, vous pouvez exécuter n'importe quelle opération prise en charge sur le modèle de métadonnées de relevé, telle que l'évaluation, la conversion ou l'exportation.