Migre os Dados do Amazon DynamoDB para o Oracle NoSQL Database Cloud Service

Há duas opções para migrar dados do Amazon DynamoDB para o Oracle NoSQL Database Cloud Service usando o Oracle NoSQL Database Migrator:

  • Usando o esquema padrão NoSQL da Oracle
  • Usando um esquema personalizado

Ambas as opções exigem um arquivo JSON de configuração que inclua informações sobre os arquivos de origem e o banco de dados de destino (sink). Em ambos os cenários, a origem são arquivos JSON formatados pelo Amazon DynamoDB armazenados no Amazon S3 Object Storage, enquanto o destino é o banco de dados Oracle NoSQL Database Cloud Service. Como o Amazon DynamoDB é um banco de dados sem esquema, recomendamos migrar usando um esquema padrão NoSQL da Oracle.

Migrar Dados Usando o Esquema Padrão NoSQL da Oracle

Ao migrar usando o esquema padrão, uma nova tabela do Oracle NoSQL Database Cloud Service é criada com duas ou três colunas: chave de partição, chave de classificação (opcional) e documento. A chave de partição e a chave de classificação são migradas da tabela Amazon DynamoDB para a tabela Oracle NoSQL Database Cloud Service. Todos os atributos restantes do Amazon DynamoDB são agregados no formato JSON na coluna do documento.

