Utilisation d’Amazon Timestream comme cible pour AWS Database Migration Service - AWS Database Migration Service

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 Timestream comme cible pour AWS Database Migration Service

Vous pouvez utiliser AWS Database Migration Service pour migrer les données de votre base de données source vers un point de terminaison cible Amazon Timestream, en prenant en charge les migrations à chargement complet et CDC.

Amazon Timestream est un service de base de données de séries temporelles rapide, évolutif et sans serveur, conçu pour l’ingestion de grands volumes de données. Les données de séries temporelles sont une séquence de points de données collectés pendant un intervalle de temps et utilisés pour mesurer des événements qui évoluent au fil du temps. Il est utilisé pour collecter, stocker et analyser les métriques des applications IoT, des DevOps applications et des applications d'analyse. Une fois que vous avez enregistré vos données dans Timestream, vous pouvez visualiser et identifier des tendances et des modèles dans vos données en temps quasi réel. Pour plus d’informations sur Amazon Timestream, consultez Qu’est-ce qu’Amazon Timestream ? dans le Guide du développeur Amazon Timestream.

Conditions préalables à l’utilisation d’Amazon Timestream comme cible pour AWS Database Migration Service

Avant de configurer Amazon Timestream comme cible pour AWS DMS, veillez à créer un rôle IAM. Ce rôle doit permettre à AWS DMS d’accéder aux données en cours de migration vers Amazon Timestream. L’ensemble d’autorisations d’accès minimum pour le rôle que vous utilisez pour migrer vers Timestream figure dans la politique IAM suivante.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeEndpoints", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "timestream:ListTables", "timestream:DescribeDatabase" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "timestream:DeleteTable", "timestream:WriteRecords", "timestream:UpdateTable", "timestream:CreateTable" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME/table/TABLE_NAME" } ] }

Si vous avez l’intention de migrer toutes les tables, utilisez * pour TABLE_NAME dans l’exemple ci-dessus.

Notez ce qui suit à propos de l’utilisation de Timestream comme cible :

  • Si vous avez l’intention d’ingérer des données historiques dont l’horodatage remonte à plus d’un an, nous vous recommandons d’utiliser AWS DMS pour écrire les données dans Amazon S3 au format CSV (valeurs séparées par des virgules). Utilisez ensuite le chargement par lots de Timestream pour ingérer les données dans Timestream. Pour plus d’informations, consultez Utilisation du chargement par lots dans Timestream dans le Guide du développeur Amazon Timestream.

  • Pour les migrations de données à chargement complet datant de moins d’un an, nous recommandons de définir une période de conservation de la mémoire de la table Timestream supérieure ou égale à l’horodatage le plus ancien. Ensuite, une fois la migration terminée, modifiez la période de conservation de la mémoire de la table à la valeur souhaitée. Par exemple, pour migrer des données dont l’horodatage le plus ancien date de 2 mois, procédez comme suit :

    • Définissez la période de conservation de la mémoire de la table cible Timestream à 2 mois.

    • Démarrez la migration des données à l’aide d’AWS DMS.

    • Une fois la migration des données terminée, modifiez la période de conservation de la table Timestream cible à la valeur souhaitée.

    Nous vous recommandons d’estimer le coût de stockage de la mémoire avant la migration en utilisant les informations des pages suivantes :

  • Pour les migrations de données CDC, nous recommandons de définir la période de rétention de la mémoire de la table cible de manière à ce que les données ingérées se situent dans les limites de cette période. Pour plus d’informations, consultez Bonnes pratiques en matière d’écriture dans le Guide du développeur Amazon Timestream.

Paramètres de tâche de chargement complet multithread

