Migración de datos de MongoDB a Oracle NoSQL Database Cloud Service

Hay dos opciones para migrar datos de MongoDB a Oracle NoSQL Database Cloud Service mediante el migrador de Oracle NoSQL Database:

  • Uso del esquema por defecto NoSQL de Oracle
  • Uso de un esquema personalizado

Ambas opciones necesitan un archivo JSON de configuración que incluya información sobre los archivos de origen y la base de datos de destino (disipador). En ambos casos, el origen es archivos JSON con formato MongoDB almacenados en OCI Object Storage, mientras que el destino es la base de datos de Oracle NoSQL Database Cloud Service. El archivo JSON de configuración debe incluir la sección transforms al utilizar un esquema personalizado.

Migración de datos mediante el esquema por defecto NoSQL de Oracle

Al migrar mediante el esquema por defecto, se crea una nueva tabla de Oracle NoSQL Database Cloud Service con dos columnas: id y document. Para cada entrada del archivo de exportación JSON MongoDB, la columna _id se migra a id en la tabla Oracle NoSQL Database Cloud Service, mientras que el resto de columnas del archivo de exportación JSON MongoDB se agregan en la nueva columna document.

En los siguientes pasos se describe cómo migrar datos mediante el esquema por defecto NoSQL de Oracle.

  1. Conéctese a MongoDB y ejecute mongoexport para exportar la recopilación de datos a archivos JSON con formato MongoDB. Por ejemplo:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Dividir archivos JSON MongoDB con más de 13 500 registros mediante la utilidad de división de Oracle Linux para dividir el archivo JSON MongoDB en varios archivos JSON de 13 500 registros cada uno. Por ejemplo:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Conéctese a la consola de OCI para crear un cubo de OCI Object Storage si aún no existe uno.
    Observe el nombre del cubo y el espacio de nombres
  4. Utilice la consola de OCI o la API de REST para cargar los archivos del paso 2 en el cubo del paso 3.
  5. En la consola de OCI, cree una clave de API para el usuario de OCI que será propietario de la tabla de destino Oracle NoSQL Database Cloud Service. Este usuario debe tener permisos para crear y gestionar la tabla.
    Observe el OCID de usuario, el OCID de arrendamiento, la huella y el ID de región de OCI. Guarde las claves privadas y públicas en los archivos PEM. Oracle NoSQL Database Migrator utiliza esta clave de API para recuperar los archivos JSON con formato MongoDB, crear una nueva tabla y, a continuación, cargar los datos de los archivos JSON MongoDB en la tabla.
  6. Cree un compartimento para la tabla de Oracle NoSQL Database Cloud Service si aún no existe uno.
    Observe el nombre de compartimento.
  7. Cree una instancia informática.
    Esta instancia informática ejecutará el software de migración de Oracle NoSQL Database. Instancia informática siempre gratuita (VM.Standard.E4). Flexible con 1 OCPU y 16 GB de memoria) es suficiente y rentable.
  8. Utilice SSH para conectarse como opc user a la nueva instancia informática para instalar Java 11 de la siguiente manera:
    [opc@oci-compute ~]$ sudo yum install java-11
  9. Descargue los binarios de Oracle NoSQL Database Migrator 1.5.0 si aún no lo ha hecho. Consulte la sección Revisar requisitos de software para obtener detalles.
  10. Utilice SCP para cargar el archivo ZIP de Oracle NoSQL Database Migrator en el directorio raíz opc user's de la nueva instancia informática.
  11. Utilice SSH para conectarse como opc user a la instancia informática y descomprimir el software Oracle NoSQL Database Migrator descargado en el paso anterior. El contenido del archivo se descomprime en un nuevo directorio denominado /home/opc/nosql-migrator-1.5.0. Elimine el archivo de la siguiente manera:
    [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. Utilice SCP para cargar el archivo PEM de clave privada del paso 5 en el directorio raíz de opc user de la instancia informática en la que se ha descomprimido Oracle NoSQL Database Migrator en el paso anterior.
  13. Utilice SSH para conectarse como opc user a la instancia informática y crear un archivo de identidad de OCI. Cree el archivo de identidad de OCI en el directorio /home/opc/.oci con el siguiente contenido:
    [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. En la instancia informática, cambie el directorio al subdirectorio nosql-migrator-1.5.0. Cree un archivo JSON de configuración de migración que incluya información sobre el origen y el destino (disipador) de la siguiente manera:
    [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. Ejecute la migración de datos con Oracle NoSQL Database Migrator y el archivo JSON de configuración de migración creado en el paso anterior de la siguiente manera:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    El trabajo de migración creará una nueva tabla de Oracle NoSQL Database Migrator mediante el esquema por defecto y, a continuación, leerá los archivos JSON con formato MongoDB de OCI Object Storage para, a continuación, importar los datos de esos archivos a la tabla recién creada.

Migración de datos mediante un esquema personalizado

Al utilizar un esquema personalizado para migrar, la nueva tabla de Oracle NoSQL Database Cloud Service se debe definir de forma similar al esquema de la tabla MongoDB. El archivo de configuración del migrador de base de datos NoSQL debe incluir una entrada de transformación que indique a NoSQL Database Migrator cómo convertir la columna _id a id en la nueva tabla.

En los siguientes pasos se describe cómo migrar datos mediante un esquema personalizado NoSQL de Oracle.

  1. Conéctese a MongoDB y ejecute mongoexport para exportar la recopilación de datos a archivos JSON con formato MongoDB. Por ejemplo:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Dividir archivos JSON MongoDB con más de 13 500 registros mediante la utilidad de división de Oracle Linux para dividir el archivo JSON MongoDB en varios archivos JSON de 13 500 registros cada uno. Por ejemplo:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Utilice el comando cat o vi de Oracle Linux para examinar los archivos JSON con formato MongoDB generados. Tenga en cuenta los siguientes puntos:
    • Observe los nombres y tipos de dato de cada columna. Utilice esta información para crear un lenguaje de definición de datos (DDL) de esquema de tabla de Oracle NoSQL Database Cloud Service.
    • La primera columna debe utilizar el nombre id. Las columnas restantes deben tener el mismo nombre y tipo que en el archivo JSON MongoDB.
  4. Guarde el DDL de esquema en un archivo. El DDL de esquema debe ser similar al siguiente:
    $ 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. Conéctese a la consola de OCI para crear un cubo de OCI Object Storage si aún no existe uno.
    Observe el nombre del cubo y el espacio de nombres.
  6. Utilice la consola de OCI o la API de REST para cargar los archivos de los pasos 2 y 3 en el nuevo cubo creado en el paso 5.
  7. En la consola de OCI, cree una clave de API para el usuario de OCI que será propietario de la tabla de destino Oracle NoSQL Database Cloud Service. Este usuario debe tener permisos para crear y gestionar la tabla.
    Observe el OCID de usuario, el OCID de arrendamiento, la huella y el ID de región de OCI. Guarde las claves privadas y públicas en los archivos PEM. Oracle NoSQL Database Migrator utiliza esta clave de API para recuperar los archivos JSON con formato MongoDB, crear una nueva tabla y, a continuación, cargar los datos de los archivos JSON MongoDB en la tabla.
  8. Cree un compartimento para la tabla de Oracle NoSQL Database Cloud Service si aún no existe uno.
    Observe el nombre de compartimento.
  9. Cree una instancia informática.
    Esta instancia informática ejecutará el software de migración de Oracle NoSQL Database. Instancia informática siempre gratuita (VM.Standard.E4). Flexible con 1 OCPU y 16 GB de memoria) es suficiente y rentable.
  10. Utilice SSH para conectarse como opc user a la nueva instancia informática para instalar Java 11 de la siguiente manera:
    [opc@oci-compute ~]$ sudo yum install java-11
  11. Descargue los binarios de Oracle NoSQL Database Migrator 1.5.0 si aún no lo ha hecho. Consulte la sección Revisar requisitos de software para obtener detalles.
  12. Utilice SCP para cargar el archivo ZIP de Oracle NoSQL Database Migrator en el directorio raíz opc user's de la nueva instancia informática.
  13. Utilice SSH para conectarse como opc user a la instancia informática y descomprimir el software Oracle NoSQL Database Migrator descargado en el paso anterior. El contenido del archivo se descomprime en un nuevo directorio denominado /home/opc/nosql-migrator-1.5.0. Elimine el archivo de la siguiente manera:
    [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. Utilice SCP para cargar el archivo PEM de clave privada del paso 7 en el directorio raíz de opc user de la instancia informática en la que se ha descomprimido Oracle NoSQL Database Migrator en el paso anterior.
  15. Utilice SSH para conectarse como opc user a la instancia informática y crear un archivo de identidad de OCI. Cree el archivo de identidad de OCI en el directorio /home/opc/.oci con el siguiente contenido:
    [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. En la instancia informática, cambie el directorio al subdirectorio nosql-migrator-1.5.0. Cree un archivo JSON de configuración de migración que incluya información sobre el origen y el destino (disipador) de la siguiente manera:
    [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. Ejecute la migración de datos con Oracle NoSQL Database Migrator y el archivo JSON de configuración de migración creado en el paso anterior de la siguiente manera:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    El trabajo de migración creará una nueva tabla de Oracle NoSQL Database Migrator mediante el esquema personalizado y, a continuación, leerá los archivos JSON con formato MongoDB de OCI Object Storage para, a continuación, importar los datos de esos archivos a la tabla recién creada.