As etapas a seguir descrevem como migrar dados usando o esquema padrão NoSQL da Oracle.

  1. No console da AWS, crie uma chave de acesso (se ainda não existir) para o usuário que acessará o Armazenamento de Objetos do Amazon S3 no qual os dados do Amazon DynamoDB estão sendo exportados.
    Recomendamos a criação de um novo usuário e a criação de uma nova chave de acesso para o usuário. Não crie uma chave de acesso para o usuário da conta raiz da Amazon. Ao criar uma chave de acesso, um caso de uso deve ser fornecido. Certifique-se de usar o caso de uso "Aplicativo em execução fora da AWS: Você planeja usar essa chave de acesso para autenticar cargas de trabalho em execução em seu data center ou em outra infraestrutura fora da AWS que precisa acessar seus recursos da AWS". Para obter mais informações sobre como criar um usuário ou chaves de acesso, consulte a seção Review Documentation.
    Anote a chave de acesso e a chave de acesso secreta. Eles não serão exibidos novamente.
  2. Crie um bucket do Amazon S3 se ainda não existir um. Observe o nome, a região e o URL do bucket do bucket.
    Consulte "Criando um bucket" na seção Revisar Documentação para obter mais informações.
  3. Selecione o serviço Amazon DynamoDB e, em seguida, selecione a tabela Amazon DynamoDB a ser migrada para o Oracle NoSQL Database Cloud Service.
    Em Informações Gerais, anote o nome e o tipo da chave de partição e classifique os atributos da chave.
  4. Clique em Exportar para S3 no menu do serviço Amazon DynamoDB e, em seguida, clique em Exportar para S3.
  5. Selecione o nome da tabela a ser exportada e, em seguida, o nome do bucket no qual os dados serão exportados (o nome do bucket criado na etapa 2).
  6. Configurar Definições de Exportação:
    • Selecione Exportação Total.
    • Selecione DynamoDB JSON para o formato de arquivo exportado.
    • Selecione a chave padrão do Amazon S3 para criptografia.
    • Ative a PITR (recuperação de ponto no tempo). Obrigatório para a tabela a ser exportada.
  7. Clique em Exportar.
    Anote o ID de Exportação enquanto a exportação avança. Consulte "DynamoDB data export to Amazon S3: how it works" para obter mais informações sobre exportação.
  8. Após a conclusão da exportação, navegue até o console da AWS e selecione o serviço Amazon S3.
  9. Selecione o bucket no qual os dados foram exportados.
    Um novo diretório foi criado dentro do bucket chamado AWSDynamoDB/ExportID. Um subdiretório chamado data é criado nesse diretório que contém uma série de arquivos JSON compactados GZIP com os dados da tabela Amazon DynamoDB exportados. Consulte "DynamoDB table export output format" na seção Review Documentation para obter mais informações sobre os arquivos JSON formatados.
  10. Na console do OCI, crie uma chave de API para o usuário do OCI que será proprietário da tabela de destino do Oracle NoSQL Database Cloud Service. Esse usuário deve ter permissões para criar e gerenciar a tabela do Oracle NoSQL Database Cloud Service.
    Observe o OCID do usuário, o OCID da tenancy, a impressão digital e o ID da região do OCI. Salve as chaves privada e pública nos arquivos PEM. Essa chave de API é usada pelo Oracle NoSQL Database Migrator para fazer upload dos arquivos JSON formatados do Amazon DynamoDB para a tabela.
  11. Crie um compartimento para a tabela do Oracle NoSQL Database Cloud Service se ainda não existir um.
    Observe o nome do compartimento.
  12. Crie uma instância de computação.
    Essa instância de computação executará o software Oracle NoSQL Database Migrator. Uma instância de Computação Always Free (VM.Standard.E4). Flex com 1 OCPU e 16 GB de memória) é suficiente e econômico.
  13. Configure a instância de computação com o Oracle Linux 8.
  14. Use SSH para fazer log-in como opc user na nova instância de computação para instalar o Java 11 da seguinte forma:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Faça download dos binários do Oracle NoSQL Database Migrator 1.5.0 se ainda não tiver feito isso. Consulte a seção Review Software Requirements para obter detalhes.
  16. Use o SCP para fazer upload do arquivo ZIP do Migrador do Oracle NoSQL Database para o diretório home opc user's na nova instância de computação.
  17. Use SSH para fazer log-in como opc user na instância de computação para descompactar o software Oracle NoSQL Database Migrator baixado na etapa anterior. O conteúdo do arquivo é descompactado para um novo diretório chamado /home/opc/nosql-migrator-1.5.0. Abra o arquivo da seguinte forma:
    [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. Use o SCP para fazer upload do arquivo PEM de chave privada da etapa 10 para o diretório home do opc user da instância de computação em que o Oracle NoSQL Database Migrator foi descompactado na etapa anterior.
  19. Use SSH para fazer log-in como opc user na instância de computação para criar um arquivo de identidade do OCI. Crie o arquivo de identidade do OCI no diretório /home/opc/.oci com o seguinte conteúdo:
    [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 na instância de computação, crie arquivos de configuração e credenciais da AWS. Adicione esses arquivos no diretório /home/opc/.aws com o seguinte conteúdo:
    [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. Na instância de computação, altere o diretório para o subdiretório nosql-migrator-1.5.0. Crie um arquivo JSON de configuração de migração que inclua informações sobre a origem e o destino (dissipador) da seguinte forma:
    [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. Execute a migração de dados usando o Oracle NoSQL Database Migrator e o arquivo JSON de configuração de migração criado na etapa anterior da seguinte forma:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_def_schema.json
    O job de migração criará uma nova tabela do Oracle NoSQL Database Migrator usando o esquema padrão e, em seguida, lerá o(s) arquivo(s) JSON formatado(s) do Amazon DynamoDB no Bucket de Armazenamento de Objetos do Amazon S3 para importar os dados desses arquivos para a tabela recém-criada.

Migrar Dados Usando um Esquema Personalizado

Ao usar um esquema personalizado para migrar, a nova tabela do Oracle NoSQL Database Cloud Service deve ser definida de forma semelhante ao esquema da tabela Amazon DynamoDB, usando uma DDL (Table Data Definition Language) do Oracle NoSQL Database Cloud Service. Os nomes e tipos de atributo da nova tabela devem ser iguais aos nomes e tipos de atributo na tabela Amazon DynamoDB. A chave de partição e a chave de classificação têm um limite de 2048 e 1024 bytes, respectivamente, enquanto no Oracle NoSQL Database Cloud Service essas chaves são limitadas a 64 bytes.

  1. No console da AWS, crie uma chave de acesso (se ainda não existir) para o usuário que acessará o Armazenamento de Objetos do Amazon S3 no qual os dados do Amazon DynamoDB estão sendo exportados.
    Recomendamos a criação de um novo usuário e a criação de uma nova chave de acesso para o usuário. Não crie uma chave de acesso para o usuário da conta raiz da Amazon. Ao criar uma chave de acesso, um caso de uso deve ser fornecido. Certifique-se de usar o caso de uso "Aplicativo em execução fora da AWS: Você planeja usar essa chave de acesso para autenticar cargas de trabalho em execução em seu data center ou em outra infraestrutura fora da AWS que precisa acessar seus recursos da AWS". Para obter mais informações sobre como criar um usuário ou chaves de acesso, consulte a seção Review Documentation.
    Observe a chave de acesso gerada e a chave de acesso secreta, pois elas não serão exibidas novamente.
  2. Crie um bucket do Amazon S3 se ainda não existir um. Observe o nome, a região e o URL do bucket do bucket.
    Consulte "Criando um bucket" na seção Revisar Documentação para obter mais informações.
  3. Selecione o serviço Amazon DynamoDB e, em seguida, selecione a tabela Amazon DynamoDB a ser migrada para o Oracle NoSQL Database Cloud Service.
    Em Informações Gerais, anote o nome e o tipo da chave de partição e classifique os atributos da chave. Observe os outros atributos na tabela e seus tipos.
  4. Clique em Exportar para S3 no menu do serviço Amazon DynamoDB e, em seguida, clique em Exportar para S3.
  5. Selecione o nome da tabela a ser exportada e, em seguida, o nome do bucket no qual os dados serão exportados (o nome do bucket criado na etapa 2).
  6. Configurar Definições de Exportação:
    • Selecione Exportação Total.
    • Selecione DynamoDB JSON para o formato de arquivo exportado.
    • Selecione a chave padrão do Amazon S3 para criptografia.
    • Ative a PITR (recuperação de ponto no tempo). Obrigatório para a tabela a ser exportada.
  7. Clique em Exportar.
    Anote o ID de Exportação enquanto a exportação avança. Consulte "DynamoDB data export to Amazon S3: how it works" para obter mais informações sobre exportação.
  8. Após a conclusão da exportação, navegue até o console da AWS e selecione o serviço Amazon S3.
  9. Selecione o bucket no qual os dados foram exportados.
    Um novo diretório foi criado dentro do bucket chamado AWSDynamoDB/ExportID. Um subdiretório chamado data é criado nesse diretório que contém uma série de arquivos JSON compactados GZIP com os dados da tabela Amazon DynamoDB exportados. Consulte "DynamoDB table export output format" na seção Review Documentation para obter mais informações sobre os arquivos JSON formatados.
  10. Na console do OCI, crie uma chave de API para o usuário do OCI que será proprietário da tabela de destino do Oracle NoSQL Database Cloud Service. Esse usuário deve ter permissões para criar e gerenciar a tabela do Oracle NoSQL Database Cloud Service.
    Observe o OCID do usuário, o OCID da tenancy, a impressão digital e o ID da região do OCI. Salve as chaves privada e pública nos arquivos PEM. Essa chave de API é usada pelo Oracle NoSQL Database Migrator para fazer upload dos arquivos JSON formatados do Amazon DynamoDB para a tabela.
  11. Crie um compartimento para a tabela do Oracle NoSQL Database Cloud Service se ainda não existir um.
    Observe o nome do compartimento.
  12. Crie uma instância de computação.
    Essa instância de computação executará o software Oracle NoSQL Database Migrator. Uma instância de Computação Always Free (VM.Standard.E4). Flex com 1 OCPU e 16 GB de memória) é suficiente e econômico.
  13. Configure a instância de computação com o Oracle Linux 8.
  14. Use SSH para fazer log-in como opc user na nova instância de computação para instalar o Java 11 da seguinte forma:
    [opc@oci-compute ~]$ sudo yum install java-11
  15. Faça download dos binários do Oracle NoSQL Database Migrator 1.5.0 se ainda não tiver feito isso. Consulte a seção Review Software Requirements para obter detalhes.
  16. Use o SCP para fazer upload do arquivo ZIP do Migrador do Oracle NoSQL Database para o diretório home opc user's na nova instância de computação.
  17. Use SSH para fazer log-in como opc user na instância de computação para descompactar o software Oracle NoSQL Database Migrator baixado na etapa anterior. O conteúdo do arquivo é descompactado para um novo diretório chamado /home/opc/nosql-migrator-1.5.0. Abra o arquivo da seguinte forma:
    [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. Use o SCP para fazer upload do arquivo PEM de chave privada da etapa 10 para o diretório home do opc user da instância de computação em que o Oracle NoSQL Database Migrator foi descompactado na etapa anterior.
  19. Use SSH para fazer log-in como opc user na instância de computação para criar um arquivo de identidade do OCI. Crie o arquivo de identidade do OCI no diretório /home/opc/.oci com o seguinte conteúdo:
    [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 na instância de computação, crie arquivos de configuração e credenciais da AWS. Adicione esses arquivos no diretório /home/opc/.aws com o seguinte conteúdo:
    [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. Altere o diretório para o subdiretório nosql-migrator-1.5.0 e, em seguida, crie uma instrução DDL (Data Definition Language) do Oracle NoSQL Database Cloud Service para criar uma nova tabela do Oracle NoSQL Database Cloud Service com atributos semelhantes aos coletados da tabela Amazon DynamoDB na etapa 3. Veja um exemplo de uma nova instrução DDL da tabela de criação do 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. Na instância de computação, altere o diretório para o subdiretório nosql-migrator-1.5.0. Crie um arquivo JSON de configuração de migração que inclua informações sobre a origem e o destino (dissipador) da seguinte forma:
    [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. Execute a migração de dados usando o Oracle NoSQL Database Migrator e o arquivo JSON de configuração de migração criado na etapa anterior da seguinte forma:
    [opc@oci-compute nosql-migrator-1.5.0]$ ./runMigrator --config ./migrator-config-dynamo-bucket_custom_schema.json
    O job de migração criará uma nova tabela do Oracle NoSQL Database Migrator usando a DDL de esquema personalizado definida na etapa 21. Em seguida, ele lerá o(s) arquivo(s) JSON formatado(s) pelo Amazon DynamoDB no Bucket de Armazenamento de Objetos do Amazon S3 para importar os dados desses arquivos para a tabela recém-criada.