View a markdown version of this page

Modello di metadati nella conversione dello schema DMS - AWS Database Migration Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modello di metadati nella conversione dello schema DMS

Quando utilizzi DMS Schema Conversion, il servizio rappresenta gli schemi del database come un albero gerarchico. Questo albero è chiamato albero dei metadati e si applica sia agli schemi di origine che a quelli di destinazione. Ogni elemento dell'albero, incluso l'elemento radice («Server»), è un modello di metadati.

L'albero dei metadati contiene due tipi di elementi:

  • Oggetti: rappresentano oggetti di database reali come tabelle, funzioni, viste, sequenze e indici. È possibile recuperare la definizione SQL di un oggetto utilizzando la richiesta. DescribeMetadataModel

  • Categorie: contenitori di raggruppamento virtuali come «schemi», «tabelle», «funzioni» e «indici». Le categorie organizzano gli oggetti nell'albero per la navigazione, ma di per sé non dispongono di definizioni SQL.

L'albero dei metadati carica i dati solo quando li richiedi. Questo approccio è chiamato caricamento su richiesta (noto anche come caricamento lento), il che significa che DMS Schema Conversion recupera i dati dal database solo se necessario. L'operazione di importazione viene utilizzata per caricare i metadati, aggiornando un modello di metadati specifico o importando un intero sottoalbero contemporaneamente. Anche operazioni come la valutazione e la conversione caricano automaticamente l'albero dei metadati.

Come funziona il modello di metadati

Il modello di metadati in DMS Schema Conversion segue un ciclo di vita di operazioni. Le operazioni che modificano l'albero dei metadati (come l'importazione e la conversione) sono asincrone. Si avvia una richiesta per queste operazioni e questa viene eseguita in background. Chiama l'API di descrizione corrispondente per verificare lo stato della richiesta. Le operazioni che leggono l'albero (come la descrizione dei figli o delle definizioni) sono sincrone.

Nota

In DMS Schema Conversion, i termini operazione e richiesta vengono utilizzati in modo intercambiabile.

Il flusso di lavoro tipico include i seguenti passaggi:

  1. Importazione: carica i metadati dal database di origine o di destinazione nell'albero dei metadati. È possibile caricare il modello di metadati iniziale o ricaricare un modello esistente dal database. Per ulteriori informazioni, consulta Naviga nell'albero. Per il riferimento all'API, vedi. StartMetadataModelImport

  2. Valutazione: analizza i modelli di metadati di origine selezionati per identificare la complessità della conversione e i potenziali problemi. Per ulteriori informazioni, consulta Creazione di report di valutazione della migrazione del database con la conversione dello schema DMS.

  3. Converti: converte i modelli di metadati di origine selezionati in un formato compatibile con la destinazione. Le definizioni convertite vengono memorizzate come parte dell'albero dei metadati di destinazione. Per ulteriori informazioni, consulta Conversione degli schemi di database in DMS Schema Conversion: guida dettagliata.

  4. Esporta: salva le definizioni dei metadati. Puoi esportare i metadati di origine e di destinazione come script SQL nel tuo bucket Amazon S3. Per le destinazioni non virtuali, puoi anche applicare oggetti convertiti direttamente al database di destinazione. Per ulteriori informazioni sugli obiettivi virtuali, vedereFornitore di dati virtuali. Per ulteriori informazioni sull'applicazione di oggetti convertiti, vedereApplicazione del codice convertito.

Dopo aver valutato o convertito i modelli di metadati di origine, puoi generare un rapporto di valutazione per esaminare i risultati. Per ulteriori informazioni, consulta Creazione di report di valutazione della migrazione del database con la conversione dello schema DMS.

Per le coppie di migrazione supportate, puoi anche creare modelli di metadati di istruzioni personalizzati a partire da definizioni SQL utilizzando. StartMetadataModelCreation Per ulteriori informazioni, consulta Crea modelli di dichiarazione.

Naviga nell'albero del modello di metadati

