Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation d'Amazon DocumentDB comme cible pour le service de migration de AWS base de données
Pour plus d'informations sur les versions d'Amazon DocumentDB (compatibles avec MongoDB) prises en charge, consultez. AWS DMS Objectifs pour AWS DMS Vous pouvez utiliser AWS DMS pour migrer des données vers Amazon DocumentDB (compatible avec MongoDB) à partir de tout moteur de données source pris en charge par AWS DMS . Le moteur source peut se trouver sur un service AWS géré tel qu'Amazon RDS, Aurora ou Amazon S3. Le moteur peut également se trouver sur une base de données autogérée, telle que MongoDB exécutée sur EC2 Amazon ou sur site.
Vous pouvez l'utiliser AWS DMS pour répliquer les données sources vers des bases de données, des collections ou des documents Amazon DocumentDB.
Note
Si votre point de terminaison source est MongoDB ou Amazon DocumentDB, exécutez la migration en mode document.
MongoDB stocke les données au format binaire JSON (BSON). AWS DMS prend en charge tous les types de données BSON pris en charge par Amazon DocumentDB. Pour obtenir la liste de ces types de données, consultez la section MongoDB APIs, opérations et types de données pris en charge dans le manuel Amazon DocumentDB Developer Guide.
Si le point de terminaison source est une base de données relationnelle, AWS DMS mappe les objets de base de données vers Amazon DocumentDB comme suit :
-
Une base de données relationnelle, ou schéma de base de données, est mappée à une base de données Amazon DocumentDB.
-
Les tables situées dans une base de données relationnelle sont mappées à des collections dans Amazon DocumentDB.
-
Les enregistrements situés dans une table relationnelle sont mappés à des documents dans Amazon DocumentDB. Chaque document est construit à partir de données de l'enregistrement source.
Si le point de terminaison source est Amazon S3, les objets Amazon DocumentDB résultants correspondent aux règles de mappage AWS DMS pour Amazon S3. Prenons l'exemple de l'URI suivant :
s3://mybucket/hr/employee
Dans ce cas, AWS DMS mappe les objets dans mybucket
Amazon DocumentDB comme suit :
-
La partie supérieure de l’URI (
hr
) est mappée à une base de données Amazon DocumentDB. -
La partie suivante de l’URI (
employee
) est mappée à une collection Amazon DocumentDB. -
Chaque objet de
employee
est mappé à un document dans Amazon DocumentDB.
Pour plus d’informations sur les règles de mappage pour Amazon S3, consultez Utilisation d'Amazon S3 comme source pour AWS DMS.
Paramètres de point de terminaison Amazon DocumentDB
Dans AWS DMS les versions 3.5.0 et supérieures, vous pouvez améliorer les performances de capture des données de modification (CDC) pour les points de terminaison Amazon DocumentDB en ajustant les paramètres des tâches pour les threads parallèles et les opérations en masse. Pour ce faire, vous pouvez spécifier le nombre de threads simultanés, les files d'attente par thread et le nombre d'enregistrements à stocker dans un tampon à l'aide de la tâche ParallelApply*
. Par exemple, supposons que vous souhaitiez effectuer un chargement CDC et appliquer 128 threads en parallèle. Vous souhaitez également accéder à 64 files d'attente par thread, avec 50 enregistrements stockés par tampon.
Pour améliorer les performances du CDC, AWS DMS prend en charge les paramètres de tâche suivants :
-
ParallelApplyThreads
— Spécifie le nombre de threads simultanés AWS DMS utilisés lors d'un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Amazon DocumentDB. La valeur par défaut est zéro (0) et la valeur maximale est 32. -
ParallelApplyBufferSize
: spécifie le nombre maximal d’enregistrements à stocker dans chaque file d’attente de mémoire tampon pour que les threads simultanés soient transférés vers un point de terminaison cible Amazon DocumentDB lors d’un chargement CDC. La valeur par défaut est 100 et la valeur maximale est 1 000. Utilisez cette option lorsqueParallelApplyThreads
spécifie plusieurs threads. -
ParallelApplyQueuesPerThread
: spécifie le nombre de files d’attente auxquelles chaque thread accède pour extraire les enregistrements de données des files d’attente et générer un chargement par lots pour un point de terminaison Amazon DocumentDB pendant la CDC. La valeur par défaut est 1. La valeur maximale est 512.
Pour plus d'informations sur l'utilisation d'Amazon DocumentDB comme cible pour AWS DMS, consultez les sections suivantes :
Rubriques
- Mappage de données d’une source vers une cible Amazon DocumentDB
- Connexion aux clusters Elastic Amazon DocumentDB en tant que cible
- Réplication continue avec Amazon DocumentDB en tant que cible
- Limitations de l’utilisation d’Amazon DocumentDB en tant que cible
- Utilisation des paramètres de point de terminaison avec Amazon DocumentDB en tant que cible
- Types de données cibles pour Amazon DocumentDB
Note
Pour une step-by-step présentation détaillée du processus de migration, consultez la section Migration de MongoDB vers Amazon DocumentDB dans le guide de migration. AWS Database Migration Service Step-by-Step
Mappage de données d’une source vers une cible Amazon DocumentDB
AWS DMS lit les enregistrements depuis le point de terminaison source et construit des documents JSON en fonction des données qu'il lit. Pour chaque document JSON, vous AWS DMS devez déterminer un _id
champ qui servira d'identifiant unique. Il écrit ensuite le document JSON dans une collection Amazon DocumentDB en utilisant le champ _id
comme clé primaire.
Données source se composant d'une colonne unique
Si les données source se composent d'une seule colonne, elles doivent être de type string (chaîne). (Selon le moteur source, le type de données réel peut être VARCHAR, NVARCHAR, TEXT, LOB, CLOB ou similaire.) AWS DMS suppose que les données sont un document JSON valide et les réplique telles quelles vers Amazon DocumentDB.
Si le document JSON résultant contient un champ nommé _id
, ce dernier est utilisé comme _id
unique dans Amazon DocumentDB.
Si le document JSON ne contient pas de champ _id
, Amazon DocumentDB génère une valeur _id
automatiquement.
Données source se composant de plusieurs colonnes
Si les données source se composent de plusieurs colonnes, crée AWS DMS un document JSON à partir de toutes ces colonnes. Pour déterminer le _id
champ du document, AWS DMS procédez comme suit :
-
Si l'une des colonnes est nommée
_id
, les données de cette colonne sont utilisées comme_id
cible. -
S'il n'y a pas de
_id
colonne, mais que les données source possèdent une clé primaire ou un index unique, AWS DMS utilise cette clé ou cette valeur d'index comme_id
valeur. Les données de la clé primaire ou de l'index unique apparaissent également sous forme de champs explicites dans le document JSON. -
S’il n’y a pas de colonne
_id
et aucune clé primaire ni aucun index unique, Amazon DocumentDB génère une valeur_id
automatiquement.
Imposition d'un type de données au niveau du point de terminaison cible
AWS DMS peut modifier les structures de données lorsqu'il écrit sur un point de terminaison cible Amazon DocumentDB. Vous pouvez demander ces modifications en renommant des colonnes et des tables au niveau du point de terminaison source ou en fournissant des règles de transformation qui sont appliquées lorsqu'une tâche est en cours d'exécution.
Utilisation d'un document JSON imbriqué (préfixe json_)
Pour imposer un type de données, vous pouvez préfixer le nom de colonne source avec json_
(c'est-à-dire, json_
), manuellement ou à l'aide d'une transformation. Dans ce cas, la colonne est créée sous la forme d'un document JSON imbriqué dans le document cible, plutôt que sous la forme d'un champ de chaîne.columnName
Par exemple, supposons que vous souhaitiez migrer le document suivant à partir d'un point de terminaison source MongoDB.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}" }
Si vous n'imposez aucun des types de données source, le document ContactDetails
imbriqué est migré sous la forme d'une chaîne.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}" }
Toutefois, vous pouvez ajouter une règle de transformation pour contraindre l'insertion de ContactDetails
dans un objet JSON. Par exemple, supposons que le nom de la colonne source d'origine est ContactDetails
. Pour forcer le type de données en tant que JSON imbriqué, la colonne du point de terminaison de la source doit être renommée « json_ ContactDetails » soit en ajoutant le préfixe « *json_* » sur la source manuellement, soit par le biais de règles de transformation. Par exemple, vous pouvez utiliser la règle de transformation ci-dessous :
{ "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 réplique le ContactDetails champ en tant que JSON imbriqué, comme suit.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": { "Home": { "Address": "Boston", "Phone": "1111111111" }, "Work": { "Address": "Boston", "Phone": "2222222222" } } }
Utilisation d'un tableau JSON (préfixe array_)
Pour imposer un type de données, vous pouvez préfixer un nom de colonne avec array_
(c'est-à-dire, array_
), manuellement ou à l'aide d'une transformation. Dans ce cas, AWS DMS considère la colonne comme un tableau JSON et la crée comme telle dans le document cible.columnName
Supposons que vous souhaitiez migrer le document suivant à partir d'un point de terminaison source MongoDB.
{ "_id" : "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": ["Boston", "New York"], "ContactPhoneNumbers": ["1111111111", "2222222222"] }
Si vous n'imposez aucun des types de données source, le document ContactDetails
imbriqué est migré sous la forme d'une chaîne.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": "[\"Boston\", \"New York\"]", "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]" }
Toutefois, vous pouvez ajouter des règles de transformation pour forcer l'insertion de ContactAddress
et de ContactPhoneNumbers
dans des tableaux JSON, comme illustré dans le tableau suivant.
Nom de la colonne source d'origine | Colonne source renommée |
---|---|
ContactAddress |
array_ContactAddress |
ContactPhoneNumbers |
array_ContactPhoneNumbers |
AWS DMS se reproduit ContactAddress
et ContactPhoneNumbers
comme suit.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] }
Connexion à Amazon DocumentDB à l’aide du protocole TLS
Par défaut, un cluster Amazon DocumentDB récemment créé n’accepte que les connexions sécurisées qui utilisent le protocole TLS (Transport Layer Security). Lorsque le protocole TLS est activé, chaque connexion à Amazon DocumentDB nécessite une clé publique.
Vous pouvez récupérer la clé publique d'Amazon DocumentDB en téléchargeant le fichier depuis un compartiment Amazon S3 AWS hébergé. rds-combined-ca-bundle.pem
Pour plus d’informations sur le téléchargement de ce fichier, consultez Chiffrement des connexions à l’aide de TLS dans le Guide du développeur Amazon DocumentDB.
Après avoir téléchargé ce fichier .pem, vous pouvez importer la clé publique qu'il contient AWS DMS comme décrit ci-dessous.
AWS Management Console
Pour importer le fichier de clé publique (.pem)
-
Ouvrez la AWS DMS console à l'adresse https://console.aws.amazon.com/dms
. -
Dans le volet de navigation, choisissez Certificates.
-
Choisissez l'onglet Import certificate (Importer le certificat) et effectuez les opérations suivantes :
Pour Certificate identifier (Identifiant de certificat), entrez un nom unique pour le certificat, par exemple,
docdb-cert
.-
Pour Import file (Importer un fichier), accédez à l'emplacement où vous avez enregistré le fichier .pem.
Lorsque les paramètres vous conviennent, choisissez Add new CA certificate (Ajouter un nouveau certificat CA).
AWS CLI
Utilisez la commande aws dms import-certificate
, comme illustré dans l'exemple suivant.
aws dms import-certificate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem
Lorsque vous créez un point de terminaison AWS DMS cible, fournissez l'identifiant du certificat (par exemple,docdb-cert
). Définissez aussi le paramètre de mode SSL sur verify-full
.
Connexion aux clusters Elastic Amazon DocumentDB en tant que cible
Dans AWS DMS les versions 3.4.7 et supérieures, vous pouvez créer un point de terminaison cible Amazon DocumentDB en tant que cluster élastique. Si vous créez votre point de terminaison cible en tant que cluster Elastic, vous devez attacher un nouveau certificat SSL au point de terminaison de votre cluster Elastic Amazon DocumentDB, car votre certificat SSL existant ne fonctionnera pas.
Pour attacher un nouveau certificat SSL au point de terminaison de votre cluster Elastic Amazon DocumentDB
-
Dans un navigateur, ouvrez https://www.amazontrust.com/repository/SFSRootCAG2.pem
et enregistrez le contenu dans un .pem
fichier portant un nom de fichier unique, par exemple.SFSRootCAG2.pem
Il s’agit du fichier de certificat que vous devrez importer lors des étapes suivantes. -
Créez le point de terminaison de cluster Elastic et définissez les options suivantes :
-
Sous Configuration du point de terminaison, choisissez Ajouter un certificat CA.
-
Pour Identifiant de certificat, entrez
SFSRootCAG2.pem
. -
Pour Importer un fichier de certificat, choisissez Choisir un fichier et accédez au fichier
SFSRootCAG2.pem
que vous avez téléchargé précédemment. -
Sélectionnez et ouvrez le fichier
SFSRootCAG2.pem
téléchargé. -
Sélectionnez Importer un certificat.
-
Dans le menu déroulant Choisir un certificat, sélectionnez SFSRootCAG2.pem.
-
Le nouveau certificat SSL issu du fichier SFSRootCAG2.pem
téléchargé est désormais attaché au point de terminaison de votre cluster Elastic Amazon DocumentDB.
Réplication continue avec Amazon DocumentDB en tant que cible
Si la réplication continue (capture des données de modification, CDC) est activée pour Amazon DocumentDB en tant que cible, AWS DMS versions 3.5.0 et ultérieures fournit une amélioration des performances vingt fois supérieure à celle des versions précédentes. Dans les versions précédentes, AWS DMS qui géraient jusqu'à 250 enregistrements par seconde, AWS DMS traitaient désormais efficacement plus de 5 000 enregistrements par seconde. AWS DMS garantit également que les documents d'Amazon DocumentDB restent synchronisés avec la source. Lorsqu'un enregistrement source est créé ou mis à jour, vous AWS DMS devez d'abord déterminer quel enregistrement Amazon DocumentDB est concerné en procédant comme suit :
-
Si l’enregistrement source comporte une colonne nommée
_id
, la valeur de cette colonne détermine la valeur_id
correspondante dans la collection Amazon DocumentDB. -
S'il n'y a pas de
_id
colonne, mais que les données source possèdent une clé primaire ou un index unique, elles AWS DMS utilisent cette clé ou cette valeur d'index_id
pour la collection Amazon DocumentDB. -
Si l'enregistrement source ne contient pas de
_id
colonne, de clé primaire ou d'index unique, toutes les colonnes source AWS DMS correspondent aux champs correspondants de la collection Amazon DocumentDB.
Lorsqu'un nouvel enregistrement source est créé, AWS DMS écrit un document correspondant dans Amazon DocumentDB. Si un enregistrement source existant est mis à jour, AWS DMS met à jour les champs correspondants dans le document cible dans Amazon DocumentDB. Tous les champs qui existent dans le document cible, mais pas dans l'enregistrement source, restent intacts.
Lorsqu'un enregistrement source est supprimé, le document correspondant AWS DMS est supprimé d'Amazon DocumentDB.
Modifications structurelles (DDL) à la source
Avec la réplication continue, les modifications des structures de données source (telles que les tables, colonnes, etc.) sont propagées à leurs homologues dans Amazon DocumentDB. Dans les bases de données relationnelles, ces modifications sont lancées à l'aide d'instructions DDL (Data Definition Language). Vous pouvez voir comment ces modifications sont AWS DMS répercutées sur Amazon DocumentDB dans le tableau suivant.
DDL à la source | Effet sur la cible Amazon DocumentDB |
---|---|
CREATE TABLE |
Crée une collection vide. |
Déclaration qui renomme une table (RENAME TABLE , ALTER TABLE...RENAME , etc.) |
Renomme la collection. |
TRUNCATE TABLE |
Supprime tous les documents de la collection, mais uniquement si HandleSourceTableTruncated a pour valeur true . Pour de plus amples informations, veuillez consulter Paramètres des tâches pour la DDL gestion du traitement des modifications. |
DROP TABLE |
Supprime la collection, mais uniquement si HandleSourceTableDropped a pour valeur true . Pour de plus amples informations, veuillez consulter Paramètres des tâches pour la DDL gestion du traitement des modifications. |
Instruction qui ajoute une colonne à une table (ALTER
TABLE...ADD , etc.) |
L'instruction DDL est ignorée et un avertissement est émis. Lorsque la première instruction INSERT est exécutée à la source, le nouveau champ est ajouté au document cible. |
ALTER TABLE...RENAME COLUMN |
L'instruction DDL est ignorée et un avertissement est émis. Lorsque la première instruction INSERT est exécutée à la source, le nouveau champ est ajouté au document cible. |
ALTER TABLE...DROP COLUMN |
L'instruction DDL est ignorée et un avertissement est émis. |
Déclaration qui modifie le type de données de la colonne (ALTER
COLUMN...MODIFY , etc.) |
L'instruction DDL est ignorée et un avertissement est émis. Lorsque la première instruction INSERT est exécutée à la source avec le nouveau type de données, le document cible est créé avec un champ ayant ce nouveau type de données. |
Limitations de l’utilisation d’Amazon DocumentDB en tant que cible
Les limites suivantes s'appliquent lors de l'utilisation d'Amazon DocumentDB comme cible pour : AWS DMS
-
Dans Amazon DocumentDB, les noms de collection ne peuvent pas contenir le symbole du dollar ($). En outre, les noms de base de données ne peuvent pas contenir de caractères Unicode.
-
AWS DMS ne prend pas en charge la fusion de plusieurs tables sources dans une seule collection Amazon DocumentDB.
-
Lorsque AWS DMS des processus sont modifiés à partir d'une table source dépourvue de clé primaire, toutes les colonnes LOB de cette table sont ignorées.
-
Si l'option Change table (Modifier la table) est activée et que AWS DMS rencontre une colonne source nommée « _id », cette colonne apparaît sous la forme « __id » (deux traits de soulignement) dans la table modifiée.
-
Si vous choisissez Oracle comme point de terminaison source, une journalisation supplémentaire complète doit être activée sur la source Oracle. Dans le cas contraire, s’il existe des colonnes à la source qui n’ont pas été modifiées, les données seront chargées dans Amazon DocumentDB tant que valeurs nulles.
-
Le paramètre de tâche de réplication
TargetTablePrepMode:TRUNCATE_BEFORE_LOAD
n’est pas pris en charge pour une utilisation avec un point de terminaison cible DocumentDB.
Utilisation des paramètres de point de terminaison avec Amazon DocumentDB en tant que cible
Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible Amazon DocumentDB comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la create-endpoint
commande dans le AWS CLI, avec la syntaxe --doc-db-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
Les paramètres de point de terminaison que vous pouvez utiliser avec Amazon DocumentDB en tant que cible sont indiqués dans le tableau suivant.
Nom d’attribut | Valeurs valides | Valeur par défaut et description |
---|---|---|
|
boolean
|
Lorsque ce paramètre de point de terminaison est défini sur
|
Types de données cibles pour Amazon DocumentDB
Dans le tableau suivant, vous trouverez les types de données cibles Amazon DocumentDB pris en charge lors de l'utilisation de AWS DMS, ainsi que le mappage par défaut à partir des types de données AWS DMS. Pour plus d'informations sur les types de données AWS DMS, consultezTypes de données pour AWS Database Migration Service.
AWS Type de données DMS |
Type de données Amazon DocumentDB |
---|---|
BOOLEAN |
Booléen |
BYTES |
Données binaires |
DATE |
Date |
TIME |
Chaîne (UTF8) |
DATETIME |
Date |
INT1 |
Entier 32 bits |
INT2 |
Entier 32 bits |
INT4 |
Entier 32 bits |
INT8 |
Entier 64 bits |
NUMERIC |
Chaîne (UTF8) |
REAL4 |
Double |
REAL8 |
Double |
CHAÎNE |
Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Dans le cas contraire, les données sont mappées à String (UTF8). |
UINT1 |
Entier 32 bits |
UINT2 |
Entier 32 bits |
UINT4 |
Entier 64 bits |
UINT8 |
Chaîne (UTF8) |
WSTRING |
Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Dans le cas contraire, les données sont mappées à String (UTF8). |
BLOB |
Binaire |
CLOB |
Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Dans le cas contraire, les données sont mappées à String (UTF8). |
NCLOB |
Si les données sont reconnues en tant que JSON, elles sont AWS DMS migrées vers Amazon DocumentDB sous forme de document. Dans le cas contraire, les données sont mappées à String (UTF8). |