Migration de données d'Amazon DynamoDB vers Oracle NoSQL Database Cloud Service

Il existe deux options pour migrer des données d'Amazon DynamoDB vers Oracle NoSQL Database Cloud Service à l'aide de l'outil de migration Oracle NoSQL Database :

  • Utiliser le schéma Oracle NoSQL par défaut
  • Utiliser un schéma personnalisé

Les deux options nécessitent un fichier JSON de configuration qui inclut des informations sur les fichiers source et la base de données cible (récepteur). Dans les deux scénarios, la source est des fichiers JSON au format Amazon DynamoDB stockés dans Amazon S3 Object Storage, tandis que la cible est la base de données Oracle NoSQL Database Cloud Service. Etant donné qu'Amazon DynamoDB est une base de données sans schéma, nous vous recommandons d'effectuer une migration à l'aide d'un schéma Oracle NoSQL par défaut.

Migrer des données à l'aide du schéma par défaut Oracle NoSQL

Lors de la migration à l'aide du schéma par défaut, une table Oracle NoSQL Database Cloud Service est créée avec deux ou trois colonnes : clé de partitionnement, clé de tri (facultatif) et document. La clé de partitionnement et la clé de tri sont migrées de la table Amazon DynamoDB vers la table Oracle NoSQL Database Cloud Service. Tous les attributs Amazon DynamoDB restants sont agrégés au format JSON dans la colonne de document.

