Nota

Esegui migrazione dati da Amazon DynamoDB a tabella Oracle NoSQL Database

Introduzione

Amazon DynamoDB è un servizio di database NoSQL completamente gestito offerto da Amazon Web Services che fornisce un valore chiave veloce e scalabile e storage dei dati dei documenti.

Oracle NoSQL Database Cloud Service è un servizio di database NoSQL completamente gestito offerto da Oracle Corporation su Oracle Cloud Infrastructure. Fornisce uno storage di documenti JSON e key-value scalabile con prestazioni a bassa latenza e scalabilità automatica per le applicazioni cloud native.

Questa esercitazione descrive come eseguire la migrazione dei dati da Amazon DynamoDB a Oracle NoSQL Database Cloud Service utilizzando lo strumento Oracle NoSQL Database Migrator.

Il workflow di migrazione utilizza la funzionalità nativa export-to-S3 di DynamoDB per estrarre i dati della tabella in formato JSON DynamoDB. I dati esportati vengono quindi importati in Oracle NoSQL Database Cloud Service in esecuzione in Oracle Cloud Infrastructure (OCI).

Architettura

Il workflow di migrazione è composto dai componenti riportati di seguito.

immagine

Processo di migrazione di alto livello

  1. Esegui provisioning delle tabelle DynamoDB e del bucket Amazon S3.
  2. Abilita PITR nella tabella ed esporta le tabelle DynamoDB nel bucket Amazon S3.
  3. Esegui provisioning dell'istanza di computazione OCI
  4. Installare e configurare lo strumento Oracle NoSQL Database Migrator in Compute.
  5. Configura l'autenticazione AWS e OCI sulla computazione OCI.
  6. Esegui la migrazione dal bucket Amazon S3 a OCI NoSQL
  7. Convalida i dati migrati in Oracle NoSQL Database.

Prerequisiti

Prima di iniziare, assicurarsi che:

Task 1: Fornisci risorse Amazon DynamoDB

In questo tutorial, eseguiremo il provisioning solo delle risorse di base richieste in AWS, che sono obbligatorie per questo esercizio.

1. Crea utente IAM in AWS

Creare un utente IAM dedicato per gestire le operazioni DynamoDB.

a. Accedi a AWS Console

b. Passare a IAM, Utenti

c. Fare clic su Crea utente

d. Assegna accesso programmato

immagine

e. Rivedere e fare clic su Crea utente.

⚠️ Negli ambienti di produzione, utilizzare i criteri IAM con meno privilegi.

2. Creare una tabella DynamoDB in AWS

a. Accedi alla console AWS.

b. Andare a DynamoDB.

immagine

c. Fare clic su Crea tabella.

immagine

d. Specificare:

e. Accettare le impostazioni predefinite e creare la tabella.

f. Rivedere le tabelle create.

immagine

3. Aggiungere una nuova colonna o inserire record campione nella tabella DynamoDB.

a. Accedi alla console AWS.

b. Selezionare la tabella desiderata

c. Fare clic su Azioni, Crea articolo.

immagine

d. Inserisci record di esempio

immagine

e. Convalida record

immagine

Task 2: Esporta tabella DynamoDB in bucket Amazon S3

Utilizzare la funzionalità esportazione nativa in S3 di DynamoDB per estrarre i dati della tabella in formato JSON DynamoDB nel bucket S3.

1. Crea bucket Amazon S3

a. Accedi alla console AWS

b. Andare a S3

c. Creare un nuovo bucket

immagine

d. Mantieni impostazioni predefinite

e. Convalida bucket

immagine

2. Abilita recupero point-in-time (PITR)

L'esportazione DynamoDB richiede il recupero point-in-time. PITR deve essere abilitato a livello di tabella, prima di esportarlo.

a. Seleziona la tabella

b. Abilita recupero point-in-time

immagine

c. Dopo aver abilitato PITR.

immagine

3. Esporta i dati della tabella nel bucket S3.

a. Accedi alla console AWS.

