Utilizar o Amazon Timestream como destino para o AWS Database Migration Service - AWS Database Migration Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Utilizar o Amazon Timestream como destino para o AWS Database Migration Service

Você pode usar o AWS Database Migration Service para migrar dados do banco de dados de origem para um endpoint de destino do Amazon Timestream, que aceita migrações de dados de carregamento completo e de CDC.

O Amazon Timestream é um serviço de banco de dados de séries temporais rápido, escalável e sem servidor criado para ingestão de dados de alto volume. Dados de séries temporais são uma sequência de pontos de dados coletados em um intervalo de tempo; eles são usados para medir eventos que mudam com o tempo. Ele é usado para coletar, armazenar e analisar métricas de aplicativos, DevOps aplicativos e aplicativos de análise de IoT. Assim que seus dados estiverem no Timestream, você poderá visualizar e identificar tendências e padrões nesses dados quase em tempo real. Para obter mais informações sobre o Amazon Timestream, consulte What is Amazon Timestream? no Guia do desenvolvedor do Amazon Timestream.

Pré-requisitos para usar o Amazon Timestream como destino para o AWS Database Migration Service

Antes de configurar o Amazon Timestream como destino para o AWS DMS, você deve criar um perfil do IAM. Esse perfil deve permitir que o AWS DMS tenha acesso aos dados que estão sendo migrados para o Amazon Timestream. O conjunto mínimo de permissões de acesso para o perfil que você usa para migrar para o Timestream é mostrado na política do IAM a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeEndpoints", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "timestream:ListTables", "timestream:DescribeDatabase" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "timestream:DeleteTable", "timestream:WriteRecords", "timestream:UpdateTable", "timestream:CreateTable" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME/table/TABLE_NAME" } ] }

Se você pretende migrar todas as tabelas, use * para TABLE_NAME no exemplo acima.

Observe o seguinte sobre o uso do Timestream como destino:

  • Se você pretende ingerir dados históricos com carimbos de data e hora superiores a um ano, recomendamos usar o AWS DMS para gravar os dados no Amazon S3 em um formato de valor separado por vírgula (csv). Em seguida, use o carregamento em lote do Timestream para ingerir os dados no Timestream. Para obter mais informações, consulte Using batch load in Timestream no Guia do desenvolvedor do Amazon Timestream.

  • Para migrações de carga máxima de dados com menos de um ano, recomendamos definir o período de retenção do armazenamento de memória da tabela do Timestream com um valor superior ou igual ao carimbo de data e hora mais antigo. Depois que a migração for concluída, mude a retenção do armazenamento de memória da tabela para o valor desejado. Por exemplo, para migrar dados quando o carimbo de data e hora mais antigo é de dois meses, faça o seguinte:

    • Defina a retenção do armazenamento de memória da tabela de destino do Timestream para dois meses.

    • Inicie a migração de dados usando o AWS DMS.

    • Quando a migração de dados for concluída, altere o período de retenção da tabela do Timestream de destino para o valor desejado.

    Recomendamos estimar o custo do armazenamento de memória antes da migração, usando as informações nas seguintes páginas:

  • Para migrações de dados de CDC, recomendamos definir o período de retenção do armazenamento de memória da tabela de destino de forma que os dados ingeridos estejam dentro dos limites de retenção do armazenamento de memória. Para obter mais informações, consulte Best Practices: Writes no Guia do desenvolvedor do Amazon Timestream.

Configurações da tarefa de carga máxima com vários threads

Para ajudar a aumentar a velocidade da transferência de dados, o AWS DMS comporta a tarefa de migração de carga máxima com vários threads para um endpoint de destino do Timestream com estas configurações:

  • MaxFullLoadSubTasks: utilize esta opção para indicar o número máximo de tabelas de origem a serem carregadas em paralelo. O DMS carrega cada tabela na tabela de destino correspondente do Amazon Timestream usando uma subtarefa dedicada. O padrão é 8; o valor máximo é 49.

  • ParallelLoadThreads: utilize esta opção para especificar o número de threads que o AWS DMS utiliza para carregar cada tabela na respectiva tabela de destino do Amazon Timestream. O valor máximo de um destino do Timestream é 32. Você pode solicitar o aumento desse limite máximo.

  • ParallelLoadBufferSize: utilize esta opção para especificar o número máximo de registros a serem armazenados no buffer utilizado pelos threads de carregamento paralelo para carregar dados no destino do Amazon Timestream. O valor padrão é 50. Valor máximo de 1.000. Use essa configuração com ParallelLoadThreads; ParallelLoadBufferSize é válido somente quando há mais de um thread.

  • ParallelLoadQueuesPerThread: utilize esta opção para especificar o número de filas que cada thread simultâneo acessa para extrair registros de dados das filas e gerar uma carga em lote para o destino. O padrão é um. No entanto, para destinos do Amazon Timestream de vários tamanhos de carga útil, o intervalo válido é de 5 a 512 filas por thread.

Configurações da tarefa de carga de CDC multithread

