Migración de datos de Amazon DynamoDB a Oracle NoSQL Database Cloud Service

Hay dos opciones para migrar datos de Amazon DynamoDB a Oracle NoSQL Database Cloud Service mediante Oracle NoSQL Database Migrator:

  • 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 escenarios, el origen es archivos JSON con formato Amazon DynamoDB almacenados en el almacenamiento de objetos de Amazon S3, mientras que el destino es la base de datos de Oracle NoSQL Database Cloud Service. Dado que Amazon DynamoDB es una base de datos sin esquema, recomendamos migrar mediante un esquema por defecto NoSQL de Oracle.

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 o tres columnas: clave de partición, clave de ordenación (opcional) y documento. La clave de partición y la clave de ordenación se migran de la tabla Amazon DynamoDB a la tabla Oracle NoSQL Database Cloud Service. Los atributos de Amazon DynamoDB restantes se agregan en formato JSON en la columna de documento.

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

  1. En la consola de AWS, cree una clave de acceso (si aún no existe) para el usuario que accederá al almacenamiento de objetos de Amazon S3 donde se exportan los datos de Amazon DynamoDB.
    Recomendamos crear un nuevo usuario y crear una nueva clave de acceso para el usuario. No cree una clave de acceso para el usuario raíz de la cuenta de Amazon. Al crear una clave de acceso, se debe proporcionar un caso de uso. Asegúrese de utilizar el caso de uso "Aplicación que se ejecuta fuera de AWS: planea utilizar esta clave de acceso para autenticar cargas de trabajo que se ejecutan en su centro de datos u otra infraestructura fuera de AWS que necesita acceder a sus recursos de AWS". Para obtener más información sobre la creación de un usuario o claves de acceso, consulte la sección Revisar documentación.
    Observe la clave de acceso y la clave de acceso secreta. No se volverán a mostrar.
  2. Cree un cubo de Amazon S3 si aún no existe uno. Anote el nombre, la región y la URL del cubo.
    Consulte "Creación de un cubo" en la sección Revisar documentación para obtener más información.
  3. Seleccione el servicio Amazon DynamoDB y, a continuación, seleccione la tabla Amazon DynamoDB que se va a migrar a Oracle NoSQL Database Cloud Service.
    En Información general, observe el nombre y el tipo de la clave de partición y los atributos de clave de ordenación.
  4. Haga clic en Exportar a S3 en el menú del servicio Amazon DynamoDB y, a continuación, haga clic en Exportar a S3.
  5. Seleccione el nombre de la tabla que se va a exportar y, a continuación, seleccione el nombre del cubo en el que se exportarán los datos (el nombre del cubo creado en el paso 2).
  6. Configurar valores de exportación:
    • Seleccione Exportación completa.
    • Seleccione DynamoDB JSON para el formato de archivo exportado.
    • Seleccione la clave de Amazon S3 por defecto para el cifrado.
    • Active PITR (recuperación de punto en el tiempo). Necesario para exportar la tabla.
  7. Haga clic en Exportar.
    Observe el ID de exportación mientras avanza la exportación. Consulte "Exportación de datos DynamoDB a Amazon S3: cómo funciona" para obtener más información sobre la exportación.
  8. Una vez finalizada la exportación, vaya a la consola de AWS y seleccione el servicio Amazon S3.
  9. Seleccione el cubo al que se han exportado los datos.
    Se ha creado un nuevo directorio en el cubo denominado AWSDynamoDB/ExportID. En este directorio se crea un subdirectorio denominado data que contiene una serie de archivos JSON comprimidos GZIP con los datos de la tabla Amazon DynamoDB exportada. Consulte "DynamoDB formato de salida de exportación de tabla" en la sección Revisar documentación para obtener más información sobre los archivos JSON con formato.
  10. 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 de Oracle NoSQL Database Cloud Service.
    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 cargar los archivos JSON con formato DynamoDB de Amazon en la tabla.
  11. Cree un compartimento para la tabla de Oracle NoSQL Database Cloud Service si aún no existe uno.
    Observe el nombre de compartimento.
  12. 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.
  13. Configure la instancia informática con Oracle Linux 8.
  14. 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
  15. 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.
  16. 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.
  17. 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]$
  18. Utilice SCP para cargar el archivo PEM de clave privada del paso 10 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.
  19. 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_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. Como opc user en la instancia informática, cree los archivos de credenciales y configuración de AWS. Agregue estos archivos al directorio /home/opc/.aws con el siguiente contenido:
    [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. 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-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. 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-dynamo-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 Amazon DynamoDB del cubo de almacenamiento de objetos de Amazon S3 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 de Amazon DynamoDB mediante un lenguaje de definición de datos de tabla (DDL) de Oracle NoSQL Database Cloud Service. Los nombres y tipos de atributos de la nueva tabla deben ser los mismos que los nombres y tipos de atributos de la tabla Amazon DynamoDB. La clave de partición y la clave de ordenación tienen un límite de 2048 y 1024 bytes respectivamente, mientras que en Oracle NoSQL Database Cloud Service estas claves están limitadas a 64 bytes.

  1. En la consola de AWS, cree una clave de acceso (si aún no existe) para el usuario que accederá al almacenamiento de objetos de Amazon S3 donde se exportan los datos de Amazon DynamoDB.
    Recomendamos crear un nuevo usuario y crear una nueva clave de acceso para el usuario. No cree una clave de acceso para el usuario raíz de la cuenta de Amazon. Al crear una clave de acceso, se debe proporcionar un caso de uso. Asegúrese de utilizar el caso de uso "Aplicación que se ejecuta fuera de AWS: planea utilizar esta clave de acceso para autenticar cargas de trabajo que se ejecutan en su centro de datos u otra infraestructura fuera de AWS que necesita acceder a sus recursos de AWS". Para obtener más información sobre la creación de un usuario o claves de acceso, consulte la sección Revisar documentación.
    Observe la clave de acceso generada y la clave de acceso secreta, ya que no se volverán a mostrar.
  2. Cree un cubo de Amazon S3 si aún no existe uno. Anote el nombre, la región y la URL del cubo.
    Consulte "Creación de un cubo" en la sección Revisar documentación para obtener más información.
  3. Seleccione el servicio Amazon DynamoDB y, a continuación, seleccione la tabla Amazon DynamoDB que se va a migrar a Oracle NoSQL Database Cloud Service.
    En Información general, observe el nombre y el tipo de la clave de partición y los atributos de clave de ordenación. Observe los demás atributos de la tabla y sus tipos.
  4. Haga clic en Exportar a S3 en el menú del servicio Amazon DynamoDB y, a continuación, haga clic en Exportar a S3.
  5. Seleccione el nombre de la tabla que se va a exportar y, a continuación, seleccione el nombre del cubo en el que se exportarán los datos (el nombre del cubo creado en el paso 2).
  6. Configurar valores de exportación:
    • Seleccione Exportación completa.
    • Seleccione DynamoDB JSON para el formato de archivo exportado.
    • Seleccione la clave de Amazon S3 por defecto para el cifrado.
    • Active PITR (recuperación de punto en el tiempo). Necesario para exportar la tabla.
  7. Haga clic en Exportar.
    Observe el ID de exportación mientras avanza la exportación. Consulte "Exportación de datos DynamoDB a Amazon S3: cómo funciona" para obtener más información sobre la exportación.
  8. Una vez finalizada la exportación, vaya a la consola de AWS y seleccione el servicio Amazon S3.
  9. Seleccione el cubo al que se han exportado los datos.
    Se ha creado un nuevo directorio en el cubo denominado AWSDynamoDB/ExportID. En este directorio se crea un subdirectorio denominado data que contiene una serie de archivos JSON comprimidos GZIP con los datos de la tabla Amazon DynamoDB exportada. Consulte "DynamoDB formato de salida de exportación de tabla" en la sección Revisar documentación para obtener más información sobre los archivos JSON con formato.
  10. 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 de Oracle NoSQL Database Cloud Service.
    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 cargar los archivos JSON con formato DynamoDB de Amazon en la tabla.
  11. Cree un compartimento para la tabla de Oracle NoSQL Database Cloud Service si aún no existe uno.
    Observe el nombre de compartimento.
  12. 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.
  13. Configure la instancia informática con Oracle Linux 8.
  14. 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
  15. 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.
  16. 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.
  17. 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]$
  18. Utilice SCP para cargar el archivo PEM de clave privada del paso 10 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.
  19. 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_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. Como opc user en la instancia informática, cree los archivos de credenciales y configuración de AWS. Agregue estos archivos al directorio /home/opc/.aws con el siguiente contenido:
    [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. Cambie el directorio al subdirectorio nosql-migrator-1.5.0 y, a continuación, cree una sentencia de lenguaje de definición de datos (DDL) de Oracle NoSQL Database Cloud Service para crear una nueva tabla de Oracle NoSQL Database Cloud Service con atributos similares a los recopilados de la tabla Amazon DynamoDB en el paso 3. A continuación, se muestra un ejemplo de una nueva sentencia DDL de la tabla de 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. 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-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. 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-dynamo-bucket_custom_schema.json
    El trabajo de migración creará una nueva tabla de Oracle NoSQL Database Migrator mediante el esquema personalizado DDL definido en el paso 21 y, a continuación, leerá los archivos JSON con formato Amazon DynamoDB del cubo de almacenamiento de objetos de Amazon S3 para, a continuación, importar los datos de esos archivos a la tabla recién creada.