Utilizzo di Amazon DocumentDB come destinazione per AWS Database Migration Service - AWS Servizio di migrazione del Database

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à.

Utilizzo di Amazon DocumentDB come destinazione per AWS Database Migration Service

Per informazioni sulle versioni di Amazon DocumentDB (compatibile con MongoDB) supportate da AWS DMS, consulta Obiettivi per AWS DMS. Puoi utilizzare AWS DMS per eseguire la migrazione dei dati a Amazon DocumentDB (compatibile con MongoDB) da uno qualsiasi dei motori dei dati di origine supportati da AWS DMS. Il motore può essere in un servizio gestito da AWS, ad esempio Amazon RDS, Aurora o Amazon S3. In alternativa, il motore può essere un database autogestito, ad esempio MongoDB in esecuzione su Amazon EC2 o on-premise.

Puoi utilizzare AWS DMS per replicare i dati di origine in database, raccolte o documenti di Amazon DocumentDB.

Nota

Se l'endpoint di origine è MongoDB o Amazon DocumentDB, esegui la migrazione in modalità documento.

MongoDB archivia i dati in formato JSON binario (BSON). AWS DMS supporta tutti i tipi di dati BSON previsti da Amazon DocumentDB. Per l'elenco di questi tipi di dati, consulta Supported MongoDB APIs, operations, and data types nella Guida per gli sviluppatori di Amazon DocumentDB.

Se l'endpoint di origine è un database relazionale, AWS DMS mappa gli oggetti di database ad Amazon DocumentDB come segue:

  • Un database relazionale, o schema di database, viene mappato a un database Amazon DocumentDB.

  • Le tabelle all'interno di un database relazionale vengono mappate a raccolte in Amazon DocumentDB.

  • I record in una tabella relazionale vengono mappati a documenti in Amazon DocumentDB. Ogni documento viene costruito da dati nel record di origine.

Se l'endpoint di origine è Amazon S3, allora gli oggetti Amazon DocumentDB risultanti corrispondono a regole di mappatura AWS DMS per Amazon S3. Considera, ad esempio, l'URI seguente:

s3://mybucket/hr/employee

In questo caso, AWS DMS mappa gli oggetti in mybucket ad Amazon DocumentDB come segue:

  • La parte URI di alto livello (hr) viene mappata a un database Amazon DocumentDB.

  • La parte URI successiva (employee) viene mappata a una raccolta Amazon DocumentDB.

  • Ogni oggetto in employee viene mappato a un documento in Amazon DocumentDB.

Per ulteriori informazioni sulle regole di mappatura per Amazon S3, consulta Utilizzo di Amazon S3 come sorgente per AWS DMS.

Impostazioni degli endpoint Amazon DocumentDB

In AWS DMS 3.5.0 e versioni successive, puoi migliorare le prestazioni dell'acquisizione dei dati di modifica (CDC) per gli endpoint Amazon DocumentDB ottimizzando le impostazioni delle attività per thread paralleli e operazioni in blocco. A tale scopo, è possibile specificare il numero di thread simultanei, di code per thread e di record da memorizzare in un buffer utilizzando le impostazioni delle attività ParallelApply*. Ad esempio, si supponga di voler eseguire un carico CDC e applicare 128 thread in parallelo. Si desidera inoltre accedere a 64 code per thread, con 50 record memorizzati per buffer.

Per promuovere le prestazioni del CDC, AWS DMS supporta le seguenti impostazioni di attività:

  • ParallelApplyThreads: specifica il numero di thread simultanei utilizzati da AWS DMS durante un carico CDC per eseguire il push dei record di dati a un endpoint di destinazione Amazon DocumentDB. Il valore predefinito è zero (0) e il valore massimo è 32.

  • ParallelApplyBufferSize: specifica il numero massimo di record da archiviare in ogni coda di buffer per eseguire il push dei thread simultanei a un endpoint di destinazione Amazon DocumentDB durante un carico CDC. Il valore predefinito è 100 e il valore massimo è 1.000. Utilizzare questa opzione quando ParallelApplyThreads specifica più di un thread.

  • ParallelApplyQueuesPerThread: specifica il numero di code a cui ogni thread accede per eliminare i record di dati dalle code e generare un carico batch per un endpoint Amazon DocumentDB durante CDC. Il valore di default è 1. Il numero massimo è 512.

