Utilisation d'Amazon DocumentDB comme cible pour le service de migration de AWS base de données - AWS Service de Migration de Base de Données

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 lorsque ParallelApplyThreads 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 :

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_columnName), 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.

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_columnName), 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.

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)
  1. Ouvrez la AWS DMS console à l'adresse https://console.aws.amazon.com/dms.

  2. Dans le volet de navigation, choisissez Certificates.

  3. 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
  1. 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.

  2. Créez le point de terminaison de cluster Elastic et définissez les options suivantes :

    1. Sous Configuration du point de terminaison, choisissez Ajouter un certificat CA.

    2. Pour Identifiant de certificat, entrez SFSRootCAG2.pem.

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

    4. Sélectionnez et ouvrez le fichier SFSRootCAG2.pem téléchargé.

    5. Sélectionnez Importer un certificat.

    6. 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 '{"EndpointSetting": "value", ...}' JSON.

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

replicateShardCollections

boolean

true

false

Lorsque ce paramètre de point de terminaison est défini sur true, il a les effets suivants et impose les limitations suivantes :

  • AWS DMS est autorisé à répliquer les données vers des collections de partitions cibles. Ce paramètre n’est applicable que si le point de terminaison DocumentDB cible est un cluster Elastic.

  • Vous devez définir TargetTablePrepMode sur DO_NOTHING.

  • AWS DMS est automatiquement défini useUpdateLookup sur false pendant la migration.

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