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 (con compatibilità con MongoDB) supportate, consulta. AWS DMS 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 di origine può trovarsi su un servizio AWS gestito come Amazon RDS, Aurora o Amazon S3. Oppure il motore può trovarsi su un database autogestito, come MongoDB in esecuzione su EC2 Amazon o in locale.

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

Nota

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

MongoDB archivia i dati in un formato JSON binario (BSON). AWS DMS supporta tutti i tipi di dati BSON supportati da Amazon DocumentDB. Per un elenco di questi tipi di dati, consulta Supported APIs MongoDB, operations and data types nella Amazon DocumentDB Developer Guide.

Se l'endpoint di origine è un database relazionale, AWS DMS mappa gli oggetti del database su 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 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

Nelle AWS DMS versioni 3.5.0 e successive, puoi migliorare le prestazioni del change data capture (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, supporta le seguenti impostazioni delle attività: AWS DMS

  • ParallelApplyThreads: specifica il numero di thread simultanei che vengono AWS DMS utilizzati durante un caricamento CDC per inviare i 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 AWS DMS, consulta le seguenti sezioni:

Nota

Per una step-by-step procedura dettagliata del processo di migrazione, consulta la sezione Migrazione da MongoDB ad Amazon DocumentDB nella Guida alla migrazione. AWS Database Migration Service Step-by-Step

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

AWS DMS legge i record dall'endpoint di origine e costruisce documenti JSON in base ai dati letti. Per ogni documento JSON, AWS DMS deve determinare un _id campo che funga da identificatore univoco. 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 simili.) AWS DMS presuppone che i dati siano un documento JSON valido e li replica su Amazon DocumentDB così come sono.

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 sono composti da più colonne, AWS DMS costruisce un documento JSON da tutte queste colonne. Per determinare il _id campo per il documento, AWS DMS procedi come segue:

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

  • Se non è presente alcuna _id colonna, ma i dati di origine hanno una chiave primaria o un indice univoco, AWS DMS utilizza tale chiave o valore di indice come _id valore. 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 su 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 a Nested JSON, la colonna sull'endpoint di origine deve essere rinominata come «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 ContactDetails replica il campo come JSON annidato, 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 una matrice JSON e la 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.

Puoi recuperare la chiave pubblica per Amazon DocumentDB scaricando il file da AWS un rds-combined-ca-bundle.pem bucket Amazon S3 ospitato. 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 questo file.pem, puoi importare la chiave pubblica che contiene come descritto di seguito. AWS DMS

AWS Management Console

Per importare il file della chiave pubblica (.pem)
  1. Apri la AWS DMS console in /dms. https://console.aws.amazon.com

  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 un endpoint di AWS DMS destinazione, fornisci l'identificatore del certificato (ad esempio,). docdb-cert Inoltre, imposta il parametro Modalità SSL su verify-full.

Connessione ai cluster elastici Amazon DocumentDB come destinazione

Nelle AWS DMS versioni 3.4.7 e 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 .pem file 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, scegli SFSRoot CAG2 .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, in cui AWS DMS gestiva fino a 250 record al secondo, AWS DMS ora elabora in modo efficiente oltre 5000 record al secondo. AWS DMS assicura inoltre che i documenti in Amazon DocumentDB rimangano sincronizzati con il codice sorgente. Quando un record di origine viene creato o aggiornato, AWS DMS deve innanzitutto determinare quale record Amazon DocumentDB è interessato effettuando le seguenti operazioni:

  • 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 è presente alcuna _id colonna, ma i dati di origine hanno una chiave primaria o un indice univoco, AWS DMS utilizza tale chiave o valore di indice come _id raccolta Amazon DocumentDB.

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

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

Quando viene eliminato un 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 ad 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 un'unica raccolta Amazon DocumentDB.

  • Quando AWS DMS i processi vengono modificati da una tabella di origine che non ha una chiave primaria, tutte le colonne LOB in quella 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 AWS DMS console o utilizzando il create-endpoint comando in AWS CLI, con la --doc-db-settings '{"EndpointSetting": "value", ...}' sintassi JSON.

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 shard di destinazione. Questa impostazione è applicabile solo se l'endpoint DocumentDB di destinazione è un cluster elastico.

  • È necessario impostare TargetTablePrepMode su DO_NOTHING.

  • AWS DMS viene impostato automaticamente su false durante useUpdateLookup la migrazione.

Tipi di dati di destinazione per Amazon DocumentDB

Nella tabella seguente, puoi trovare i tipi di dati di destinazione di Amazon DocumentDB supportati quando si utilizza AWS DMS e la mappatura predefinita dei tipi di dati AWS DMS. Per ulteriori informazioni sui tipi di dati AWS DMS, consulta. Tipi di dati per AWS Database Migration Service

AWS Tipo di dati DMS

Tipi di dati Amazon DocumentDB

BOOLEAN

Booleano

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, li AWS DMS migra in Amazon DocumentDB come documento. Altrimenti, i dati vengono mappati su String (). 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, li AWS DMS migra in Amazon DocumentDB come documento. Altrimenti, i dati vengono mappati su String (). UTF8

BLOB

Binario

CLOB

Se i dati vengono riconosciuti come JSON, li AWS DMS migra in Amazon DocumentDB come documento. Altrimenti, i dati vengono mappati su String (). UTF8

NCLOB

Se i dati vengono riconosciuti come JSON, li AWS DMS migra in Amazon DocumentDB come documento. Altrimenti, i dati vengono mappati su String (). UTF8