b. Seleziona la tabella

c. Fare clic su Esporta in S3

d. Scegliere una delle seguenti opzioni:

e. Fare clic su Esporta

immagine

immagine

4. Verifica dati esportati

Al termine:

immagine

S3://bucket-name/AWSDynamoDB/ExportID/data/

Contiene:

immagine

Task 3: Preparare l'ambiente Oracle Cloud Infrastructure

1. Crea un compartimento

a. Connettersi a OCI Console.

b. Andare a Identità e sicurezza, compartimenti.

c. Creare un nuovo compartimento per la tabella NoSQL Oracle.

2. Creare un'istanza di compute

a. Andare a Computazione , Istanze.

b. Fare clic su Crea istanza

c. Selezionare una delle opzioni riportate di seguito.

Questa istanza di computazione esegue Oracle NoSQL Database Migrator.

3. Installa Oracle NoSQL Database Migrator

Oracle NoSQL Migrator legge i file di esportazione DynamoDB da Amazon S3 e importa i dati nel database NoSQL di Oracle OCI. Installeremo lo strumento Oracle NoSQL Migrator su una delle soluzioni di computazione OCI create in precedenza.

a. Installa Java 11

Oracle NoSQL Database Migrator richiede che Java sia in esecuzione nella computazione.

sudo yum install java-11

Passare a b. Estrai package Migrator

tar -zxvf V1053574-01.tar.gz
cd nosql-migrator-1.8.0/

Verifica dell'installazione:

[opc@nosql-migrator-1.8.0]\$ ls -ltr
total 332
-rw-r--r--. 1 opc opc    822 Nov 13 07:26 sdk_logging.properties
-rw-r--r--. 1 opc opc   1720 Nov 13 07:26 README.md
-rw-r--r--. 1 opc opc    897 Nov 13 07:26 log4j2.xml
-rw-r--r--. 1 opc opc   1870 Nov 13 07:26 LICENSE.txt
-rw-r--r--. 1 opc opc    488 Dec  2 07:11 Dockerfile
-rw-r--r--. 1 opc opc 234275 Dec 23 08:38 THIRD_PARTY_LICENSES.txt
-rwxr-xr-x. 1 opc opc  73063 Dec 23 08:38 runMigrator
-rw-r--r--. 1 opc opc   4640 Dec 23 08:38 CHANGELOG.md
drwxr-xr-x. 2 opc opc    124 Feb  6 02:50 lib

Task 4: Configurare l'accesso sicuro (OCI e AWS)

Per utilizzare Oracle NoSQL Migrator, è necessario configurare l'autenticazione cross-cloud sicura per consentire all'istanza di computazione di accedere sia alle risorse Amazon S3 che a quelle Oracle Cloud Infrastructure (OCI).

1. Crea chiave API OCI

Nella console OCI, creare una chiave API per l'utente OCI che sarà proprietario della tabella Oracle NoSQL Database Cloud Service di destinazione. Questo utente deve disporre delle autorizzazioni per creare e gestire la tabella Oracle NoSQL Database Cloud Service.

a. Nella console OCI, aprire Profilo, chiavi API.

b. Aggiunge una nuova chiave API.

immagine

c. Scaricare la chiave privata.

d. Record:

immagine

2. Crea file di configurazione OCI

a. Utilizzare SSH per eseguire il login come utente opc all'istanza di computazione creata in precedenza.

b. Creare tutto il file di identità OCI in /home/opc/.oci directory.

Chiave privata:

c. Copiare la chiave privata in Compute come /home/opc/.oci/ociuser.pem.

/home/opc/.oci/ociuser.pem

File di configurazione:

\$vi /home/opc/.oci/config

Esempio:

[DEFAULT]
user=ocid1.user.oc1...
fingerprint=xx:xx:xx
tenancy=ocid1.tenancy.oc1...
region=ap-hyderabad-1
key_file=/home/opc/.oci/ociuser.pem

3. Crea chiavi di accesso AWS

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.

a. Accedi alla console AWS.