Per ulteriori dettagli sull'utilizzo di Amazon DocumentDB come destinazione per AWS DMS, consulta le seguenti sezioni:

Nota

Per una guida dettagliata del processo di migrazione, consulta Migrazione da MongoDB ad Amazon DocumentDB nella Guida dettagliata per la migrazione di AWS Database Migration Service.

Mappatura dei dati da un'origine a una destinazione Amazon DocumentDB

AWS DMS legge i record da un endpoint di origine e costruisce documenti JSON basati sui dati letti. Per ogni documento JSON, AWS DMS deve determinare un campo _id che agisca come un identificatore unico. Quindi scrive il documento JSON in una raccolta Amazon DocumentDB, utilizzando il campo _id come chiave primaria.

Dati di origine che sono una singola colonna

Se i dati di origine sono costituiti da una singola colonna, i dati devono essere di un tipo stringa. A seconda del motore di origine, il tipo di dati effettivo potrebbe essere VARCHAR, NVARCHAR, TEXT, LOB, CLOB o simile. AWS DMS presuppone che i dati siano un documento JSON valido e replica i dati in Amazon DocumentDB senza modificarli.

Se il documento JSON risultante contiene un campo denominato _id, tale campo viene utilizzato come _id univoco in Amazon DocumentDB.

Se il documento JSON non contiene un campo _id, Amazon DocumentDB. genera automaticamente un valore _id.

Dati di origine che sono colonne multiple

Se i dati di origine cono costituiti da più colonne, allora AWS DMS crea un documento JSON da tutte queste colonne. Per determinare il campo _id per il documento, AWS DMS procede come segue:

  • Se una delle colonne è denominata _id, allora i dati in tale colonna vengono utilizzati come destinazione_id.

  • Se non esiste una colonna _id, ma i dati di origine dispongono di una chiave primaria o un indice univoco, allora AWS DMS utilizza tale chiave o valore di indice come valore _id. I dati della chiave primaria o dell'indice univoco vengono visualizzati come campi espliciti nel documento JSON.

  • Se non esiste una colonna _id né una chiave primaria o indice univoco, Amazon DocumentDB genera automaticamente un valore _id.

Assegnazione forzata di un tipo di dati all'endpoint di destinazione

AWS DMS può modificare le strutture di dati quando scrive in un endpoint di destinazione Amazon DocumentDB. Puoi richiedere tali modifiche rinominando colonne e tabelle a livello di endpoint di origine, oppure fornendo le regole di trasformazione che vengono applicate durante l'esecuzione di un'attività.

Utilizzo di un documento JSON nidificato (prefisso json_)

Per forzare un tipo di dati, puoi anteporre al nome della colonna di origine json_ (ovvero json_columnName) manualmente o utilizzando una trasformazione. In questo caso, la colonna viene creata come un documento JSON nidificato all'interno del documento di destinazione, anziché come un campo stringa.

Ad esempio, supponiamo di voler migrare il seguente documento da un endpoint di origine MongoDB.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}" }

Se non forzi uno qualsiasi dei tipi di dati di origine, il documento ContactDetails incorporato viene migrato come stringa.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}" }

Tuttavia, puoi aggiungere una regola di trasformazione per forzare ContactDetails a un oggetto JSON. Ad esempio, supponiamo che il nome della colonna di origine originale sia ContactDetails. Per forzare il tipo di dati come JSON nidificato, la colonna sull'endpoint di origine deve essere rinominata "json_ContactDetails" aggiungendo il prefisso "*json_*" all'origine manualmente o tramite regole di trasformazione. Ad esempio, puoi utilizzare la seguente regola di trasformazione:

{ "rules": [ { "rule-type": "transformation", "rule-id": "1", "rule-name": "1", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "ContactDetails" }, "rule-action": "rename", "value": "json_ContactDetails", "old-value": null } ] }

AWS DMS replica il campo ContactDetails come JSON nidificato, come segue.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": { "Home": { "Address": "Boston", "Phone": "1111111111" }, "Work": { "Address": "Boston", "Phone": "2222222222" } } }

Utilizzo di un array JSON (prefisso array_)

