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

Sono disponibili due opzioni per eseguire la migrazione dei dati da Amazon DynamoDB 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 è Amazon DynamoDB, file JSON formattati memorizzati nello storage degli oggetti Amazon S3, mentre la destinazione è il database Oracle NoSQL Database Cloud Service. Poiché Amazon DynamoDB è un database senza schema, si consiglia di eseguire la migrazione utilizzando uno schema predefinito Oracle NoSQL.

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 o tre colonne: chiave di partizione, chiave di ordinamento (facoltativa) e documento. La chiave di partizione e la chiave di ordinamento vengono migrate dalla tabella Amazon DynamoDB alla tabella Oracle NoSQL Database Cloud Service. Tutti gli attributi Amazon DynamoDB rimanenti vengono aggregati in formato JSON nella colonna del documento.

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

  1. Nella console AWS, creare una chiave di accesso (se non esiste già) per l'utente che accederà allo storage degli oggetti Amazon S3 in cui vengono esportati i dati di Amazon DynamoDB.
    Si consiglia di creare un nuovo utente e una nuova chiave di accesso per l'utente. Non creare una chiave di accesso per l'utente root dell'account Amazon. Quando si crea una chiave di accesso, è necessario fornire uno use case. Assicurati di utilizzare il caso d'uso "Applicazione in esecuzione al di fuori di AWS: prevedi di utilizzare questa chiave di accesso per autenticare i carichi di lavoro in esecuzione nel tuo data center o in altre infrastrutture al di fuori di AWS che devono accedere alle tue risorse AWS". Per ulteriori informazioni sulla creazione di un utente o di chiavi di accesso, vedere la sezione Rivedi documentazione.
    Prendere nota della chiave di accesso e della chiave di accesso segreta. Questi non verranno più visualizzati.
  2. Creare un bucket Amazon S3 se non esiste già. Prendere nota del nome, dell'area e dell'URL del bucket.
    Per ulteriori informazioni, vedere "Creazione di un bucket" nella sezione Rivedi documentazione.
  3. Selezionare il servizio Amazon DynamoDB, quindi selezionare la tabella Amazon DynamoDB di cui eseguire la migrazione in Oracle NoSQL Database Cloud Service.
    In Informazioni generali, prendere nota del nome e del tipo della chiave di partizione e degli attributi della chiave di ordinamento.
  4. Fare clic su Esporta in S3 nel menu del servizio Amazon DynamoDB, quindi fare clic su Esporta in S3.
  5. Selezionare il nome della tabella da esportare, quindi selezionare il nome del bucket in cui verranno esportati i dati (il nome del bucket creato nel passo 2).
  6. Configura impostazioni di esportazione:
    • Selezionare Esportazione completa.
    • Selezionare DynamoDB JSON per il formato di file esportato.
    • Selezionare la chiave predefinita Amazon S3 per la cifratura.
    • Abilitare PITR (recupero point in time). Obbligatorio per l'esportazione della tabella.
  7. Fare clic su Esporta.
    Tenere presente l'ID esportazione durante l'avanzamento dell'esportazione. Per ulteriori informazioni sull'esportazione, vedere "DynamoDB data export to Amazon S3: how it works".
  8. Al termine dell'esportazione, passare alla console AWS e selezionare il servizio Amazon S3.
  9. Selezionare il bucket in cui sono stati esportati i dati.
    Una nuova directory è stata creata all'interno del bucket denominato AWSDynamoDB/ExportID. In questa directory viene creata una sottodirectory denominata data che contiene una serie di file JSON compressi GZIP con i dati della tabella Amazon DynamoDB esportati. Per ulteriori informazioni sui file JSON formattati, vedere "DynamoDB table export output format format" nella sezione Revisione documentazione.
  10. 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 Oracle NoSQL Database Cloud Service.
    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 caricare nella tabella i file JSON in formato Amazon DynamoDB.
  11. Creare un compartimento per la tabella Oracle NoSQL Database Cloud Service se non ne esiste già uno.
    Prendere nota del nome del compartimento.
  12. 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.
  13. Configura l'istanza di computazione con Oracle Linux 8.
  14. 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
  15. 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.
  16. 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.
  17. 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]$
  18. Utilizzare SCP per caricare il file PEM della chiave privata dal passo 10 alla directory home dell'istanza di computazione opc user in cui è stato estratto Oracle NoSQL Database Migrator nel passo precedente.
  19. 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_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. Come opc user nell'istanza di computazione, crea file di configurazione e credenziali AWS. Aggiungere questi file nella directory /home/opc/.aws con i seguenti contenuti:
    [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. 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-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. 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-dynamo-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 di Amazon DynamoDB dal bucket di storage degli oggetti Amazon S3 per poi 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, la nuova tabella Oracle NoSQL Database Cloud Service deve essere definita in modo simile allo schema della tabella Amazon DynamoDB, utilizzando un linguaggio DDL (Table Data Definition Language) Oracle NoSQL Database Cloud Service. I nomi e i tipi di attributo per la nuova tabella devono essere uguali ai nomi e ai tipi di attributo nella tabella Amazon DynamoDB. La chiave di partizione e la chiave di ordinamento hanno un limite di 2048 e 1024 byte, mentre in Oracle NoSQL Database Cloud Service tali chiavi sono limitate a 64 byte.

  1. Nella console AWS, creare una chiave di accesso (se non esiste già) per l'utente che accederà allo storage degli oggetti Amazon S3 in cui vengono esportati i dati di Amazon DynamoDB.
    Si consiglia di creare un nuovo utente e una nuova chiave di accesso per l'utente. Non creare una chiave di accesso per l'utente root dell'account Amazon. Quando si crea una chiave di accesso, è necessario fornire uno use case. Assicurati di utilizzare il caso d'uso "Applicazione in esecuzione al di fuori di AWS: prevedi di utilizzare questa chiave di accesso per autenticare i carichi di lavoro in esecuzione nel tuo data center o in altre infrastrutture al di fuori di AWS che devono accedere alle tue risorse AWS". Per ulteriori informazioni sulla creazione di un utente o di chiavi di accesso, fare riferimento alla sezione Rivedi documentazione.
    Prendere nota della chiave di accesso generata e della chiave di accesso segreta, poiché queste non verranno visualizzate di nuovo.
  2. Creare un bucket Amazon S3 se non esiste già. Prendere nota del nome, dell'area e dell'URL del bucket.
    Per ulteriori informazioni, vedere "Creazione di un bucket" nella sezione Rivedi documentazione.
  3. Selezionare il servizio Amazon DynamoDB, quindi selezionare la tabella Amazon DynamoDB di cui eseguire la migrazione in Oracle NoSQL Database Cloud Service.
    In Informazioni generali, prendere nota del nome e del tipo della chiave di partizione e degli attributi della chiave di ordinamento. Prendere nota degli altri attributi nella tabella e dei relativi tipi.
  4. Fare clic su Esporta in S3 nel menu del servizio Amazon DynamoDB, quindi fare clic su Esporta in S3.
  5. Selezionare il nome della tabella da esportare, quindi selezionare il nome del bucket in cui verranno esportati i dati (il nome del bucket creato nel passo 2).
  6. Configura impostazioni di esportazione:
    • Selezionare Esportazione completa.
    • Selezionare DynamoDB JSON per il formato di file esportato.
    • Selezionare la chiave predefinita Amazon S3 per la cifratura.
    • Abilitare PITR (recupero point in time). Obbligatorio per l'esportazione della tabella.
  7. Fare clic su Esporta.
    Tenere presente l'ID esportazione durante l'avanzamento dell'esportazione. Per ulteriori informazioni sull'esportazione, vedere "DynamoDB data export to Amazon S3: how it works".
  8. Al termine dell'esportazione, passare alla console AWS e selezionare il servizio Amazon S3.
  9. Selezionare il bucket in cui sono stati esportati i dati.
    Una nuova directory è stata creata all'interno del bucket denominato AWSDynamoDB/ExportID. In questa directory viene creata una sottodirectory denominata data che contiene una serie di file JSON compressi GZIP con i dati della tabella Amazon DynamoDB esportati. Per ulteriori informazioni sui file JSON formattati, vedere "DynamoDB table export output format format" nella sezione Revisione documentazione.
  10. 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 Oracle NoSQL Database Cloud Service.
    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 caricare nella tabella i file JSON in formato Amazon DynamoDB.
  11. Creare un compartimento per la tabella Oracle NoSQL Database Cloud Service se non ne esiste già uno.
    Prendere nota del nome del compartimento.
  12. 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.
  13. Configura l'istanza di computazione con Oracle Linux 8.
  14. 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
  15. 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.
  16. 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.
  17. 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]$
  18. Utilizzare SCP per caricare il file PEM della chiave privata dal passo 10 alla directory home dell'istanza di computazione opc user in cui è stato estratto Oracle NoSQL Database Migrator nel passo precedente.
  19. 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_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. Come opc user nell'istanza di computazione, crea file di configurazione e credenziali AWS. Aggiungere questi file nella directory /home/opc/.aws con i seguenti contenuti:
    [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. Modificare la directory nella sottodirectory nosql-migrator-1.5.0, quindi creare un'istruzione DDL (Data Definition Language) di Oracle NoSQL Database Cloud Service per creare una nuova tabella Oracle NoSQL Database Cloud Service con attributi simili a quelli raccolti dalla tabella Amazon DynamoDB nel passo 3. Di seguito è riportato un esempio di una nuova istruzione DDL per la creazione della tabella 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. 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-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. 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-dynamo-bucket_custom_schema.json
    Il job di migrazione creerà una nuova tabella Migrator di Oracle NoSQL Database utilizzando la DDL dello schema personalizzato definita nel passo 21, quindi leggerà il file JSON formattato Amazon DynamoDB dal bucket di storage degli oggetti Amazon S3, per poi importare i dati da tali file nella tabella appena creata.