Migration de données de MongoDB vers Oracle NoSQL Database Cloud Service

Il existe deux options pour migrer des données de MongoDB 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 MongoDB stockés dans OCI Object Storage, tandis que la cible est la base de données Oracle NoSQL Database Cloud Service. Le fichier JSON de configuration doit inclure la section transforms lors de l'utilisation d'un schéma personnalisé.

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 colonnes : id et document. Pour chaque entrée du fichier d'export JSON MongoDB, la colonne _id est migrée vers id dans la table Oracle NoSQL Database Cloud Service, tandis que les autres colonnes du fichier d'export JSON MongoDB sont agrégées dans la nouvelle colonne document.

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

  1. Connectez-vous à MongoDB et exécutez mongoexport pour exporter la collecte de données vers des fichiers JSON au format MongoDB. Par exemple :
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Fractionnez les fichiers JSON MongoDB avec plus de 13 500 enregistrements à l'aide de l'utilitaire de fractionnement Oracle Linux pour diviser le fichier JSON MongoDB en plusieurs fichiers JSON de 13 500 enregistrements chacun. Par exemple :
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Connectez-vous à la console OCI pour créer un bucket OCI Object Storage s'il n'en existe pas déjà un.
    Notez le nom et l'espace de noms du bucket
  4. Utilisez la console OCI ou l'API REST pour télécharger les fichiers de l'étape 2 vers le bucket de l'étape 3.
  5. 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 autorisations nécessaires pour créer et gérer la table.
    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 extraire les fichiers JSON formatés MongoDB, créer une table, puis télécharger les données des fichiers JSON MongoDB vers la table.
  6. 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.
  7. 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.
  8. 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
  9. 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.
  10. 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.
  11. 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]$
  12. Utilisez SCP pour télécharger le fichier PEM de clé privée de l'étape 5 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.
  13. 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_5
    fingerprint=fingerprint_from_step_5
    tenancy=tenancy_OCID_from_step_5
    region=region_ID_from_step_5
    key_file=full_path_to_private_key_PEM_file_uploaded_step_12
  14. 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-mongodbjson-bucket_def-schema.json 
    {
       "source":{
          "type":"object_storage_oci",
          "format":"mongodb_json",
          "endpoint":"https://objectstorage.region_ID_from_step_5.oraclecloud.com",
          "namespace":"namespace_from_step_3",
          "bucket":"bucket_name_from_step_3",
          "prefix":"source_json_filename_or_prefix_from_step_2",
          "credentials":"/home/opc/.oci/config",
          "credentialsProfile":"default"
       },
       "sink":{
          "type":"nosqldb_cloud",
          "endpoint":"https://nosql.oci_region_ID_from_step_5.oci.oraclecloud.com",
          "table":"new_Oracle_NoSQL_Database_Cloud_Service_table_name",
          "schemaInfo":{
             "defaultSchema":true,
             "readUnits":50,
             "writeUnits":50,
             "storageSize":25
          },
          "compartment":"compartment_name_from_step_6",
          "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]$
  15. 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-mongodbjson-bucket_def_schema.json
    Le travail de migration créera une table de migration Oracle NoSQL Database à l'aide du schéma par défaut, puis lira les fichiers JSON formatés MongoDB à partir d'OCI Object Storage afin d'importer les données de ces fichiers vers la nouvelle table créée.

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

Lorsque vous utilisez un schéma personnalisé à migrer, 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 MongoDB. Le fichier de configuration de Database Migrator NoSQL doit inclure une entrée de transformation indiquant à NoSQL Database Migrator comment convertir la colonne _id en id dans la nouvelle table.

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

  1. Connectez-vous à MongoDB et exécutez mongoexport pour exporter la collecte de données vers des fichiers JSON au format MongoDB. Par exemple :
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Fractionnez les fichiers JSON MongoDB avec plus de 13 500 enregistrements à l'aide de l'utilitaire de fractionnement Oracle Linux pour diviser le fichier JSON MongoDB en plusieurs fichiers JSON de 13 500 enregistrements chacun. Par exemple :
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Utilisez la commande Oracle Linux cat ou vi pour examiner les fichiers JSON formatés MongoDB générés. Prenez en compte les points suivants :
    • Notez les noms et les types de données de chaque colonne. Utilisez ces informations pour créer un langage DDL (Data Definition Language) de schéma de table Oracle NoSQL Database Cloud Service.
    • La première colonne doit être nommée id. Les colonnes restantes doivent avoir le même nom et le même type que dans le fichier JSON MongoDB.
  4. Enregistrez le DDL de schéma dans un fichier. Le langage DDL du schéma doit ressembler à ce qui suit :
    $ cat collection_name.ddl
    CREATE TABLE table_name ( id string, column_2_name column_2_type, column_n_name column_n_type, PRIMARY KEY ( id ) )
  5. Connectez-vous à la console OCI pour créer un bucket OCI Object Storage s'il n'en existe pas déjà un.
    Notez le nom et l'espace de noms du bucket.
  6. Utilisez la console OCI ou l'API REST pour télécharger les fichiers des étapes 2 et 3 vers le bucket créé à l'étape 5.
  7. 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 autorisations nécessaires pour créer et gérer la table.
    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 extraire les fichiers JSON formatés MongoDB, créer une table, puis télécharger les données des fichiers JSON MongoDB vers la table.
  8. 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.
  9. 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.
  10. 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
  11. 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.
  12. 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.
  13. 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]$
  14. Utilisez SCP pour télécharger le fichier PEM de clé privée de l'étape 7 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.
  15. 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_7
    fingerprint=fingerprint_from_step_7
    tenancy=tenancy_OCID_from_step_7
    region=region_ID_from_step_7
    key_file=full_path_to_private_key_PEM_file_uploaded_step_14
  16. 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-mongodbjson-bucket-src_schema.json 
    {
      "source": {
        "type": "object_storage_oci",
        "format": "mongodb_json",
        "endpoint": "https://objectstorage.region_ID_from_step_7.oraclecloud.com",
        "namespace": "namespace_from_step_5",
        "bucket": "bucket_name_from_step_5",
        "prefix": "source_json_filename_or_prefix_from_step_2",
        "schemaInfo": {
          "schemaObject": "collection_name_ddl_from_step_3"
        },
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT"
      },
      "sink": {
        "type": "nosqldb_cloud",
        "endpoint": "https://nosql.oci_region_ID_from_step_7.oci.oraclecloud.com",
        "table": "new_Oracle_NoSQL_Database_Cloud_Service_table_name_from_step_3",
        "schemaInfo": {
          "useSourceSchema": true,
          "readUnits": 50,
          "writeUnits": 50,
          "storageSize": 25
        },
        "compartment": "compartment_name_from_step_8",
        "includeTTL": false,
        "credentials": "/home/opc/.oci/config",
        "credentialsProfile": "DEFAULT",
        "writeUnitsPercent": 90,
        "overwrite": true,
        "requestTimeoutMs": 5000
      },
      "transforms": {
        "renameFields": {
          "_id": "id"
        }
      },
      "abortOnError": true,
      "migratorVersion": "1.5.0"
    }
    [opc@oci-compute nosql-migrator-1.5.0]$
  17. 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-mongodbjson-bucket-src_schema.json
    Le travail de migration créera une table de migration Oracle NoSQL Database à l'aide du schéma personnalisé, puis lira les fichiers JSON formatés MongoDB à partir d'OCI Object Storage afin d'importer les données de ces fichiers vers la nouvelle table créée.