Migración de un archivo JSON DynamoDB en AWS S3 a Oracle NoSQL Database Cloud Service

En este ejemplo se muestra cómo utilizar Oracle NoSQL Database Migrator para copiar el archivo JSON DynamoDB almacenado en un almacén S3 de AWS en Oracle NoSQL Database Cloud Service (NDCS).

Caso de uso:

Después de evaluar varias opciones, una organización finaliza Oracle NoSQL Database Cloud Service en una base de datos DynamoDB. La organización desea migrar sus tablas y datos de DynamoDB a Oracle NoSQL Database Cloud Service.

Consulte Asignación de la tabla DynamoDB a la tabla NoSQL de Oracle para obtener más información.

Ejemplo:

Para esta demostración, aprenderá a migrar un archivo JSON DynamoDB en un origen S3 de AWS a NDCS. Para este ejemplo, utilizará un archivo JSON de configuración creado manualmente.

Requisitos previos

  • Identifique el origen y el receptor de la migración.
    • Fuente: DynamoDB Archivo JSON en AWS S3
    • Enlace: Oracle NoSQL Database Cloud Service
  • Identifique la tabla de AWS DynamoDB que se debe migrar a NDCS. Inicie sesión en la consola de AWS con las credenciales. Vaya a DynamoDB. En Tablas, seleccione la tabla que se va a migrar.
  • Cree un cubo de objeto y exporte la tabla a S3. Desde la consola de AWS, vaya a S3. En cubos, cree un nuevo cubo de objeto. Vuelva a DynamoDB y haga clic en Exportaciones a S3. Proporcione la tabla de origen y el cubo S3 de destino y haga clic en Exportar.
  • Necesita credenciales nuevas (incluido el ID de clave de acceso y la clave de acceso secreta) y archivos de configuración (credenciales y, opcionalmente, configuración) para acceder a AWS S3 desde el migrador. Consulte Definición y visualización de valores de configuración para obtener más información sobre los archivos de configuración. Consulte Creación de un par de claves para obtener más información sobre la creación de claves de acceso.
  • Identifique sus credenciales de OCI en la nube y capturelas en el archivo de configuración de OCI. Guarde el archivo de configuración en un directorio .oci en el directorio raíz (~/.oci/config). Consulte Adquisición de credenciales para obtener más información.
    [DEFAULT]              
    tenancy=ocid1.tenancy.oc1....         
    user=ocid1.user.oc1....         
    fingerprint= 43:d1:....         
    key_file=</fully/qualified/path/to/the/private/key/>              
    pass_phrase=<passphrase>
  • Identifique el punto final de región y el nombre de compartimento de Oracle NoSQL Database. Por ejemplo,
    • punto final: us-phoenix-1
    • compartimento: desarrolladores

Procedimiento

