Eseguire la migrazione dei dati da MongoDB a Oracle NoSQL Database Cloud Service.

Sono disponibili due opzioni per eseguire la migrazione dei dati da MongoDB a Oracle NoSQL Database Cloud Service mediante Oracle NoSQL Database Migrator:

  • Uso dello schema predefinito di Oracle NoSQL
  • Uso di uno schema personalizzato

Entrambe le opzioni richiedono un file JSON di configurazione che include informazioni sui file di origine e sul database di destinazione (sink). In entrambi gli scenari l'origine è costituita da file JSON con formato MongoDB memorizzati in OCI Object Storage, mentre la destinazione è il database Oracle NoSQL Database Cloud Service. Quando si utilizza uno schema personalizzato, il file JSON di configurazione deve includere la sezione transforms.

Eseguire la migrazione dei dati utilizzando lo schema predefinito di Oracle NoSQL

Quando si esegue la migrazione utilizzando lo schema predefinito, viene creata una nuova tabella Oracle NoSQL Database Cloud Service con due colonne: id e document. Per ogni voce del file di esportazione JSON MongoDB, viene eseguita la migrazione della colonna _id in id nella tabella Oracle NoSQL Database Cloud Service, mentre le altre colonne del file di esportazione JSON MongoDB vengono aggregate nella nuova colonna document.