Pour accélérer le transfert de données, AWS DMS prend en charge une tâche de chargement complet multithread vers un point de terminaison cible Timestream avec les paramètres de tâche suivants :

  • MaxFullLoadSubTasks : utilisez cette option pour indiquer le nombre maximal de tables sources à charger en parallèle. DMS charge chaque table dans sa table Amazon Timestream cible correspondante à l’aide d’une sous-tâche dédiée. La valeur par défaut est 8 ; la valeur maximale 49.

  • ParallelLoadThreads : utilisez cette option pour spécifier le nombre de threads utilisés par AWS DMS pour charger chaque table dans sa table cible Amazon Timestream. La valeur maximale pour une cible Timestream est 32. Vous pouvez demander une augmentation de cette limite maximale.

  • ParallelLoadBufferSize : utilisez cette option pour spécifier le nombre maximal d’enregistrements à stocker dans la mémoire tampon utilisée par les threads de chargement parallèles pour charger les données dans la cible Amazon Timestream. La valeur par défaut est 50. La valeur maximale est 1 000. Utilisez ce paramètre avec ParallelLoadThreads. ParallelLoadBufferSize est valide uniquement dans le cas de plusieurs threads.

  • ParallelLoadQueuesPerThread : utilisez cette option pour spécifier le nombre de files d'attente auxquelles chaque thread simultané accède pour extraire les enregistrements de données des files d'attente et générer un chargement par lots pour la cible. La valeur par défaut est 1. Toutefois, pour les cibles Amazon Timestream de différentes tailles de charge utile, la plage valide est comprise entre 5 et 512 files d’attente par thread.

Paramètres de tâche de chargement CDC multithread

Pour accroître les performances de la fonctionnalité CDC, AWS DMS prend en charge les paramètres de tâche suivants :

  • ParallelApplyThreads : spécifie le nombre de threads simultanés utilisés par AWS DMS pendant un chargement CDC pour transférer des enregistrements de données vers un point de terminaison cible Timestream. La valeur par défaut est 0 et la valeur maximale est 32.

  • ParallelApplyBufferSize : spécifie le nombre maximal d’enregistrements à stocker dans chaque file d’attente de la mémoire tampon pour que les threads simultanés soient transférés vers un point de terminaison cible Timestream 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 et générer un chargement par lots pour un point de terminaison Timestream lors d’un chargement CDC. La valeur par défaut est 1 et la valeur maximale est 512.

Paramètres de point de terminaison lors de l’utilisation de Timestream comme cible pour AWS DMS

Vous pouvez utiliser des paramètres de point de terminaison pour configurer votre base de données Timestream cible 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 console AWS DMS ou à l'aide de la commande create-endpoint dans AWS CLI, avec la syntaxe JSON --timestream-settings '{"EndpointSetting": "value", ...}'.

Les paramètres de point de terminaison que vous pouvez utiliser avec Timestream comme cible sont indiqués dans le tableau suivant.

Name (Nom) Description

MemoryDuration

Définissez cet attribut pour spécifier la période de conservation des données migrées dans la mémoire de Timestream. Le temps est exprimé en heures. La mémoire de Timestream est optimisée pour un débit d’ingestion élevé et un accès rapide.

Valeur par défaut : 24 (heures)

Valeurs valides : 1 à 8 736 (1 heure à 12 mois exprimés en heures)

Exemple : --timestream-settings '{"MemoryDuration": 20}'

DatabaseName

Définissez cet attribut pour spécifier le nom de la base de données Timestream cible.

Type : chaîne

Exemple : --timestream-settings '{"DatabaseName": "db_name"}'

TableName

Définissez cet attribut pour spécifier le nom de la table Timestream cible.

Type : chaîne

Exemple : --timestream-settings '{"TableName": "table_name"}'

MagneticDuration

Définissez cet attribut pour spécifier la période de conservation du stockage magnétique appliquée aux tables Timestream (en jours). Il s’agit de la durée limite de conservation des données ingérées. Timestream supprime tout horodatage dépassant la durée limite de conservation. Pour plus d’informations, consultez Stockage dans le Guide du développeur Amazon Timestream.

Exemple : --timestream-settings '{"MagneticDuration": "3"}'

CdcInsertsAndUpdates