Per forzare un tipo di dati, puoi anteporre al nome della colonna array_ (ovvero array_columnName) manualmente o utilizzando una trasformazione. In questo caso, AWS DMS considera la colonna come un array JSON e lo crea come tale nel documento di destinazione.

Supponiamo di voler migrare il seguente documento da un endpoint di origine MongoDB.

{ "_id" : "1", "FirstName": "John", "LastName": "Doe",
 "ContactAddresses": ["Boston", "New York"],
 "ContactPhoneNumbers": ["1111111111", "2222222222"] }

Se non forzi uno qualsiasi dei tipi di dati di origine, il documento ContactDetails incorporato viene migrato come stringa.

{ "_id": "1", "FirstName": "John", "LastName": "Doe",
 "ContactAddresses": "[\"Boston\", \"New York\"]",
 "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]"
 }

Tuttavia, puoi aggiungere regole di trasformazione per forzare ContactAddress e ContactPhoneNumbers ad array JSON, come mostrato nella seguente tabella.

Nome colonna di origine originale Colonna di origine rinominata
ContactAddress array_ContactAddress
ContactPhoneNumbers array_ContactPhoneNumbers

AWS DMS replica ContactAddress e ContactPhoneNumbers come segue.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] }

Connessione ad Amazon DocumentDB tramite TLS

Per impostazione predefinita, un nuovo cluster Amazon DocumentDB creato accetta solo connessioni protette con Transport Layer Security (TLS). Quando TLS è abilitato, ogni connessione ad Amazon DocumentDB richiede una chiave pubblica.

È possibile recuperare la chiave pubblica di Amazon DocumentDB scaricando il file rds-combined-ca-bundle.pem da un bucket Amazon S3 ospitato su AWS. Per ulteriori informazioni sul download di questo file, consulta Crittografia delle connessioni con TLS nella Guida per gli sviluppatori di Amazon DocumentDB

Dopo aver scaricato il file .pem, è possibile importare la chiave pubblica che contiene in AWS DMS come descritto di seguito.

AWS Management Console

Per importare il file della chiave pubblica (.pem)
  1. Aprire la console AWS DMS all'indirizzo https://console.aws.amazon.com/dms.

  2. Nel riquadro di navigazione, scegliere Certificates (Certificati).

  3. Scegliere Import certificate (Importa certificato) ed effettuare le seguenti operazioni:

    • Per Certificate identifier (Identificatore certificato), immettere un nome univoco per il certificato, ad esempio docdb-cert.

    • Per Import file (Importa file), passare al percorso in cui è stato salvato il file .pem.

    Dopo aver selezionato le impostazioni desiderate, selezionare Add new CA certificate (Aggiungi un nuovo certificato CA).

AWS CLI

Utilizza il comando aws dms import-certificate come visualizzato nell'esempio seguente.

aws dms import-certificate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem

Quando crei l'endpoint di destinazione AWS DMS, fornisci l'identificatore certificato (ad esempio, docdb-cert). Inoltre, imposta il parametro Modalità SSL su verify-full.

Connessione ai cluster elastici Amazon DocumentDB come destinazione

In AWS DMS 3.4.7 e versioni successive, puoi creare un endpoint di destinazione Amazon DocumentDB come cluster elastico. Se crei l'endpoint di destinazione come cluster elastico, è necessario allegare un nuovo certificato SSL all'endpoint del cluster elastico Amazon DocumentDB in quanto il certificato SSL esistente non funzionerà.

Per collegare un nuovo certificato SSL all'endpoint del cluster elastico Amazon DocumentDB
  1. In un browser, apri https://www.amazontrust.com/repository/SFSRootCAG2.pem e salva il contenuto in un file .pem con un nome file univoco, ad esempio SFSRootCAG2.pem. Questo è il file di certificato che dovrai importare nelle fasi successive.

  2. Crea l'endpoint del cluster elastico e imposta le seguenti opzioni:

    1. In Configurazione dell'endpoint scegli Aggiungi un nuovo certificato CA.

    2. Per Identificativo del certificato immetti SFSRootCAG2.pem.

    3. Per Importa file del certificato seleziona Scegli file e passa al file SFSRootCAG2.pem scaricato in precedenza.

    4. Seleziona e apri il file SFSRootCAG2.pem scaricato.

    5. Selezionare Import certificate (Importa certificato).

    6. Dal menu a discesa Scegli un certificato seleziona SFSRootCAG2.pem.

