Use o Kinesis Data Streams para capturar alterações do DynamoDB - Amazon DynamoDB

Use o Kinesis Data Streams para capturar alterações do DynamoDB

É possível usar o Amazon Kinesis Data Streams para capturar alterações no Amazon DynamoDB.

O Kinesis Data Streams capta alterações no nível de item em qualquer DynamoDB e as replica em um fluxo de dados do Kinesis. Suas aplicações podem acessar esse fluxo e visualizar as alterações em nível de item praticamente em tempo real. Você pode capturar e armazenar continuamente terabytes de dados por hora. Aproveite o tempo de retenção de dados mais longo e com o recurso de distribuição avançada para atingir simultaneamente duas ou mais aplicações downstream. Outros benefícios incluem auditoria adicional e transparência de segurança.

O Kinesis Data Streams também oferece acesso ao Amazon Kinesis Data Firehose e ao Amazon Managed Service for Apache Flink. Isso permite construir aplicações para alimentar painéis em tempo real, gerar alertas, implementar definições de preço e de publicidade dinâmicas e implementar análises de dados e algoritmos de machine learning sofisticados.

nota

O uso do Kinesis Data Streams para DynamoDB está sujeito ao preço do Kinesis Data Streams para o fluxo de dados e ao preço do DynamoDB para a tabela de origem.

Como o Kinesis Data Streams funciona com o DynamoDB

Quando um fluxo de dados do Kinesis é habilitado para uma tabela do DynamoDB, a tabela envia um registro de dados que captura alterações nos dados dessa tabela. Esse registro de dados inclui:

  • O horário específico em que um item foi criado, atualizado ou excluído recentemente

  • A chave primária desse item

  • Um snapshot do registro antes da modificação

  • Um snapshot do registro após a modificação

Esses registros de dados são capturados e publicados praticamente em tempo real. Depois de gravados no fluxo de dados do Kinesis, poderão ser lidos como qualquer outro registro. É possível usar a Biblioteca de clientes Kinesis, usar o AWS Lambda, chamar a API do Kinesis Data Streams e usar outros serviços conectados. Para obter mais informações, consulte Ler dados do Amazon Kinesis Data Streams no Guia do desenvolvedor do Amazon Kinesis Data Streams.

Essas alterações nos dados também são capturadas de forma assíncrona. O Kinesis não afetará a performance da tabela da qual estiver fazendo streaming. Os registros de fluxo armazenados no fluxo de dados do Kinesis também são criptografados em repouso. Para obter mais informações, consulte Proteção de dados no Amazon Kinesis Data Streams.

Os registros de fluxo de dados do Kinesis poderão aparecer em uma sequência diferente da sequência na qual ocorreram as modificações dos itens. As mesmas notificações de item também poderão aparecer mais de uma vez no fluxo. Confira o atributo ApproximateCreationDateTime para identificar a sequência em que as modificações dos itens ocorreram e para identificar registros duplicados.

Ao habilitar um fluxo de dados do Kinesis como destino de streaming de uma tabela do DynamoDB, você pode configurar a precisão dos valores de ApproximateCreationDateTime em milissegundos ou microssegundos. Por padrão, ApproximateCreationDateTime indica a hora da alteração em milissegundos. Além disso, é possível alterar esse valor em um destino de streaming ativo. Depois dessa atualização, os registros de fluxo gravados no Kinesis terão valores de ApproximateCreationDateTime com a precisão desejada.

Valores binários gravados no DynamoDB devem ser codificados em formato codificado em base64. No entanto, quando os registros de dados são gravados em um fluxo de dados do Kinesis, esses valores binários são codificados em base64 pela segunda vez. Ao ler esses registros de um fluxo de dados do Kinesis, para recuperar os valores binários brutos, as aplicações devem decodificar esses valores duas vezes.

O DynamoDB cobra pelo uso para Kinesis Data Streams em unidades de captura de dados de alterações. 1 KB de alteração por item único conta como uma unidade de captura de dados de alteração. Os KB de alteração em cada item são calculados pela maior das imagens de “antes” e “depois” do item gravado no fluxo, usando a mesma lógica que o consumo de unidades de capacidade para operações de gravação. Não é necessário provisionar a capacidade de throughput para unidades de captura de dados de alteração, semelhante a como o modo sob demanda do DynamoDB funciona.

Ativar um fluxo de dados do Kinesis para a tabela do DynamoDB

Você pode habilitar ou desabilitar o streaming para o Kinesis em uma tabela existente do DynamoDB usando o AWS Management Console, o AWS SDK ou a AWS Command Line Interface (AWS CLI).

  • Só é possível fazer o streaming de dados do DynamoDB para o Kinesis Data Streams na mesma conta da AWS e região da AWS que sua tabela.

  • Só é possível fazer o streaming de dados de uma tabela do DynamoDB para um fluxo de dados do Kinesis.

Alterar um destino do Kinesis Data Streams em uma tabela do DynamoDB

Por padrão, todos os registros de fluxo de dados do Kinesis incluem um atributo ApproximateCreationDateTime. Esse atributo representa um carimbo de data e hora, em milissegundos, da hora aproximada em que cada registro foi criado. Você pode alterar a precisão desses valores usando o https://console.aws.amazon.com/kinesis, o SDK ou a AWS CLI.