Les étapes suivantes expliquent comment migrer des données à l'aide du schéma par défaut Oracle NoSQL.

  1. Dans la console AWS, créez une clé d'accès (si elle n'existe pas déjà) pour l'utilisateur qui accédera à Amazon S3 Object Storage où les données Amazon DynamoDB sont exportées.
    Nous vous recommandons de créer un utilisateur et une clé d'accès pour l'utilisateur. Ne créez pas de clé d'accès pour l'utilisateur root du compte Amazon. Lors de la création d'une clé d'accès, un cas d'emploi doit être fourni. Veillez à utiliser le cas d'emploi "Application exécutée en dehors d'AWS : vous prévoyez d'utiliser cette clé d'accès pour authentifier les charges de travail exécutées dans votre centre de données ou toute autre infrastructure en dehors d'AWS qui a besoin d'accéder à vos ressources AWS". Pour plus d'informations sur la création d'un utilisateur ou de clés d'accès, consultez la section Consulter la documentation.
    Notez la clé d'accès et la clé d'accès secrète. Ils ne seront plus affichés.
  2. Créez un bucket Amazon S3 s'il n'en existe pas déjà un. Notez le nom, la région et l'URL du bucket.
    Pour plus d'informations, reportez-vous à Création d'un bucket dans la section Consulter la documentation.
  3. Sélectionnez le service Amazon DynamoDB, puis la table Amazon DynamoDB à migrer vers Oracle NoSQL Database Cloud Service.
    Sous Informations générales, notez le nom et le type de la clé de partitionnement et des attributs de clé de tri.
  4. Cliquez sur Exporter vers S3 dans le menu du service Amazon DynamoDB, puis cliquez sur Exporter vers S3.
  5. Sélectionnez le nom de la table à exporter, puis le nom du bucket dans lequel les données seront exportées (nom du bucket créé à l'étape 2).
  6. Configurer les paramètres d'export :
    • Sélectionnez Export complet.
    • Sélectionnez DynamoDB JSON pour le format de fichier exporté.
    • Sélectionnez la clé Amazon S3 par défaut pour le cryptage.
    • Activez PITR (récupération à un point dans le temps). Requis pour la table à exporter.
  7. Cliquez sur Exporter.
    Notez l'ID export pendant la progression de l'export. Pour plus d'informations sur l'export, reportez-vous à DynamoDB data export to Amazon S3 : how it works.
  8. Une fois l'export terminé, accédez à la console AWS et sélectionnez le service Amazon S3.
  9. Sélectionnez le bucket dans lequel les données ont été exportées.
    Un répertoire a été créé dans le bucket nommé AWSDynamoDB/ExportID. Un sous-répertoire nommé data est créé dans ce répertoire qui contient une série de fichiers JSON compressés GZIP avec les données de table Amazon DynamoDB exportées. Pour plus d'informations sur les fichiers JSON formatés, reportez-vous à Format de sortie d'export de table DynamoDB dans la section Consulter la documentation.
  10. Dans la console OCI, créez une clé d'API pour l'utilisateur OCI qui sera propriétaire de la table Oracle NoSQL Database Cloud Service cible. Cet utilisateur doit disposer des droits d'accès permettant de créer et de gérer la table Oracle NoSQL Database Cloud Service.
    Notez l'OCID utilisateur, l'OCID de location, l'empreinte et l'ID de région OCI. Enregistrez les clés privées et publiques dans les fichiers PEM. Cette clé d'API est utilisée par Oracle NoSQL Database Migrator pour télécharger les fichiers JSON formatés Amazon DynamoDB vers la table.
  11. Créez un compartiment pour la table Oracle NoSQL Database Cloud Service, s'il n'en existe pas déjà un.
    Notez le nom du compartiment.
  12. Créez une instance de calcul.
    Cette instance de calcul exécutera le logiciel Oracle NoSQL Database Migrator. Instance Compute Toujours gratuit (VM.Standard.E4). Flex avec 1 OCPU et 16 Go de mémoire) est suffisant et rentable.
  13. Configurez l'instance de calcul avec Oracle Linux 8.
  14. Utilisez SSH pour vous connecter en tant que opc user à la nouvelle instance de calcul afin d'installer Java 11, comme suit :
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Téléchargez les fichiers binaires Oracle NoSQL Database Migrator 1.5.0 si ce n'est pas déjà fait. Pour plus d'informations, reportez-vous à la section Vérification de la configuration logicielle requise.
  16. Utilisez SCP pour télécharger le fichier ZIP de l'outil de migration Oracle NoSQL Database vers le répertoire de base opc user's de la nouvelle instance de calcul.
  17. Utilisez SSH pour vous connecter en tant que opc user à l'instance de calcul afin de décompresser le logiciel de migration Oracle NoSQL Database téléchargé à l'étape précédente. Le contenu du fichier est décompressé dans un nouveau répertoire nommé /home/opc/nosql-migrator-1.5.0. Décompressez le fichier comme suit :
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. Utilisez SCP pour télécharger le fichier PEM de clé privée de l'étape 10 vers le répertoire de base de l'instance de calcul opc user où Oracle NoSQL Database Migrator a été décompressé à l'étape précédente.
  19. Utilisez SSH pour vous connecter en tant que opc user à l'instance de calcul afin de créer un fichier d'identité OCI. Créez le fichier d'identité OCI dans le répertoire /home/opc/.oci avec le contenu suivant :
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. En tant que opc user dans l'instance de calcul, créez des fichiers de configuration et d'informations d'identification AWS. Ajoutez ces fichiers dans le répertoire /home/opc/.aws avec le contenu suivant :
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. Dans l'instance de calcul, accédez au sous-répertoire nosql-migrator-1.5.0. Créez un fichier JSON de configuration de migration qui inclut des informations sur la source et la cible (récepteur) comme suit :
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
     "source" : {
     "type" : "aws_s3",
     "format" : "dynamodb_json",
     "s3URL" : "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.c
    om/AWSDynamoDB/export_ID/data",
     "credentials" : "/home/opc/.aws/credentials",
     "credentialsProfile" : "default"
     },
     "sink" : {
     "type" : "nosqldb_cloud",
     "endpoint" : "https://nosql.oci_region_ID_from_step_11.oci.oraclecloud.com",
     "table" : "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
     "schemaInfo" : {
     "defaultSchema" : true,
     "DDBPartitionKey" : "partition_key_name_from_step_3:type_from_step_3",
     "DDBSortKey" : "sort_key_name_from_step_3:type_from_step_3",
     "readUnits" : 50,
     "writeUnits" : 50,
     "storageSize" : 25
     },
     "compartment" : "compartment_name_from_step_11",
     "includeTTL" : false,
     "credentials" : "/home/opc/.oci/config",
     "credentialsProfile" : "DEFAULT",
     "writeUnitsPercent" : 90,
     "overwrite" : true,
     "requestTimeoutMs" : 5000
     },
     "abortOnError" : false,
     "migratorVersion" : "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  22. Exécutez la migration de données à l'aide d'Oracle NoSQL Database Migrator et du fichier JSON de configuration de migration créé à l'étape précédente comme suit :
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_def_schema.json
    Le travail de migration crée une table de migration Oracle NoSQL Database à l'aide du schéma par défaut, puis lit les fichiers JSON formatés Amazon DynamoDB à partir du bucket Object Storage Amazon S3 pour importer les données de ces fichiers vers la table nouvellement créée.

Migrer des données à l'aide d'un schéma personnalisé