b. Vai a IAM, Utente, Credenziali di sicurezza

c. Crea chiave di accesso

Caso d'uso: applicazione in esecuzione al di fuori di AWS.

immagine

4. Configura credenziali AWS

Creare i file riportati di seguito nell'istanza di computazione.

/home/opc/.aws/config
/home/opc/.aws/credentials

Configurazione di esempio:

[default]
region=<aws_region>

Credenziali di esempio:

[default]
aws_access_key_id=<access_key>
aws_secret_access_key=<secret_key>

Task 5: Configurazione ed esecuzione di Oracle NoSQL Migrator

Migrator richiede un file di configurazione JSON che descriva:

1. Crea file di configurazione migrazione

Creare un file JSON di configurazione della migrazione che includa informazioni sull'origine e sulla destinazione (sink). Sotto la nota sink DDBPartitionKey e DDBSortKey dalla tabella DynamoDB.

Crea:

/home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json

Configurazione di esempio

{
  "source": {
    "type": "aws_s3",
    "format": "dynamodb_json",
    "s3URL": "https://bucket-name.s3.region.amazonaws.com/AWSDynamoDB/ExportID/data",
    "credentials": "/home/opc/.aws/credentials",
    "credentialsProfile": "default"
  },
  "sink": {
    "type": "nosqldb_cloud",
    "endpoint": "<oci_region>",
    "table": "Emp_records",
    "schemaInfo": {
      "defaultSchema": true,
      "DDBPartitionKey": "PartitionKey:string",
      "DDBSortKey": "SortKey:Number",
      "readUnits": 10,
      "writeUnits": 10,
      "storageSize": 1
    },
    "compartment": "<compartment_ocid>",
    "credentials": "/home/opc/.oci/config",
    "credentialsProfile": "DEFAULT",
    "overwrite": true
  },
  "abortOnError": false,
  "migratorVersion": "1.8.0"
}

Introduzione alla modalità schema predefinita

Quando si utilizza defaultSchema: true:

Oracle NoSQL crea una tabella con:

Tutti gli attributi DynamoDB non chiave vengono memorizzati in document.

2. Esegui migrazione

Nell'istanza di computazione, passare alla sottodirectory nosql-migrator-1.8.0

\$cd /home/opc/nosql-migrator-1.8.0
\$./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_to_OCI.json

Dopo l'esecuzione riuscita, l'output visualizza il numero di record elaborati.

Log di migrazione riuscito:

[opc@.nosql-migrator-1.8.0]\$ ./runMigrator --config /home/opc/.oci/migrator-config-dynamodb-bucket_custom-schema.json

