Migrar Dados de MongoDB para o Oracle NoSQL Database Cloud Service

Há duas opções para migrar dados de MongoDB para o Oracle NoSQL Database Cloud Service usando o Oracle NoSQL Database Migrator:

  • Usando o esquema padrão NoSQL da Oracle
  • Usando um esquema personalizado

Ambas as opções exigem um arquivo JSON de configuração que inclua informações sobre os arquivos de origem e o banco de dados de destino (sink). Em ambos os cenários, a origem são arquivos JSON formatados em MongoDB armazenados no OCI Object Storage, enquanto o destino é o banco de dados Oracle NoSQL Database Cloud Service. O arquivo JSON de configuração deve incluir a seção transforms ao usar um esquema personalizado.

Migrar Dados Usando o Esquema Padrão NoSQL da Oracle

Ao migrar usando o esquema padrão, uma nova tabela do Oracle NoSQL Database Cloud Service é criada com duas colunas: id e document. Para cada entrada no arquivo de exportação JSON MongoDB, a coluna _id é migrada para id na tabela do Oracle NoSQL Database Cloud Service, enquanto as outras colunas do arquivo de exportação JSON MongoDB são agregadas na nova coluna document.

As etapas a seguir descrevem como migrar dados usando o esquema padrão NoSQL da Oracle.

  1. Faça log-in em MongoDB e execute mongoexport para exportar a coleta de dados para arquivos JSON formatados em MongoDB. Por exemplo:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Dividir arquivos JSON MongoDB com mais de 13.500 registros usando o utilitário de divisão do Oracle Linux para dividir o arquivo JSON MongoDB em vários arquivos JSON de 13.500 registros cada. Por exemplo:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Faça log-in na console do OCI para criar um Bucket do OCI Object Storage se ainda não existir um.
    Observe o nome e o namespace do bucket
  4. Use a console do OCI ou a API REST para fazer upload do(s) arquivo(s) da etapa 2 para o bucket na etapa 3.
  5. Na console do OCI, crie uma chave de API para o usuário do OCI que será proprietário da tabela de destino do Oracle NoSQL Database Cloud Service. Esse usuário deve ter permissões para criar e gerenciar a tabela.
    Observe o OCID do usuário, o OCID da tenancy, a impressão digital e o ID da região do OCI. Salve as chaves privada e pública nos arquivos PEM. Essa chave de API é usada pelo Oracle NoSQL Database Migrator para recuperar os arquivos JSON formatados em MongoDB, criar uma nova tabela e fazer upload dos dados dos arquivos JSON MongoDB para a tabela.
  6. Crie um compartimento para a tabela do Oracle NoSQL Database Cloud Service se ainda não existir um.
    Observe o nome do compartimento.
  7. Crie uma instância de computação.
    Essa instância de computação executará o software Oracle NoSQL Database Migrator. Uma instância de Computação Always Free (VM.Standard.E4). Flex com 1 OCPU e 16 GB de memória) é suficiente e econômico.
  8. Use SSH para fazer log-in como opc user na nova instância de computação para instalar o Java 11 da seguinte forma:
    [opc@oci-compute ~]$ sudo yum install java-11
  9. Faça download dos binários do Oracle NoSQL Database Migrator 1.5.0 se ainda não tiver feito isso. Consulte a seção Review Software Requirements para obter detalhes.
  10. Use o SCP para fazer upload do arquivo ZIP do Migrador do Oracle NoSQL Database para o diretório home opc user's na nova instância de computação.
  11. Use SSH para fazer log-in como opc user na instância de computação para descompactar o software Oracle NoSQL Database Migrator baixado na etapa anterior. O conteúdo do arquivo é descompactado para um novo diretório chamado /home/opc/nosql-migrator-1.5.0. Abra o arquivo da seguinte forma:
    [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. Use o SCP para fazer upload do arquivo PEM de chave privada da etapa 5 para o diretório home do opc user da instância de computação em que o Oracle NoSQL Database Migrator foi descompactado na etapa anterior.
  13. Use SSH para fazer log-in como opc user na instância de computação para criar um arquivo de identidade do OCI. Crie o arquivo de identidade do OCI no diretório /home/opc/.oci com o seguinte conteúdo:
    [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. Na instância de computação, altere o diretório para o subdiretório nosql-migrator-1.5.0. Crie um arquivo JSON de configuração de migração que inclua informações sobre a origem e o destino (dissipador) da seguinte forma:
    [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. Execute a migração de dados usando o Oracle NoSQL Database Migrator e o arquivo JSON de configuração de migração criado na etapa anterior da seguinte forma:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    O job de migração criará uma nova tabela do Oracle NoSQL Database Migrator usando o esquema padrão e, em seguida, lerá o(s) arquivo(s) JSON formatado(s) MongoDB do OCI Object Storage para importar os dados desses arquivos para a tabela recém-criada.

Migrar Dados Usando um Esquema Personalizado

Ao usar um esquema personalizado para migrar, a nova tabela do Oracle NoSQL Database Cloud Service deve ser definida de forma semelhante ao esquema da tabela MongoDB. O arquivo de configuração do Migrador de Banco de Dados NoSQL deve incluir uma entrada de transformação que instrua o Migrador de Banco de Dados NoSQL a converter a coluna _id em id na nova tabela.

As etapas a seguir descrevem como migrar dados usando um esquema personalizado NoSQL da Oracle.

  1. Faça log-in em MongoDB e execute mongoexport para exportar a coleta de dados para arquivos JSON formatados em MongoDB. Por exemplo:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Dividir arquivos JSON MongoDB com mais de 13.500 registros usando o utilitário de divisão do Oracle Linux para dividir o arquivo JSON MongoDB em vários arquivos JSON de 13.500 registros cada. Por exemplo:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Use o comando cat ou vi do Oracle Linux para examinar os arquivos JSON formatados MongoDB gerados. Observe as seguintes informações:
    • Observe os nomes e os tipos de dados de cada coluna. Use essas informações para criar uma DDL (Table Schema Definition Language) do esquema de tabela do Oracle NoSQL Database Cloud Service.
    • A primeira coluna deve ser nomeada como id. As colunas restantes devem ter o mesmo nome e tipo do arquivo JSON MongoDB.
  4. Salve a DDL de esquema em um arquivo. A DDL do esquema deve ser semelhante à seguinte:
    $ 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. Faça log-in na console do OCI para criar um Bucket do OCI Object Storage se ainda não existir um.
    Observe o nome e o namespace do bucket.
  6. Use a console do OCI ou a API REST para fazer upload do(s) arquivo(s) das etapas 2 e 3 para o novo bucket criado na etapa 5.
  7. Na console do OCI, crie uma chave de API para o usuário do OCI que será proprietário da tabela de destino do Oracle NoSQL Database Cloud Service. Esse usuário deve ter permissões para criar e gerenciar a tabela.
    Observe o OCID do usuário, o OCID da tenancy, a impressão digital e o ID da região do OCI. Salve as chaves privada e pública nos arquivos PEM. Essa chave de API é usada pelo Oracle NoSQL Database Migrator para recuperar os arquivos JSON formatados em MongoDB, criar uma nova tabela e fazer upload dos dados dos arquivos JSON MongoDB para a tabela.
  8. Crie um compartimento para a tabela do Oracle NoSQL Database Cloud Service se ainda não existir um.
    Observe o nome do compartimento.
  9. Crie uma instância de computação.
    Essa instância de computação executará o software Oracle NoSQL Database Migrator. Uma instância de Computação Always Free (VM.Standard.E4). Flex com 1 OCPU e 16 GB de memória) é suficiente e econômico.
  10. Use SSH para fazer log-in como opc user na nova instância de computação para instalar o Java 11 da seguinte forma:
    [opc@oci-compute ~]$ sudo yum install java-11
  11. Faça download dos binários do Oracle NoSQL Database Migrator 1.5.0 se ainda não tiver feito isso. Consulte a seção Review Software Requirements para obter detalhes.
  12. Use o SCP para fazer upload do arquivo ZIP do Migrador do Oracle NoSQL Database para o diretório home opc user's na nova instância de computação.
  13. Use SSH para fazer log-in como opc user na instância de computação para descompactar o software Oracle NoSQL Database Migrator baixado na etapa anterior. O conteúdo do arquivo é descompactado para um novo diretório chamado /home/opc/nosql-migrator-1.5.0. Abra o arquivo da seguinte forma:
    [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. Use o SCP para fazer upload do arquivo PEM de chave privada da etapa 7 para o diretório home do opc user da instância de computação em que o Oracle NoSQL Database Migrator foi descompactado na etapa anterior.
  15. Use SSH para fazer log-in como opc user na instância de computação para criar um arquivo de identidade do OCI. Crie o arquivo de identidade do OCI no diretório /home/opc/.oci com o seguinte conteúdo:
    [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. Na instância de computação, altere o diretório para o subdiretório nosql-migrator-1.5.0. Crie um arquivo JSON de configuração de migração que inclua informações sobre a origem e o destino (dissipador) da seguinte forma:
    [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. Execute a migração de dados usando o Oracle NoSQL Database Migrator e o arquivo JSON de configuração de migração criado na etapa anterior da seguinte forma:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    O job de migração criará uma nova tabela do Oracle NoSQL Database Migrator usando o esquema personalizado e, em seguida, lerá o(s) arquivo(s) JSON formatado(s) MongoDB do OCI Object Storage para importar os dados desses arquivos para a tabela recém-criada.