Lors de l'utilisation d'un schéma personnalisé pour la migration, la nouvelle table Oracle NoSQL Database Cloud Service doit être définie de la même manière que le schéma de la table Amazon DynamoDB, à l'aide d'un langage DDL (Table Data Definition Language) Oracle NoSQL Database Cloud Service. Les noms et types d'attribut de la nouvelle table doivent être identiques aux noms et types d'attribut de la table Amazon DynamoDB. La clé de partitionnement et la clé de tri ont une limite de 2048 et 1024 octets respectivement, tandis que dans Oracle NoSQL Database Cloud Service, ces clés sont limitées à 64 octets.

  1. Dans la console AWS, créez une clé d'accès (si elle n'existe pas déjà) pour l'utilisateur qui accédera à Amazon S3 Object Storage où les données Amazon DynamoDB sont exportées.
    Nous vous recommandons de créer un utilisateur et une clé d'accès pour l'utilisateur. Ne créez pas de clé d'accès pour l'utilisateur root du compte Amazon. Lors de la création d'une clé d'accès, un cas d'emploi doit être fourni. Veillez à utiliser le cas d'emploi "Application exécutée en dehors d'AWS : vous prévoyez d'utiliser cette clé d'accès pour authentifier les charges de travail exécutées dans votre centre de données ou toute autre infrastructure en dehors d'AWS qui a besoin d'accéder à vos ressources AWS". Pour plus d'informations sur la création d'un utilisateur ou de clés d'accès, reportez-vous à la section Consulter la documentation.
    Notez la clé d'accès et la clé d'accès secrète générées, car elles ne seront plus affichées.
  2. Créez un bucket Amazon S3 s'il n'en existe pas déjà un. Notez le nom, la région et l'URL du bucket.
    Pour plus d'informations, reportez-vous à Création d'un bucket dans la section Consulter la documentation.
  3. Sélectionnez le service Amazon DynamoDB, puis la table Amazon DynamoDB à migrer vers Oracle NoSQL Database Cloud Service.
    Sous Informations générales, notez le nom et le type de la clé de partitionnement et des attributs de clé de tri. Notez les autres attributs de la table et leurs types.
  4. Cliquez sur Exporter vers S3 dans le menu du service Amazon DynamoDB, puis cliquez sur Exporter vers S3.
  5. Sélectionnez le nom de la table à exporter, puis le nom du bucket dans lequel les données seront exportées (nom du bucket créé à l'étape 2).
  6. Configurer les paramètres d'export :
    • Sélectionnez Export complet.
    • Sélectionnez DynamoDB JSON pour le format de fichier exporté.
    • Sélectionnez la clé Amazon S3 par défaut pour le cryptage.
    • Activez PITR (récupération à un point dans le temps). Requis pour la table à exporter.
  7. Cliquez sur Exporter.
    Notez l'ID export pendant la progression de l'export. Pour plus d'informations sur l'export, reportez-vous à DynamoDB data export to Amazon S3 : how it works.
  8. Une fois l'export terminé, accédez à la console AWS et sélectionnez le service Amazon S3.
  9. Sélectionnez le bucket dans lequel les données ont été exportées.
    Un répertoire a été créé dans le bucket nommé AWSDynamoDB/ExportID. Un sous-répertoire nommé data est créé dans ce répertoire qui contient une série de fichiers JSON compressés GZIP avec les données de table Amazon DynamoDB exportées. Pour plus d'informations sur les fichiers JSON formatés, reportez-vous à Format de sortie d'export de table DynamoDB dans la section Consulter la documentation.
  10. Dans la console OCI, créez une clé d'API pour l'utilisateur OCI qui sera propriétaire de la table Oracle NoSQL Database Cloud Service cible. Cet utilisateur doit disposer des droits d'accès permettant de créer et de gérer la table Oracle NoSQL Database Cloud Service.
    Notez l'OCID utilisateur, l'OCID de location, l'empreinte et l'ID de région OCI. Enregistrez les clés privées et publiques dans les fichiers PEM. Cette clé d'API est utilisée par Oracle NoSQL Database Migrator pour télécharger les fichiers JSON formatés Amazon DynamoDB vers la table.
  11. Créez un compartiment pour la table Oracle NoSQL Database Cloud Service, s'il n'en existe pas déjà un.
    Notez le nom du compartiment.
  12. Créez une instance de calcul.
    Cette instance de calcul exécutera le logiciel Oracle NoSQL Database Migrator. Instance Compute Toujours gratuit (VM.Standard.E4). Flex avec 1 OCPU et 16 Go de mémoire) est suffisant et rentable.
  13. Configurez l'instance de calcul avec Oracle Linux 8.
  14. Utilisez SSH pour vous connecter en tant que opc user à la nouvelle instance de calcul afin d'installer Java 11, comme suit :
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Téléchargez les fichiers binaires Oracle NoSQL Database Migrator 1.5.0 si ce n'est pas déjà fait. Pour plus d'informations, reportez-vous à la section Vérification de la configuration logicielle requise.
  16. Utilisez SCP pour télécharger le fichier ZIP de l'outil de migration Oracle NoSQL Database vers le répertoire de base opc user's de la nouvelle instance de calcul.
  17. Utilisez SSH pour vous connecter en tant que opc user à l'instance de calcul afin de décompresser le logiciel de migration Oracle NoSQL Database téléchargé à l'étape précédente. Le contenu du fichier est décompressé dans un nouveau répertoire nommé /home/opc/nosql-migrator-1.5.0. Décompressez le fichier comme suit :
    [opc@oci-compute ~]$ unzip V1033765-1.zip
    [opc@oci-compute ~]$ ls -l
    total 61964
    drwxr-xr-x. 3 opc opc 4096 Feb 23 20:32 nosql-migrator-1.5.0
    -rw-r--r--. 1 opc opc 63446080 Feb 14 19:26 V1033765-01.zip
    [opc@jc-bastion-phx migrator]$
  18. Utilisez SCP pour télécharger le fichier PEM de clé privée de l'étape 10 vers le répertoire de base de l'instance de calcul opc user où Oracle NoSQL Database Migrator a été décompressé à l'étape précédente.
  19. Utilisez SSH pour vous connecter en tant que opc user à l'instance de calcul afin de créer un fichier d'identité OCI. Créez le fichier d'identité OCI dans le répertoire /home/opc/.oci avec le contenu suivant :
    [opc@oci-compute ~]$ cat .oci/config 
    [DEFAULT]
    user=user_OCID_from_step_10
    fingerprint=fingerprint_from_step_10
    tenancy=tenancy_OCID_from_step_10
    region=region_ID_from_step_10
    key_file=full_path_to_private_key_PEM_file_uploaded_step_18
  20. En tant que opc user dans l'instance de calcul, créez des fichiers de configuration et d'informations d'identification AWS. Ajoutez ces fichiers dans le répertoire /home/opc/.aws avec le contenu suivant :
    [opc@oci-compute .aws]$ cat config
    [default]
    region=bucket_region_from_step_2
    [opc@oci-compute .aws]$ cat credentials
    [default]
    aws_access_key_id=aws_access_key_id_from_step_1
    aws_secret_access_key=aws_access_key_secret_from_step_1
  21. Remplacez le répertoire par le sous-répertoire nosql-migrator-1.5.0, puis créez une instruction DDL Oracle NoSQL Database Cloud Service pour créer une table Oracle NoSQL Database Cloud Service avec des attributs similaires à ceux collectés à partir de la table Amazon DynamoDB à l'étape 3. Voici un exemple d'instruction DDL de création de table Oracle NoSQL Database Cloud Service :
    [opc@oci-compute nosql-migrator-1.5.0]$ cat /home/opc/table_name.ddl 
    CREATE TABLE IF NOT EXISTS table_name (partition_key_name_from_step_3 
    type,sort_key_name_from_step_3 type, attribute_1 type, attribute_2 
    type, PRIMARY 
    KEY(SHARD(partition_key_name_from_step_3),sort_key_name_from_step_3))
  22. Dans l'instance de calcul, accédez au sous-répertoire nosql-migrator-1.5.0. Créez un fichier JSON de configuration de migration qui inclut des informations sur la source et la cible (récepteur) comme suit :
    [opc@oci-compute nosql-migrator-1.5.0]$ cat migrator-config-dynamodb-bucket_custom-schema.json 
    {
      "source": {
        "type": "aws_s3",
        "format": "dynamodb_json",
        "s3URL": "https://bucket_name_from_step_2.s3.bucket_region_from_step_2.amazonaws.com/AWSDynamoDB/export_ID_from_step_7/data",
        "credentials": "/home/opc/.aws/credentials",
        "credentialsProfile": "default"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_10.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name",
        "schemaInfo": {
          "schemaPath": "/home/opc/nosql-migrator-1.5.0/table_name.ddl_from_step_21",
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_11",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "abortOnError": false,
      "migratorVersion": "1.5.0"
    }
  23. Exécutez la migration de données à l'aide d'Oracle NoSQL Database Migrator et du fichier JSON de configuration de migration créé à l'étape précédente comme suit :
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_custom_schema.json
    Le travail de migration créera une table de migration Oracle NoSQL Database à l'aide du DDL de schéma personnalisé défini à l'étape 21. Il lira ensuite les fichiers JSON formatés Amazon DynamoDB à partir du bucket Object Storage Amazon S3, puis importera les données de ces fichiers dans la table nouvellement créée.