Puoi navigare nell'albero dei metadati utilizzando le seguenti richieste API:

  • DescribeMetadataModelChildren— Restituisce i figli di un determinato modello di metadati. Ogni figlio include regole di selezione (filtri che identificano modelli di metadati specifici) che puoi passare alla chiamata successiva per approfondire.

  • DescribeMetadataModel— Restituisce il nome, il tipo e la definizione SQL di uno specifico modello di metadati.

Entrambe le richieste richiedono il Origin parametro (SOURCEoTARGET) e utilizzano regole di selezione per identificare il modello di metadati. Il modello di navigazione è lo stesso sia per gli alberi di origine che per quelli di destinazione. Per ulteriori informazioni sul formato delle regole di selezione, vedereRegole di selezione in DMS Schema Conversion.

Scegliete l'interfaccia preferita per visualizzare le istruzioni di navigazione.

AWS Management Console

Dopo aver aperto il progetto di conversione dello schema, puoi sfogliare gli alberi dei metadati di origine e di destinazione. Per ulteriori informazioni sull'apertura di un progetto, consultaConversione degli schemi di database in DMS Schema Conversion: guida dettagliata.

La console mostra due pannelli ad albero: l'albero dei sorgenti a sinistra e l'albero di destinazione a destra. Ogni pannello è costituito da un'intestazione che mostra il motore del database, un menu Azioni e l'albero dei metadati stesso.

Il menu Azioni dipende dal contesto. Non tutti i modelli di metadati hanno tutte le azioni disponibili. Gli alberi di origine e di destinazione hanno elenchi di azioni diversi.

Per visualizzare la definizione e le proprietà SQL di un modello di metadati, selezionatelo nell'albero. Il pannello centrale mostra le schede SQL di origine e SQL di destinazione con la definizione e una scheda Proprietà con gli attributi dei metadati. Potrebbero essere visualizzate schede aggiuntive a seconda del tipo di modello di metadati, ad esempio Colonne per tabelle e viste o Parametri per le routine.

Per espandere i figli di un modello di metadati, scegliete l'icona di espansione (triangolo nero) accanto al modello. Scegliete l'icona di espansione o il nome del modello di metadati per caricarne automaticamente i figli.

Quando scegliete un modello di metadati di origine che è stato convertito, il modello di metadati di destinazione corrispondente viene selezionato automaticamente nel pannello ad albero di destinazione.

Sfogliate l'albero dei metadati

La procedura dettagliata seguente mostra come sfogliare l'albero dei metadati e visualizzare la definizione di un modello di metadati.

  1. Nel pannello ad albero, scegliete l'icona di espansione accanto al server per visualizzare le categorie di primo livello, ad esempio Database o Schemi, a seconda del motore di database.

  2. Continua ad espandere le categorie per accedere al modello di metadati che desideri esplorare. Ad esempio, espandi Database, quindi un database specifico, quindi Schemi, quindi un nome di schema, quindi una categoria come Tabelle, Viste o Procedure. Alcuni motori di database non dispongono del livello Database, in tal caso, espandi direttamente gli schemi.

  3. Scegliete un modello di metadati per visualizzarne la definizione SQL nel pannello centrale. La scheda SQL di origine mostra la definizione di origine e la scheda SQL di destinazione mostra la definizione convertita se il modello di metadati è stato convertito.

AWS CLI
Sfoglia l'albero dei metadati

Per sfogliare l'albero dei metadati, segui uno schema ripetuto: importa i metadati a un livello, quindi descrivi i bambini a quel livello. Ripeti questo processo per scavare più a fondo nell'albero.

Inizia chiamando start-metadata-model-import con una regola di selezione che identifica il modello di metadati di primo livello. Includi server-name e un livello superiore (uno o, a seconda del motore di category-name database) inDatabases. Schemas object-locator Per ulteriori informazioni sulla struttura delle regole di selezione, vedereRegole di selezione in 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"}]}'

Le richieste di importazione sono asincrone. Usa describe-metadata-model-imports per controllare lo stato prima della navigazione. Usa il request-id filtro con il RequestIdentifier valore restituito da per trovare un'importazione specifica: start-metadata-model-import

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

Una volta completata l'importazione, chiama describe-metadata-model-children per recuperare i bambini a quel livello:

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