Il nuovo certificato SSL del file SFSRootCAG2.pem scaricato è ora collegato all'endpoint del cluster elastico Amazon DocumentDB.

Replica continua con Amazon DocumentDB come destinazione

Se la replica continua (acquisizione dei dati di modifica o CDC) è abilitata per Amazon DocumentDB come destinazione, AWS DMS 3.5.0 e versioni successive forniscono un miglioramento delle prestazioni venti volte superiore rispetto alle versioni precedenti. Nelle versioni precedenti AWS DMS gestiva fino a 250 record al secondo, AWS DMS ora gestisce circa 5000 record al secondo. AWS DMS assicura inoltre che i documenti in Amazon DocumentDB rimangano sincronizzati con l'origine. Quando un record di origine viene creato o aggiornato, AWS DMS deve innanzitutto determinare quale record Amazon DocumentDB è interessato procedendo come segue:

  • Se il record di origine dispone di una colonna denominata _id, il valore di tale colonna determina l'elemento _id corrispondente nella raccolta Amazon DocumentDB.

  • Se non esiste una colonna _id, ma i dati di origine dispongono di una chiave primaria o un indice univoco, AWS DMS utilizza il valore della chiave o dell'indice come _id per la raccolta Amazon DocumentDB.

  • Se il record di origine non dispone di una colonna _id, una chiave primaria o un indice univoco, AWS DMS associa tutte le colonne di origine ai campi corrispondenti nella raccolta Amazon DocumentDB.

Quando viene creato un nuovo record di origine, AWS DMS scrive un documento corrispondente in Amazon DocumentDB. Se un record di origine esistente viene aggiornato, AWS DMS aggiorna i campi corrispondenti nel documento di destinazione Amazon DocumentDB. Gli eventuali campi esistenti nel documento di destinazione ma non nel record di origine non vengono modificati.

Quando viene eliminato un nuovo record di origine, AWS DMS elimina il documento corrispondente da Amazon DocumentDB.

Modifiche strutturali (DDL) all'origine

Con la replica continua, le eventuali modifiche alle strutture di dati di origine (ad esempio tabelle, colonne e così via) vengono propagate alle relative controparti in Amazon DocumentDB. Nei database relazionali, tali modifiche vengono avviate utilizzando istruzioni DDL (Data Definition Language). Puoi vedere come AWS DMS propaga queste modifiche in Amazon DocumentDB nella tabella seguente.

DDL all'origine Effetto sulla destinazione Amazon DocumentDB
CREATE TABLE Crea una raccolta vuota.
Istruzione che rinomina una tabella (RENAME TABLE, ALTER TABLE...RENAME e simili) Rinomina la raccolta.
TRUNCATE TABLE Rimuove tutti i documenti dalla raccolta, ma solo se HandleSourceTableTruncated è true. Per ulteriori informazioni, consulta Impostazioni delle attività per la gestione di DDL durante l'elaborazione delle modifiche.
DROP TABLE Elimina la raccolta, ma solo se HandleSourceTableDropped è true. Per ulteriori informazioni, consulta Impostazioni delle attività per la gestione di DDL durante l'elaborazione delle modifiche.
Istruzione che aggiunge una colonna a una tabella (ALTER TABLE...ADD e simili) L'istruzione DDL viene ignorata e viene emesso un avviso. Quando viene eseguita la prima istruzione INSERT presso l'origine, il nuovo campo viene aggiunto al documento di destinazione.
ALTER TABLE...RENAME COLUMN L'istruzione DDL viene ignorata e viene emesso un avviso. Quando viene eseguita la prima istruzione INSERT presso l'origine, il campo con il nuovo nome viene aggiunto al documento di destinazione.
ALTER TABLE...DROP COLUMN L'istruzione DDL viene ignorata e viene emesso un avviso.
Istruzione che modifica il tipo di dati della colonna (ALTER COLUMN...MODIFY e simili) L'istruzione DDL viene ignorata e viene emesso un avviso. Quando la prima istruzione INSERT viene eseguita presso l'origine con il nuovo tipo di dati, il documento di destinazione viene creato con un campo di tale nuovo tipo di dati.

Limitazioni all'utilizzo di Amazon DocumentDB come destinazione

