Fluxos de captura de dados de alteração (visualização prévia)
Importante
Esse recurso é fornecido como visualização prévia da AWS e está sujeito a alterações. Para obter mais informações, consulte a seção 2, Versões beta e visualizações prévias, nos Termos de serviço da AWS
Antes da disponibilidade geral, adicionaremos novos tipos de operação ("op": "u" para atualizações) à carga útil do fluxo. Para garantir que seu aplicativo processe essas alterações sem modificações, trate qualquer valor op não reconhecido como um acréscimo aplicando a carga útil after. Para mais detalhes, consulte Noções básicas sobre os registros de CDC.
A captura de dados de alteração (CDC) do Amazon Aurora DSQL transmite alterações confirmadas no banco de dados quase em tempo real diretamente para o Amazon Kinesis Data Streams. O Aurora DSQL entrega cada alteração confirmada no nível da linha como um registro JSON estruturado para um fluxo de dados do Kinesis que você configura.
A CDC pode ser usada quando você quer:
-
Manter os sistemas downstream sincronizados: replique as alterações em um índice de pesquisa, cache, data warehouse ou sistema de análise sem trabalhos em lote.
-
Criar arquiteturas orientadas por eventos: acione fluxos de trabalho, notificações ou ações de microsserviços em resposta às alterações do banco de dados.
-
Manter uma trilha de auditoria: capture todas as alterações confirmadas para fins de conformidade, depuração ou análise histórica.
-
Separar os produtores dos consumidores: deixe o banco de dados se concentrar nas transações enquanto os sistemas downstream processam as alterações em seu próprio ritmo.
Como funciona
O Aurora DSQL lê transações confirmadas, formata cada alteração de linha como um registro JSON estruturado e a entrega a um fluxo de dados do Kinesis que você configura. A CDC captura automaticamente todas as INSERT, UPDATE e DELETE em tabelas de usuários no cluster. Aplique a lógica de filtragem em seus aplicativos downstream usando os campos source.schema e source.table em cada registro de CDC para se concentrar nas tabelas ou nas alterações de que seu aplicativo precisa.
Os fluxos de CDC são totalmente gerenciados. O Aurora DSQL gerencia toda a infraestrutura necessária para capturar eventos de alteração, monitora a integridade do fluxo e relata o status por meio da operação de API GetStream e das métricas do CloudWatch.
Os fluxos de CDC usam um modelo bring-your-own-target. Você cria e gerencia o fluxo de dados do Kinesis em sua conta, e o Aurora DSQL assume um perfil do IAM configurado para gravar registros de CDC em seu nome. Você é responsável pelas configurações de capacidade, criptografia e retenção do destino. Para obter os destinos compatíveis mais recentes, consulte o parâmetro TargetDefinition em CreateStream na Referência de API do Amazon Aurora DSQL. Para obter uma lista completa de operações de API do fluxo de CDC, consulte a Referência de API do Amazon Aurora DSQL.
Tópicos nesta página
Tópicos relacionados
Semântica de ordem e entrega
Garantias de entrega
A CDC do Aurora DSQL garante que cada alteração confirmada chegue ao destino pelo menos uma vez. O Aurora DSQL pode entregar um registro mais de uma vez. Projete seu aplicativo para lidar com duplicatas. Você pode identificar uma duplicata comparando source.ts_ns e os valores da chave primária. Uma duplicata tem os mesmos valores da entrega original.
Ordem
Os fluxos de CDC usam o modo UNORDERED. Na prática, os registros chegam na ordem aproximada de confirmação porque o Aurora DSQL lê e publica as alterações em sequência. No entanto, o Aurora DSQL não garante uma ordem estrita. Especificamente:
-
O Aurora DSQL pode entregar registros de diferentes transações em qualquer ordem.
-
Os registros da mesma chave primária de transações diferentes podem chegar fora da ordem de confirmação.
-
Os registros de uma única transação podem ser intercalados com registros de outras transações. Use o campo
source.txIdpara agrupar registros por transação quando seu fluxo de trabalho exigir isso.
Cada registro de CDC inclui um campo source.ts_ns que contém o carimbo de data/hora da confirmação da transação em nanossegundos. Use esse campo para estabelecer a ordem de confirmação no lado receptor.
Estratégias do consumidor
Como os registros podem chegar fora da ordem de confirmação e podem aparecer mais de uma vez, seu aplicativo deve considerar as duas condições.
Importante
Defina uma chave primária em todas as tabelas que participam da CDC. Sem uma chave primária, seu aplicativo não pode desduplicar registros nem correlacionar exclusões com a linha afetada.
Last-writer-wins (visões materializadas, caches)
Acompanhe o valor source.ts_ns mais alto por chave primária. Descarte qualquer registro com source.ts_ns menor ou igual ao valor rastreado. Isso filtra registros duplicados e fora de ordem, mantendo o estado mais recente de cada chave. Ao processar uma exclusão (op: "d"), armazene um tombstone para a chave primária que preserva o valor source.ts_ns em vez de remover a entrada. O tombstone garante que uma inserção ou atualização com um source.ts_ns anterior que chega após a exclusão não restaure incorretamente a linha.
Processamento de todas as alterações (registro de auditoria, fornecimento de eventos)
Remova duplicatas comparando o source.ts_ns combinado com os valores da chave primária. Armazene os registros recebidos e classifique-os por source.ts_ns antes do processamento para reconstruir a ordem de confirmação.
Configuração de fluxo de CDC multirregional
Um fluxo de CDC é um recurso regional. Cada fluxo pertence a uma única região da AWS e fornece alterações em um fluxo de dados do Kinesis na mesma região. Em um cluster multirregional, um fluxo de CDC em qualquer região captura gravações confirmadas de todas as regiões do cluster. Isso significa que você só precisa de um fluxo para capturar todas as alterações, independentemente da origem da gravação. Para disponibilizar registros de CDC em mais de uma região, crie um fluxo separado em cada região. Cada fluxo captura de forma independente o conjunto completo de alterações confirmadas em todo o cluster.
Todos os recursos (o cluster do Aurora DSQL, o fluxo de dados do Kinesis, o perfil de serviço do IAM e a entidade principal responsável pela chamada) devem estar na mesma conta e região da AWS.
Processamento de registros de CDC downstream
Depois que os registros de CDC chegarem ao fluxo de dados do Kinesis, você poderá processá-los diretamente ou roteá-los para outros destinos usando serviços de integração da AWS. A tabela a seguir resume os padrões de processamento comuns.
| Pattern | Como funciona |
|---|---|
| Consumo direto | Read records from Kinesis by using the Amazon Kinesis Client Library (KCL), the AWS SDK, or a Kinesis Data Streams consumer. See Desenvolvimento de consumidores do KCL in the Guia do desenvolvedor do Amazon Kinesis Data Streams. |
| AWS Lambda | Configure a Lambda function as an event source for your Kinesis data stream to process each batch of CDC records as they arrive. See Uso do AWS Lambda com o Amazon Kinesis in the AWSGuia do desenvolvedor do Lambda. |
| Amazon Data Firehose | Deliver CDC records from Kinesis to Amazon S3, Amazon Redshift, Amazon OpenSearch Service, or other destinations for analytics and archival. See Envio de dados para um fluxo de entrega in the Guia do desenvolvedor do Amazon Data Firehose. |
| Consumidores autogerenciados | Run Apache Kafka Connect with the Kinesis source connector, Apache Flink, or other stream processing frameworks to transform and route records. For Apache Flink on AWS, see Configuração da entrada do aplicativo in the Guia do desenvolvedor do Amazon Managed Service for Apache Flink. |
Cada registro de CDC inclui campos como source.schema, source.table e op que você pode usar para rotear e filtrar registros em sua lógica de processamento. Para ver o esquema completo do registro, consulte Noções básicas sobre os registros de CDC.