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 quandoParallelApplyThreads
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:
Argomenti
- Mappatura dei dati da un'origine a una destinazione Amazon DocumentDB
- Connessione ai cluster elastici Amazon DocumentDB come destinazione
- Replica continua con Amazon DocumentDB come destinazione
- Limitazioni all'utilizzo di Amazon DocumentDB come destinazione
- Utilizzo delle impostazioni degli endpoint con Amazon DocumentDB come destinazione
- Tipi di dati di destinazione per Amazon DocumentDB
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_
) 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.columnName
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_
) 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.columnName
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)
-
Aprire la console AWS DMS all'indirizzo https://console.aws.amazon.com/dms
. -
Nel riquadro di navigazione, scegliere Certificates (Certificati).
-
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
-
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 esempioSFSRootCAG2.pem
. Questo è il file di certificato che dovrai importare nelle fasi successive. -
Crea l'endpoint del cluster elastico e imposta le seguenti opzioni:
-
In Configurazione dell'endpoint scegli Aggiungi un nuovo certificato CA.
-
Per Identificativo del certificato immetti
SFSRootCAG2.pem
. -
Per Importa file del certificato seleziona Scegli file e passa al file
SFSRootCAG2.pem
scaricato in precedenza. -
Seleziona e apri il file
SFSRootCAG2.pem
scaricato. -
Selezionare Import certificate (Importa certificato).
-
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 |
---|---|---|
|
booleano
|
Quando questa impostazione dell'endpoint è
|
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). |