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 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 AWS DMS, consulta le seguenti sezioni:
Argomenti
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_
) 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 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_
) 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.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.
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)
-
Apri la AWS DMS console in /dms. https://console.aws.amazon.com
-
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 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
-
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. -
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, 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 '{"
sintassi JSON.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, 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 |