Définissez cet attribut sur true pour spécifier qu’AWS DMS applique uniquement des insertions et des mises à jour, et pas de suppressions. Timestream n’autorise pas la suppression des enregistrements. Par conséquent, si cette valeur est false, AWS DMS annule l’enregistrement correspondant dans la base de données Timestream au lieu de le supprimer. Pour plus d'informations, consultez Limites, ci-après.

Valeur par défaut : false

Exemple : --timestream-settings '{"CdcInsertsAndUpdates": "true"}'

EnableMagneticStoreWrites

Définissez cet attribut sur true pour activer les écritures sur stockage magnétique. Lorsque cette valeur est définie sur false, AWS DMS n’écrit pas les enregistrements dont l’horodatage est antérieur à la période de conservation de la mémoire de la table cible, car Timestream n’autorise pas les écritures sur stockage magnétique par défaut. Pour plus d’informations, consultez Bonnes pratiques en matière d’écriture dans le Guide du développeur Amazon Timestream.

Valeur par défaut : false

Exemple : --timestream-settings '{"EnableMagneticStoreWrites": "true"}'

Création et modification d’un point de terminaison Amazon Timestream cible

Une fois que vous avez créé un rôle IAM et défini l’ensemble d’autorisations d’accès minimum, vous pouvez créer un point de terminaison Amazon Timestream cible à l’aide de la console AWS DMS ou de la commande create-endpoint d’AWS CLI, avec la syntaxe JSON --timestream-settings '{"EndpointSetting": "value", ...}'.

Les exemples suivants montrent comment créer et modifier un point de terminaison Timestream cible à l’aide d’AWS CLI.

Commande de création d’un point de terminaison Timestream cible

aws dms create-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "DatabaseName":"db_name", "MagneticDuration": 3, "CdcInsertsAndUpdates": true, "EnableMagneticStoreWrites": true, }

Commande de modification d’un point de terminaison Timestream cible

aws dms modify-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "MagneticDuration": 3, }

Utilisation du mappage d’objet pour migrer des données vers une rubrique Timestream

AWS DMS utilise les règles de mappage de table pour mapper les données de la source à la rubrique Timestream cible. Pour mapper des données à une rubrique cible, vous utilisez un type de règle de mappage de table appelé « mappage d'objet ». Vous utilisez le mappage d’objet pour définir la façon dont les enregistrements de données de la source sont mappés aux enregistrements de données publiés dans une rubrique Timestream.

Les rubriques Timestream ne disposent pas d’une structure prédéfinie autre que le fait d’avoir une clé de partition.

Note

Vous n'avez pas besoin d'utiliser le mappage d'objet. Vous pouvez utiliser un mappage de table standard pour différentes transformations. Cependant, le type de clé de partition suivra les comportements par défaut suivants :

  • La clé primaire est utilisée comme clé de partition pour le chargement complet.

  • Si aucun paramètre de tâche parallel-apply n’est utilisé, schema.table est utilisé comme clé de partition pour la CDC.

  • Si des paramètres de tâche parallel-apply sont utilisés, la clé primaire est utilisée comme clé de partition pour la CDC.

Pour créer une règle de mappage d'objet, spécifiez rule-type comme object-mapping. Cette règle spécifie le type de mappage d'objet que vous souhaitez utiliser. La structure de la règle est la suivante.

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": { "schema-name": "case-sensitive schema name", "table-name": "" } } ] }

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "timestream-map", "rule-action": "map-record-to-record", "target-table-name": "tablename", "object-locator": { "schema-name": "", "table-name": "" }, "mapping-parameters": { "timestream-dimensions": [ "column_name1", "column_name2" ], "timestream-timestamp-name": "time_column_name", "timestream-multi-measure-name": "column_name1or2", "timestream-hash-measure-name": true or false, "timestream-memory-duration": x, "timestream-magnetic-duration": y } } ] }

AWS DMS prend actuellement en charge map-record-to-record et map-record-to-document comme les seules valeurs valides pour le paramètre rule-action. Les valeurs map-record-to-record et map-record-to-document spécifient l'action par défaut d'AWS DMS sur les enregistrements qui ne sont pas exclus en raison de leur appartenance à la liste des attributs exclude-columns. Ces valeurs n'affectent en aucune façon les mappages d'attributs.

