Fluxos de captura de dados de alterações
Consulte mais informações na página de preço do Aurora DSQL
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 o estado final confirmado de cada linha alterada como um registro JSON estruturado para um fluxo de dados do Kinesis configurado por você.
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 o efeito líquido confirmado de cada transação 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ê as transações confirmadas, formata a alteração líquida no nível da linha como um registro JSON estruturado e a entrega para um fluxo de dados do Kinesis configurado por você. O CDC captura automaticamente o efeito confirmado de cada INSERT, UPDATE e DELETE em todas as tabelas de usuário 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.
O Aurora DSQL compacta o conjunto de gravações de cada transação antes de publicar os registros de CDC e emite um único registro para cada linha com uma alteração líquida, refletindo o estado final. Para obter detalhes, consulte Compactação do conjunto de gravações.
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
O Aurora DSQL produz um registro de CDC para cada linha com uma alteração líquida no momento da confirmação da transação. Consulte detalhes sobre como o Aurora DSQL compacta várias operações na mesma linha em Compactação do conjunto de gravações.
O Aurora DSQL garante entrega de pelo menos uma vez para cada registro produzido. O Aurora DSQL pode entregar o mesmo registro mais de uma vez, portanto, projete a aplicação para lidar com registros duplicados. 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. O CDC entrega apenas o estado final de cada linha por transação confirmada (após Compactação do conjunto de gravações). Se o fluxo de trabalho de auditoria exigir um registro para cada instrução SQL, execute cada instrução em sua própria transaçã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.