Nella procedura riportata di seguito viene descritto come eseguire la migrazione dei dati utilizzando lo schema predefinito Oracle NoSQL.

  1. Eseguire il login a MongoDB ed eseguire mongoexport per esportare la raccolta dati in file JSON formattati MongoDB. Ad esempio:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Dividere i file JSON MongoDB con più di 13.500 record utilizzando la utility split di Oracle Linux per dividere il file JSON MongoDB in più file JSON di 13.500 record ciascuno. Ad esempio:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Eseguire il login alla console OCI per creare un bucket OCI Object Storage, se non ne esiste già uno.
    Prendere nota del nome e dello spazio di nomi del bucket
  4. Utilizzare la console OCI o l'API REST per caricare i file dal passo 2 al bucket dal passo 3.
  5. Nella console OCI, creare una chiave API per l'utente OCI proprietario della tabella di destinazione Oracle NoSQL Database Cloud Service. Questo utente deve disporre delle autorizzazioni per creare e gestire la tabella.
    Prendere nota dell'OCID utente, dell'OCID tenancy, dell'impronta digitale e dell'ID dell'area OCI. Salvare le chiavi private e pubbliche nei file PEM. Questa chiave API viene utilizzata da Oracle NoSQL Database Migrator per recuperare i file JSON formattati MongoDB, creare una nuova tabella e quindi caricare i dati dai file JSON di MongoDB nella tabella.
  6. Creare un compartimento per la tabella Oracle NoSQL Database Cloud Service se non ne esiste già uno.
    Prendere nota del nome del compartimento.
  7. Creare un'istanza di calcolo.
    Questa istanza di computazione eseguirà il software Oracle NoSQL Database Migrator. Istanza di computazione sempre gratuita (VM.Standard.E4). Flex con 1 OCPU e 16 GB di memoria) è sufficiente e conveniente.
  8. Utilizzare SSH per eseguire il login come opc user alla nuova istanza di computazione e installare Java 11 come indicato di seguito.
    [opc@oci-compute ~]$ sudo yum install java-11
  9. Scarica i file binari di Oracle NoSQL Database Migrator 1.5.0 se non lo hai già fatto. Per informazioni dettagliate, vedere la sezione Revisione dei requisiti software.
  10. Utilizzare SCP per caricare il file ZIP dell'agente di migrazione Oracle NoSQL Database nella directory home opc user's nella nuova istanza di computazione.
  11. Utilizzare SSH per eseguire il login come opc user all'istanza di computazione per estrarre il software Oracle NoSQL Database Migrator scaricato nel passo precedente. Il contenuto del file viene decompresso in una nuova directory denominata /home/opc/nosql-migrator-1.5.0. Estrarre il file come indicato di seguito.
    [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. Utilizzare SCP per caricare il file PEM della chiave privata dal passo 5 alla directory home dell'istanza di computazione opc user in cui è stato estratto Oracle NoSQL Database Migrator nel passo precedente.
  13. Utilizzare SSH per eseguire il login come opc user all'istanza di computazione per creare un file di identità OCI. Creare il file di identità OCI nella directory /home/opc/.oci con i seguenti contenuti:
    [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. Nell'istanza di computazione, modificare la directory nella sottodirectory nosql-migrator-1.5.0. Creare un file JSON di configurazione della migrazione che includa informazioni sull'origine e sulla destinazione (sink) come indicato di seguito:
    [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. Eseguire la migrazione dei dati utilizzando Oracle NoSQL Database Migrator e il file JSON di configurazione della migrazione creato nel passo precedente come indicato di seguito.
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket_def_schema.json
    Il job di migrazione creerà una nuova tabella Migrator di Oracle NoSQL Database utilizzando lo schema predefinito, quindi leggerà i file JSON formattati MongoDB da OCI Object Storage, per quindi importare i dati da tali file nella tabella appena creata.

Migrazione dei dati mediante uno schema personalizzato

Quando si utilizza uno schema personalizzato per la migrazione, è necessario definire la nuova tabella Oracle NoSQL Database Cloud Service in modo simile allo schema della tabella MongoDB. Il file di configurazione di NoSQL Database Migrator deve includere una voce di trasformazione che indichi a NoSQL Database Migrator come convertire la colonna _id in id nella nuova tabella.

La procedura riportata di seguito descrive come eseguire la migrazione dei dati utilizzando uno schema personalizzato NoSQL di Oracle.

  1. Eseguire il login a MongoDB ed eseguire mongoexport per esportare la raccolta dati in file JSON formattati MongoDB. Ad esempio:
    [opc@mongodb-server ~] mongoexport --collection collection_name --out collection_name.json
  2. Dividere i file JSON MongoDB con più di 13.500 record utilizzando la utility split di Oracle Linux per dividere il file JSON MongoDB in più file JSON di 13.500 record ciascuno. Ad esempio:
    $split -l 13500 –additional-suffix .json collection_name.json collection_name
  3. Utilizzare il comando cat o vi di Oracle Linux per esaminare i file JSON formattati MongoDB generati. Tenere presente quanto riportato di seguito.
    • Prendere nota dei nomi e dei tipi di dati per ogni colonna. Utilizzare queste informazioni per creare un linguaggio DDL (Data Definition Language) dello schema di tabella Oracle NoSQL Database Cloud Service.
    • La prima colonna deve avere il nome id. Le colonne rimanenti devono avere lo stesso nome e tipo del file JSON MongoDB.
  4. Salvare lo schema DDL in un file. Lo schema DDL deve essere simile al seguente:
    $ 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. Eseguire il login alla console OCI per creare un bucket OCI Object Storage, se non ne esiste già uno.
    Prendere nota del nome e dello spazio di nomi del bucket.
  6. Utilizzare la console OCI o l'API REST per caricare i file dai passi 2 e 3 al nuovo bucket creato nel passo 5.
  7. Nella console OCI, creare una chiave API per l'utente OCI proprietario della tabella di destinazione Oracle NoSQL Database Cloud Service. Questo utente deve disporre delle autorizzazioni per creare e gestire la tabella.
    Prendere nota dell'OCID utente, dell'OCID tenancy, dell'impronta digitale e dell'ID dell'area OCI. Salvare le chiavi private e pubbliche nei file PEM. Questa chiave API viene utilizzata da Oracle NoSQL Database Migrator per recuperare i file JSON formattati MongoDB, creare una nuova tabella e quindi caricare i dati dai file JSON di MongoDB nella tabella.
  8. Creare un compartimento per la tabella Oracle NoSQL Database Cloud Service se non ne esiste già uno.
    Prendere nota del nome del compartimento.
  9. Creare un'istanza di calcolo.
    Questa istanza di computazione eseguirà il software Oracle NoSQL Database Migrator. Istanza di computazione sempre gratuita (VM.Standard.E4). Flex con 1 OCPU e 16 GB di memoria) è sufficiente e conveniente.
  10. Utilizzare SSH per eseguire il login come opc user alla nuova istanza di computazione e installare Java 11 come indicato di seguito.
    [opc@oci-compute ~]$ sudo yum install java-11
  11. Scarica i file binari di Oracle NoSQL Database Migrator 1.5.0 se non lo hai già fatto. Per informazioni dettagliate, vedere la sezione Revisione dei requisiti software.
  12. Utilizzare SCP per caricare il file ZIP dell'agente di migrazione Oracle NoSQL Database nella directory home opc user's nella nuova istanza di computazione.
  13. Utilizzare SSH per eseguire il login come opc user all'istanza di computazione per estrarre il software Oracle NoSQL Database Migrator scaricato nel passo precedente. Il contenuto del file viene decompresso in una nuova directory denominata /home/opc/nosql-migrator-1.5.0. Estrarre il file come indicato di seguito.
    [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. Utilizzare SCP per caricare il file PEM della chiave privata dal passo 7 alla directory home dell'istanza di computazione opc user in cui è stato estratto Oracle NoSQL Database Migrator nel passo precedente.
  15. Utilizzare SSH per eseguire il login come opc user all'istanza di computazione per creare un file di identità OCI. Creare il file di identità OCI nella directory /home/opc/.oci con i seguenti contenuti:
    [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. Nell'istanza di computazione, modificare la directory nella sottodirectory nosql-migrator-1.5.0. Creare un file JSON di configurazione della migrazione che includa informazioni sull'origine e sulla destinazione (sink) come indicato di seguito:
    [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. Eseguire la migrazione dei dati utilizzando Oracle NoSQL Database Migrator e il file JSON di configurazione della migrazione creato nel passo precedente come indicato di seguito.
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-mongodbjson-bucket-src_schema.json
    Il job di migrazione creerà una nuova tabella Oracle NoSQL Database Migrator utilizzando lo schema personalizzato, quindi leggerà i file JSON formattati MongoDB da OCI Object Storage, per poi importare i dati da tali file nella tabella appena creata.