Para promover o desempenho da CDC, o AWS DMS oferece suporte a estas configurações de tarefa:

  • ParallelApplyThreads: especifica o número de threads simultâneos que o AWS DMS utiliza durante uma carga de CDC para enviar registros de dados para um endpoint de destino do Timestream. O valor padrão é 0 e o valor máximo é 32.

  • ParallelApplyBufferSize: especifica o número máximo de registros a serem armazenados em cada fila de buffer para os threads simultâneos enviarem a um endpoint de destino do Timestream durante uma carga de CDC. O valor padrão é 100 e o valor máximo é 1.000. Use essa opção quando ParallelApplyThreads especificar mais de um thread.

  • ParallelApplyQueuesPerThread: especifica o número de filas que cada thread acessa para extrair registros de dados das filas e gerar um carregamento em lote para um endpoint do Timestream durante a CDC. O valor padrão é 1 e o valor máximo é 512.

Configurações de endpoint ao usar o Timestream como um destino para o AWS DMS

É possível utilizar as configurações de endpoint para configurar o banco de dados de destino do Timestream de forma semelhante à utilização de atributos de conexão adicional. Você especifica as configurações ao criar o endpoint de destino utilizando o console do AWS DMS ou o comando create-endpoint na AWS CLI, com a sintaxe --timestream-settings '{"EndpointSetting": "value", ...}' do JSON.

A tabela a seguir mostra as configurações de endpoint que é possível utilizar com o Timestream como destino.

Nome Descrição

MemoryDuration

Defina esse atributo para especificar o limite de retenção para armazenamento dos dados migrados na memória do Timestream. O tempo é medido em unidades de horas. O armazenamento de memória do Timestream é otimizado para um alto throughput de ingestão e acesso rápido.

Valor padrão: 24 (horas)

Valores válidos: de 1 a 8.736 (de 1 hora a 12 meses medidos em horas)

Exemplo: --timestream-settings '{"MemoryDuration": 20}'

DatabaseName

Defina esse atributo para especificar o nome do banco de dados do Timestream de destino.

Tipo: string

Exemplo: --timestream-settings '{"DatabaseName": "db_name"}'

TableName

Defina esse atributo para especificar o nome da tabela do Timestream de destino.

Tipo: string

Exemplo: --timestream-settings '{"TableName": "table_name"}'

MagneticDuration

Defina esse atributo para especificar a duração magnética aplicada às tabelas do Timestream em dias. Esse é o limite de retenção para os dados ingeridos. O Timestream exclui qualquer carimbo de data e hora que exceda o limite de retenção. Para obter mais informações, consulte Storage no Guia do desenvolvedor do Amazon Timestream.

Exemplo: --timestream-settings '{"MagneticDuration": "3"}'

CdcInsertsAndUpdates

Defina esse atributo como true para especificar que o AWS DMS aplique somente inserções e atualizações, e não exclusões. O Timestream não permite a exclusão de registros; portanto, se esse valor for false, o AWS DMS anulará o registro correspondente no banco de dados do Timestream em vez de excluí-lo. Para obter mais informações, consulte Limitações a seguir.

Valor padrão: false

Exemplo: --timestream-settings '{"CdcInsertsAndUpdates": "true"}'

EnableMagneticStoreWrites

Defina esse atributo como true para habilitar gravações em armazenamento magnético. Quando esse valor é false, o AWS DMS não grava registros com um carimbo de data e hora anterior ao período de retenção do armazenamento de memória da tabela de destino, porque o Timestream não permite gravações no armazenamento magnético por padrão. Para obter mais informações, consulte Best Practices: Writes no Guia do desenvolvedor do Amazon Timestream.

Valor padrão: false

Exemplo: --timestream-settings '{"EnableMagneticStoreWrites": "true"}'

Criar e modificar um endpoint de destino do Amazon Timestream

Depois de criar um perfil do IAM e estabelecer o conjunto mínimo de permissões de acesso, você poderá criar um endpoint de destino do Amazon Timestream usando o console do AWS DMS ou o comando create-endpoint naAWS CLI com a sintaxe --timestream-settings '{"EndpointSetting": "value", ...}' do JSON.

Os exemplos a seguir mostram como criar e modificar um endpoint de destino do Timestream usando a AWS CLI.

Criar comando do endpoint de destino do Timestream

aws dms create-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "DatabaseName":"db_name", "MagneticDuration": 3, "CdcInsertsAndUpdates": true, "EnableMagneticStoreWrites": true, }

Modificar comando do endpoint de destino do Timestream

aws dms modify-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "MagneticDuration": 3, }

Utilizar o mapeamento de objetos para migrar dados para um tópico do Timestream

O AWS DMS utiliza regras de mapeamento de tabelas para correlacionar dados da origem com o tópico de destino do Timestream. Para mapear dados para um tópico de destino, utilize um tipo de regra de mapeamento de tabelas chamado mapeamento de objetos. Utilize o mapeamento de objetos para definir como os registros de dados na origem são correlacionados com os registros de dados publicados em um tópico do Timestream.

Os tópicos do Timestream não têm uma estrutura predefinida, exceto uma chave de partição.

nota