2026-02-11 13:32:35.279 [INFO] Configuration for migration:
{
  "source" : {
    "type" : "aws_s3",
    "format" : "dynamodb_json",
    "s3URL" : "https://dbmigbucket2oci.s3.ap-southeast-2.amazonaws.com/AWSDynamoDB/01770816089608-60282a9b/data",
    "credentials" : "/home/opc/.aws/credentials",
    "credentialsProfile" : "default"
  },
  "sink" : {
    "type" : "nosqldb_cloud",
    "endpoint" : "ap-hyderabad-1",
    "table" : "Emp_records",
    "schemaInfo" : {
      "defaultSchema" : true,
      "DDBPartitionKey" : "On_roll:string",
      "DDBSortKey" : "EmpID:Number",
      "readUnits" : 5,
      "writeUnits" : 50,
      "storageSize" : 5
    },
    "compartment" : "ocid1.compartment.oc1..aaaaaaaazliaxu2oqqcp3x6574nxkegv6lxbvh5lildyztb4fizbk2tqv2ia",
    "includeTTL" : false,
    "credentials" : "/home/opc/.oci/hyd_config",
    "credentialsProfile" : "DEFAULT",
    "writeUnitsPercent" : 90,
    "overwrite" : true,
    "requestTimeoutMs" : 5000
  },
  "abortOnError" : false,
  "migratorVersion" : "1.8.0"
}
2026-02-11 13:32:35.283 [INFO] creating source from given configuration:
2026-02-11 13:32:37.061 [INFO] source creation completed
2026-02-11 13:32:37.061 [INFO] creating sink from given configuration:
2026-02-11 13:32:38.253 [INFO] sink creation completed
2026-02-11 13:32:38.255 [INFO] creating migrator pipeline
2026-02-11 13:32:38.255 [INFO] [cloud sink] : start loading DDLs
2026-02-11 13:32:38.256 [INFO] [cloud sink] : executing DDL: CREATE TABLE IF NOT EXISTS Emp_records (On_roll string,EmpID Number,document JSON, PRIMARY KEY(SHARD(On_roll),EmpID)),limits: [5, 50, 5]
2026-02-11 13:32:38.763 [INFO] [cloud sink] : completed loading DDLs
2026-02-11 13:32:39.426 [INFO] migration started
2026-02-11 13:32:39.635 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/kaqjylfjsm4dzaf52u2e6qstia.json.gz
2026-02-11 13:32:40.373 [INFO] Migration success for source kaqjylfjsm4dzaf52u2e6qstia. read=2,written=2,failed=0
2026-02-11 13:32:40.373 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/phz6b5k7mmytpcrqe72pfnj3zu.json.gz
2026-02-11 13:32:40.606 [INFO] Migration success for source phz6b5k7mmytpcrqe72pfnj3zu. read=0,written=0,failed=0
2026-02-11 13:32:40.606 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/rtm6rzjciq6jhds3dcp4pcro5u.json.gz
2026-02-11 13:32:40.839 [INFO] Migration success for source rtm6rzjciq6jhds3dcp4pcro5u. read=0,written=0,failed=0
2026-02-11 13:32:40.839 [INFO] [DDB S3 source] : start parsing JSON records from object: AWSDynamoDB/01770816089608-60282a9b/data/vrukpcnd6e3kddjg4qite4upzi.json.gz
2026-02-11 13:32:41.304 [INFO] Migration success for source vrukpcnd6e3kddjg4qite4upzi. read=1,written=1,failed=0
2026-02-11 13:32:41.304 [INFO] Migration is successful for all the sources.
2026-02-11 13:32:41.306 [INFO] migration completed.
Records provided by source=3, Records written to sink=3, Records failed=0,Records skipped=0.
Elapsed time: 0min 1sec 878ms
Migration completed.

Task 6: Convalida migrazione

Dopo l'esecuzione di Data Migrator, tutti i record di tabella inseriti in DynamoDB devono essere visibili in Oracle NoSQL.

a. Aprire OCI Console.

b. Passare a Database, Oracle NoSQL Database, Tabelle.

immagine

c. Selezionare il compartimento appropriato.

d. Aprire la tabella migrata.

immagine

e. Verificare i record.

immagine

Considerazioni e best practice sulla migrazione

Capacity Planning

Sicurezza

Tabelle grandi

Per le esportazioni da più terabyte:

Gestione TTL

Se è richiesto DynamoDB TTL, abilitare:

"includeTTL": true

Migrazione multitabella

Automatizza le esportazioni utilizzando lo script CLI AWS se esegui la migrazione di più tabelle.

Conclusione

Questa esercitazione ha dimostrato un flusso di lavoro di migrazione end-to-end da Amazon DynamoDB a Oracle NoSQL Database Cloud Service utilizzando funzionalità di esportazione native e Oracle NoSQL Database Migrator.

Questo approccio consente di:

Con una pianificazione adeguata, una configurazione sicura e un tuning della capacità, le organizzazioni possono ottenere una migrazione dei dati NoSQL trasparente tra le piattaforme cloud.

Risoluzione dei problemi

Esegui cleanup risorse

Dopo aver completato questa esercitazione, considerare la possibilità di rimuovere le seguenti risorse per evitare addebiti non necessari:

Conferme

Autore - Dharmesh Patel (Principal Cloud Architect, Customer Success Services)


Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.