Para migrar los datos JSON de DynamoDB a Oracle NoSQL Database:
  1. Prepare el archivo JSON de configuración con los detalles del origen y del receptor identificados. Consulte Source Configuration Templates y Sink Configuration Templates.
    Puede seleccionar una de las dos opciones siguientes.
    • Opción 1: importación de la tabla DynamoDB a como documento JSON mediante la configuración de esquema por defecto.
      Aquí defaultSchema es TRUE y, por lo tanto, el migrador crea el esquema por defecto en el disipador. Debe especificar el tipo de columna DDBPartitionKey y el tipo de columna NoSQL correspondiente. De lo contrario, se devuelve un error.
      {
       "source" : {
         "type" : "aws_s3",
         "format" : "dynamodb_json",
         "s3URL" : "<https://<bucket-name>.<s3_endpoint>/export_path>",
         "credentials" : "</path/to/aws/credentials/file>",
         "credentialsProfile" : <"profile name in aws credentials file">
       },
       "sink" : {
         "type" : "nosqldb_cloud",
         "endpoint" : "<region_name>",
         "table" : "<table_name>",
         "compartment" : "<compartment_name>",
         "schemaInfo" : {
            "defaultSchema" : true,
            "readUnits" : 100,
            "writeUnits" : 60,
            "DDBPartitionKey" : "<PrimaryKey:Datatype>",
            "storageSize" : 1
         },
         "credentials" : "<complete/path/to/the/oci/config/file>",
         "credentialsProfile" : "DEFAULT",
         "writeUnitsPercent" : 90,
         "requestTimeoutMs" : 5000
       },
       "abortOnError" : true,
       "migratorVersion" : "1.0.0"
      }
      Para un origen JSON DynamoDB, el esquema por defecto de la tabla será el siguiente:
      CREATE TABLE IF NOT EXISTS <TABLE_NAME>(DDBPartitionKey_name DDBPartitionKey_type, 
      [DDBSortKey_name DDBSortKey_type], DOCUMENT JSON, 
      PRIMARY KEY(SHARD(DDBPartitionKey_name),[DDBSortKey_name]))

      Dónde

      TABLE_NAME = valor proporcionado para el disipador 'tabla' en la configuración

      DDBPartitionKey_name = valor proporcionado para la clave de partición en la configuración

      DDBPartitionKey_type = valor proporcionado para el tipo de dato de la clave de partición en la configuración

      DDBSortKey_name = valor proporcionado para la clave de ordenación en la configuración si existe

      DDBSortKey_type = valor proporcionado para el tipo de dato de la clave de ordenación en la configuración, si lo hay

      DOCUMENT = Todos los atributos excepto la partición y la clave de ordenación de un elemento de tabla de base de datos Dynamo agregado en una columna JSON NoSQL

    • Opción 2: importación de la tabla DynamoDB como columnas fijas mediante un archivo de esquema proporcionado por el usuario.
      Aquí defaultSchema es FALSE y se especifica schemaPath como un archivo que contiene la sentencia DDL. Consulte Asignación de tipos DynamoDB a tipos NoSQL de Oracle para obtener más información.
      Nota

      Si la tabla de base de datos Dynamo tiene un tipo de dato que no está soportado en NoSQL, la migración falla.
      A continuación, se presenta un archivo de esquema de ejemplo.
      CREATE TABLE IF NOT EXISTS sampledynDBImp (AccountId INTEGER,document JSON, 
      PRIMARY KEY(SHARD(AccountId)));
      El archivo de esquema se utiliza para crear la tabla en el receptor como parte de la migración. Mientras se proporcionen los datos de clave primaria, se insertará el registro JSON de entrada; de lo contrario, se producirá un error.
      Nota

      Si los datos de entrada no contienen un valor para una columna concreta (que no sea la clave primaria), se utilizará el valor por defecto de la columna. El valor por defecto debe formar parte de la definición de columna al crear la tabla. Por ejemplo, id INTEGER not null default 0. Si la columna no tiene una definición por defecto, se inserta SQL NULL si no se proporciona ningún valor para la columna.
      {
       "source" : {
         "type" : "aws_s3",
         "format" : "dynamodb_json",
         "s3URL" : "<https://<bucket-name>.<s3_endpoint>/export_path>",
         "credentials" : "</path/to/aws/credentials/file>",
         "credentialsProfile" : <"profile name in aws credentials file">
       },
       "sink" : {
         "type" : "nosqldb_cloud",
         "endpoint" : "<region_name>",
         "table" : "<table_name>",
         "compartment" : "<compartment_name>",
         "schemaInfo" : {
            "defaultSchema" : false,
            "readUnits" : 100,
            "writeUnits" : 60,
            "schemaPath" : "<full path of the schema file with the DDL statement>",
            "storageSize" : 1
         },
         "credentials" : "<complete/path/to/the/oci/config/file>",
         "credentialsProfile" : "DEFAULT",
         "writeUnitsPercent" : 90,
         "requestTimeoutMs" : 5000
       },
       "abortOnError" : true,
       "migratorVersion" : "1.0.0"
      }
  2. Abra el símbolo del sistema y vaya al directorio en el que ha extraído la utilidad NoSQL Database Migrator.
  3. Ejecute el comando runMigrator transfiriendo el archivo JSON de configuración con la opción --config o -c.
    [~/nosqlMigrator/nosql-migrator-1.0.0]$./runMigrator 
    --config <complete/path/to/the/JSON/config/file>
  4. La utilidad continúa con la migración de datos, como se muestra a continuación.
    Records provided by source=7..,
    Records written to sink=7,
    Records failed=0,
    Records skipped=0.
    Elapsed time: 0 min 2sec 50ms
    Migration completed.

Validación

Puede conectarse a la consola de NDCS y verificar que la nueva tabla se ha creado con los datos de origen.