Utilisez map-record-to-record lorsque vous migrez une base de données relationnelle vers une rubrique Timestream. Ce type de règle utilise la valeur taskResourceId.schemaName.tableName de la base de données relationnelle comme clé de partition dans la rubrique Timestream, et crée un attribut pour chaque colonne de la base de données source. Lorsque vous utilisez map-record-to-record, pour toute colonne de la table source non répertoriée dans la liste d’attributs exclude-columns, AWS DMS crée un attribut correspondant dans la rubrique cible. Cet attribut correspondant est créé que la colonne source soit ou non utilisée dans un mappage d'attribut.

Une manière de comprendre map-record-to-record est de le voir en action. Dans cet exemple, imaginons que vous commencez avec une ligne de table d'une base de données relationnelle, présentant la structure et les données suivantes :

FirstName LastName StoreId HomeAddress HomePhone WorkAddress WorkPhone DateofBirth

Randy

Marsh

5

221B Baker Street

1234567890

31 Spooner Street, Quahog

9876543210

02/29/1988

Pour migrer ces informations à partir d’un schéma nommé Test vers une rubrique Timestream, vous créez des règles pour mapper les données à la rubrique cible. La règle suivante illustre ce mappage.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToTimestream", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "Test", "table-name": "Customers" } } ] }

L’exemple ci-dessous illustre le format d’enregistrement obtenu avec une rubrique Timestream et une clé de partition (en l’occurrence, taskResourceId.schemaName.tableName) à l’aide de notre exemple de données dans la rubrique Timestream cible :

{ "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" }

Limites d’utilisation d’Amazon Timestream comme cible pour AWS Database Migration Service

Les limites suivantes s’appliquent lorsque vous utilisez Amazon Timestream comme cible :

  • Dimensions et horodatages : Timestream utilise les dimensions et les horodatages des données sources comme clé primaire composite, et ne vous autorise pas à mettre à jour ces valeurs. Cela signifie que si vous modifiez l’horodatage ou les dimensions d’un enregistrement dans la base de données source, la base de données Timestream essaiera de créer un nouvel enregistrement. Si vous modifiez la dimension ou l’horodatage d’un enregistrement afin de le faire correspondre à celui d’un autre enregistrement existant, il est possible qu’AWS DMS mette à jour les valeurs de l’autre enregistrement au lieu de créer un nouvel enregistrement ou de mettre à jour l’enregistrement correspondant précédent.

  • Commandes DDL : la version actuelle d’AWS DMS ne prend en charge que les commandes DDL CREATE TABLE et DROP TABLE.

  • Limites des enregistrements : Timestream impose des limites pour les enregistrements (taille des enregistrements et des mesures, par exemple). Pour plus d’informations, consultez Quotas dans le Guide du développeur Amazon Timestream.

  • Suppression des enregistrements et valeurs nulles : Timestream ne prend pas en charge la suppression des enregistrements. Pour prendre en charge la migration des enregistrements supprimés de la source, AWS DMS efface les champs correspondants dans les enregistrements de la base de données Timestream cible. AWS DMS remplace les valeurs des champs de l’enregistrement cible correspondant par 0 pour les champs numériques, null pour les champs de texte et false pour les champs booléens.

  • Timestream en tant que cible ne prend pas en charge les sources qui ne sont pas des bases de données relationnelles (SGBDR).

  • AWS DMS prend en charge Timestream en tant que cible dans les régions suivantes uniquement :

    • USA Est (Virginie du Nord)

    • USA Est (Ohio)

    • USA Ouest (Oregon)

    • Europe (Irlande)

    • Europe (Francfort)

    • Asie-Pacifique (Sydney)

    • Asia Pacific (Tokyo)

  • Timestream en tant que cible ne prend pas en charge la valeur TRUNCATE_BEFORE_LOAD pour le paramètre TargetTablePrepMode. Nous vous recommandons d’utiliser DROP_AND_CREATE pour ce paramètre.