Le seguenti limitazioni si applicano quando si utilizza Amazon DocumentDB come destinazione per AWS DMS:

  • In Amazon DocumentDB i nomi di raccolte non possono contenere il simbolo di dollaro ($). Inoltre, i nomi di database non possono contenere caratteri Unicode.

  • AWS DMS non supporta l'unione di più tabelle di origine in una singola raccolta Amazon DocumentDB.

  • Quando AWS DMS elabora le modifiche da una tabella di origine che non dispone di una chiave primaria, le eventuali colonne LOB in tale tabella vengono ignorate.

  • Se l'opzione Change table (Modifica tabella) è abilitata e AWS DMS incontra una colonna di origine denominata "_id", allora tale colonna viene visualizzata come "__id" (due trattini bassi) nella tabella di modifica.

  • Se scegli Oracle come un endpoint di origine, allora l'abilitazione del log supplementare deve essere abilitata nell'origine Oracle. In caso contrario, se presso l'origine sono presenti colonne che non sono state modificate, allora i dati vengono caricati in Amazon DocumentDB come valori nulli.

  • L'impostazione dell'attività di replica TargetTablePrepMode:TRUNCATE_BEFORE_LOAD non è supportata per l'uso con un endpoint di destinazione DocumentDB.

Utilizzo delle impostazioni degli endpoint con Amazon DocumentDB come destinazione

È possibile utilizzare le impostazioni degli endpoint per configurare il database di destinazione Amazon DocumentDB in modo simile a come si usano gli attributi aggiuntivi di connessione. Le impostazioni vengono specificate quando si crea l'endpoint di destinazione utilizzando la console AWS DMS o il comando create-endpoint nella AWS CLI, con la sintassi JSON --doc-db-settings '{"EndpointSetting": "value", ...}'.

La tabella seguente mostra le impostazioni degli endpoint che puoi utilizzare con Amazon DocumentDB come destinazione.

Nome attributo Valori validi Valore predefinito e descrizione

replicateShardCollections

booleano

true

false

Quando questa impostazione dell'endpoint è true ha gli effetti e le limitazioni indicati di seguito:

  • AWS DMS è autorizzato a replicare i dati su raccolte di partizioni di destinazione. Questa impostazione è applicabile solo se l'endpoint DocumentDB di destinazione è un cluster elastico.

  • È necessario impostare TargetTablePrepMode su DO_NOTHING.

  • AWS DMS imposta automaticamente useUpdateLookup su false durante la migrazione.

Tipi di dati di destinazione per Amazon DocumentDB

Nella tabella seguente sono elencati i tipi di dati di destinazione Amazon DocumentDB supportati quando utilizzi AWS DMS e la mappatura predefinita dai tipi di dati AWS DMS. Per ulteriori informazioni sui tipi di dati AWS DMS, consulta Tipi di dati per AWS Database Migration Service.

Tipi di dati AWS DMS

Tipi di dati Amazon DocumentDB

BOOLEAN

Boolean

BYTES

Dati binari

DATE

Data

TIME

Stringa (UTF8)

DATETIME

Data

INT1

Intero a 32 bit

INT2

Intero a 32 bit

INT4

Intero a 32 bit

INT8

Intero a 64 bit

NUMERIC

Stringa (UTF8)

REAL4

Doppio

REAL8

Doppio

STRING

Se i dati vengono riconosciuti come JSON, AWS DMS esegue la migrazione in Amazon DocumentDB come documento. In caso contrario, i dati vengono mappati alla Stringa (UTF8).

UINT1

Intero a 32 bit

UINT2

Intero a 32 bit

UINT4

Intero a 64 bit

UINT8

Stringa (UTF8)

WSTRING

Se i dati vengono riconosciuti come JSON, AWS DMS esegue la migrazione in Amazon DocumentDB come documento. In caso contrario, i dati vengono mappati alla Stringa (UTF8).

BLOB

Binario

CLOB

Se i dati vengono riconosciuti come JSON, AWS DMS esegue la migrazione in Amazon DocumentDB come documento. In caso contrario, i dati vengono mappati alla Stringa (UTF8).

NCLOB

Se i dati vengono riconosciuti come JSON, AWS DMS esegue la migrazione in Amazon DocumentDB come documento. In caso contrario, i dati vengono mappati alla Stringa (UTF8).