Ogni bambino nella risposta SelectionRules include un campo. Passa queste regole di selezione all'importazione successiva e descrivi le chiamate per approfondire:

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

Per approfondire il livello successivo, importa a quel livello utilizzando le regole di selezione restituite dalla describe-metadata-model-children chiamata precedente, quindi descrivi i relativi elementi secondari:

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

Prima di descrivere i bambini, assicuratevi che l'importazione sia stata completata controllandone lo stato con. describe-metadata-model-imports Quindi chiamadescribe-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 risposta riporta i bambini a quel livello, ognuno con le proprie regole di selezione. Passa queste regole di selezione all'importazione successiva e descrivi le chiamate per continuare ad approfondire l'albero.

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

Utilizzo di --refresh rispetto all'importazione completa

Si usa --refresh per ricaricare un modello di metadati specifico dal database. Questo carica anche i nomi dei suoi figli diretti. Puoi elencare questi figli usandodescribe-metadata-model-children, ma per descriverli o sfogliarli ulteriormente, devi eseguire un'altra importazione a livello di figlio.

Per caricare un intero sottoalbero (ad esempio, tutti gli oggetti di uno schema, un database o una categoria specifica come Tabelle o Procedure), omettete il --refresh flag e modificate le rule-action regole include di selezione:

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

Il caricamento di un sottoalbero completo può richiedere minuti o ore per schemi di grandi dimensioni e comporta un carico di lavoro sul database. Per un'esplorazione interattiva, utilizza --refresh e approfondisci rami specifici secondo necessità.

Ottieni la definizione di un modello di metadati

Per recuperare la definizione SQL di un modello di metadati, usa describe-metadata-model. Passa le regole di selezione che identificano il modello di metadati specifico in base a una risposta precedente: 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 risposta include il nome, il tipo e la definizione SQL del modello di metadati:

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

Il Definition campo potrebbe non essere compilato per alcuni modelli di metadati, come schemi e categorie.

Visualizza le definizioni convertite

Dopo aver convertito i modelli di metadati di origine, le definizioni convertite sono disponibili nell'albero di destinazione. Esistono tre modi per recuperarle.

Utilizzo delle regole di selezione del bersaglio dalla risposta di origine

Quando descrivi un modello di metadati di origine dopo la conversione, la risposta include un TargetMetadataModels campo con le regole di selezione del target:

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

Passa le regole di selezione da 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 risposta contiene la definizione SQL convertita nella sintassi del motore di destinazione:

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

Utilizzo di get-target-selection-rules

Puoi usare get-target-selection-rules per convertire direttamente le regole di selezione del codice sorgente nelle loro controparti di destinazione, senza prima chiamare la fonte: describe-metadata-model

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

Navigazione diretta nell'albero di destinazione

È inoltre possibile sfogliare l'albero di destinazione allo stesso modo dell'albero di origine, utilizzando--origin TARGET. Ciò è utile quando si desidera esplorare tutti gli oggetti convertiti senza partire dall'origine.

Crea modelli di metadati per le dichiarazioni

Nota

La creazione di istruzioni attualmente supporta solo le seguenti direzioni: da SQL Server ad Aurora PostgreSQL o da SQL Server ad Amazon RDS for PostgreSQL.

È possibile creare modelli di metadati di istruzioni a partire da definizioni SQL utilizzando. StartMetadataModelCreation Ciò è utile quando si desidera convertire istruzioni SQL che non esistono come oggetti nel database di origine, ad esempio query applicative o codice SQL ad hoc.

AWS Management Console

La creazione di modelli di metadati delle istruzioni non è disponibile nella Console di gestione. AWS Utilizza invece il AWS CLI o un AWS SDK.

AWS CLI

Per creare un modello di metadati per le istruzioni, usa start-metadata-model-creation. Le regole di selezione devono specificare uno schema esistente nel database di origine. Il modello di metadati creato viene visualizzato Statements nella categoria all'interno di quello schema.

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

Dopo la creazione, puoi trovare il modello di metadati nell'albero sotto la Statements categoria e descriverlo:

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

Dopo la creazione, è possibile eseguire qualsiasi operazione supportata sul modello di metadati delle istruzioni, come la valutazione, la conversione o l'esportazione.