Não é necessário utilizar o mapeamento de objetos. É possível utilizar o mapeamento de tabela normal para várias transformações. No entanto, o tipo de chave de partição seguirá estes comportamentos padrão:

  • A chave primária é utilizada como uma chave de partição para a carga máxima.

  • Se nenhuma configuração de tarefas de aplicação paralela for utilizada, schema.table será usada como uma chave de partição para a CDC.

  • Se as configurações de tarefas de aplicação paralela forem utilizadas, a chave primária será utilizada como uma chave de partição para a CDC.

Para criar uma regra de mapeamento de objetos, especifique rule-type como object-mapping. Essa regra especifica o tipo de mapeamento de objeto que você deseja usar. A estrutura da regra é a seguinte:

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": { "schema-name": "case-sensitive schema name", "table-name": "" } } ] }

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "timestream-map", "rule-action": "map-record-to-record", "target-table-name": "tablename", "object-locator": { "schema-name": "", "table-name": "" }, "mapping-parameters": { "timestream-dimensions": [ "column_name1", "column_name2" ], "timestream-timestamp-name": "time_column_name", "timestream-multi-measure-name": "column_name1or2", "timestream-hash-measure-name": true or false, "timestream-memory-duration": x, "timestream-magnetic-duration": y } } ] }

Atualmente, o AWS DMS oferece suporte a map-record-to-record e map-record-to-document como os únicos valores válidos para o parâmetro rule-action. Os valores map-record-to-record e map-record-to-document especificam o que o AWS DMS faz por padrão com registros que não são excluídos como parte da lista de atributos exclude-columns. Esses valores não afetam os mapeamentos de atributos de forma alguma.

Utilize map-record-to-record ao migrar de um banco de dados relacional para um tópico do Timestream. Esse tipo de regra utiliza o valor taskResourceId.schemaName.tableName encontrado no banco de dados relacional como a chave de partição no tópico do Timestream e cria um atributo para cada coluna no banco de dados de origem. Ao usar map-record-to-record, para qualquer coluna na tabela de origem que não aparece na lista de atributos exclude-columns, o AWS DMS cria um atributo correspondente no tópico de destino. Este atributo correspondente é criado, independentemente de a coluna de origem ser usada ou não em um mapeamento de atributos.

Uma maneira de compreender o map-record-to-record é vê-lo em ação. Para este exemplo, suponha que você está começando com uma linha de tabela do banco de dados relacional com a seguinte estrutura de dados:

FirstName LastName StoreId HomeAddress HomePhone WorkAddress WorkPhone DateofBirth

Randy

Marsh

5

221B Baker Street

1234567890

31 Spooner Street, Quahog

9876543210

29/02/1988

Para migrar essas informações de um esquema chamado Test para um tópico do Timestream, crie regras para correlacionar os dados com o tópico de destino. A regra a seguir ilustra o mapeamento.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToTimestream", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "Test", "table-name": "Customers" } } ] }

Com um tópico do Timestream e uma chave de partição determinados (neste caso, taskResourceId.schemaName.tableName), o seguinte ilustra o formato do registro resultante utilizando os nossos exemplos de dados no tópico de destino do Timestream:

{ "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" }

Limitações do uso do Amazon Timestream como destino para o AWS Database Migration Service

As seguintes limitações se aplicam ao utilizar o Amazon Timestream como destino:

  • Dimensões e carimbos de data e hora: o Timestream usa as dimensões e os carimbos de data e hora nos dados de origem como uma chave primária composta e também não permite que você altere esses valores. Isso significa que, se você alterar o carimbo de data e hora ou as dimensões de um registro no banco de dados de origem, o banco de dados do Timestream tentará criar um registro. Portanto, é possível que, se você alterar a dimensão ou o carimbo de data e hora de um registro de forma que correspondam aos de outro registro existente, o AWS DMS atualizará os valores do outro registro em vez de criar um registro ou atualizar o registro correspondente anterior.

  • Comandos DDL: a versão atual do AWS DMS só aceita os comandos DDL CREATE TABLE e DROP TABLE.

  • Limitações de registro: o Timestream tem limitações para registros, como tamanho do registro e tamanho da medida. Para obter mais informações, consulte Cotas no Guia do desenvolvedor do Amazon Timestream.

  • Exclusão de registros e valores nulos: o Timestream não comporta exclusão de registros. Para comportar a migração de registros excluídos da origem, o AWS DMS limpa os campos correspondentes nos registros no banco de dados de destino do Timestream. O AWS DMS altera os valores nos campos do registro de destino correspondente para 0 nos campos numéricos, nulo nos campos de texto e falso nos campos boolianos.

  • O Timestream como destino não aceita origens que não sejam bancos de dados relacionais (RDBMS).

  • O AWS DMS só aceita o Timestream como destino nas seguintes regiões:

    • Leste dos EUA (Norte da Virgínia)

    • Leste dos EUA (Ohio)

    • Oeste dos EUA (Oregon)

    • Europa (Irlanda)

    • Europa (Frankfurt)

    • Ásia-Pacífico (Sydney)

    • Ásia-Pacífico (Tóquio)

  • O Timestream como destino não aceita que a configuração de TargetTablePrepMode como TRUNCATE_BEFORE_LOAD. É recomendável não usar essa configuração.