O que é Change Data Capture e como implementar?
O Change Data Capture, também chamado de CDC, permite que você mova seus dados em tempo real e, com este conteúdo, você descobrirá como implementar o CDC e quais são os métodos principais para isso.
Atualmente, existem dois padrões de movimentação de dados amplamente aplicados na indústria: ETL e ELT.
No ETL os dados extraídos pelo CDC podem ser transformados em tempo real e, eventualmente, enviados para o Data Lake/Warehouse ou Lakehouse.
No ELT os dados são replicados para o Data Lake/Warehouse ou Lakehouse como estão e as transformações são realizadas dentro do sistema.
À medida que os conjuntos de dados modernos crescem e as soluções se tornam mais sensíveis ao tempo, o ETL/ELT tradicional tem dificuldade em acompanhar. Então, como os bancos de dados podem se adaptar aos requisitos em tempo real?
A resposta é: insira a captura de dados alterados ou Change Data Capture (CDC).
Com o CDC, os dados são transferidos em pequenos incrementos em tempo real, em vez de serem carregados em massa ou por janelas em lote. Com esse recurso, o CDC ajuda você a tomar decisões mais rápidas e precisas com movimentação de dados em real time.
Neste material, abordaremos os fundamentos do CDC, seus benefícios e alguns dos métodos mais comuns para implementá-lo.
O que é Change Data Capture (CDC)?
A captura de dados alterados (CDC) é comumente usada para replicação de bancos de dados e processamento de dados de várias fontes, como aplicações SaaS ou outros sistemas acessíveis apenas por meio de APIs.
Existem duas razões principais pelas quais o CDC está ganhando popularidade rapidamente:
- O CDC impulsiona casos de uso poderosos baseados em dados como um tipo de replicação de dados. Isso permite acesso consolidado a dados operacionais para análise em tempo real, streaming de dados e casos de uso de aprendizado de máquina.
- O CDC permite que os dados sejam transferidos em tempo real à medida que as alterações acontecem. Isso o torna inestimável para organizações que operam sistemas críticos 24 horas por dia, 7 dias por semana, sem tempo para janelas em lote, especialmente onde o impacto no processamento do banco de dados prejudica diretamente o processo de negócios primário. Como os sistemas críticos contêm os dados mais importantes para ajudar a tomar decisões, o acesso em tempo real a esses dados é necessário para ser mais competitivo.
ETL e CDC
O CDC pode parecer novo, mas na verdade é apenas uma melhoria do familiar processo ETL (Extrair, Transformar, Carregar) usado para carregar dados em um Data Warehouse ou Data Lake.
Vamos examinar e ver como é o CDC em cada etapa do processo ETL.
Extrair
Durante o estágio de extração do ETL, o CDC extrai dados em tempo real (ou quase em tempo real) e fornece um fluxo contínuo de dados alterados.
Tradicionalmente, esse processo é realizado em lotes, onde uma única consulta ao banco de dados extrai uma grande quantidade de dados em massa. Embora isso certamente dê conta do recado, rapidamente se torna ineficiente à medida que os bancos de dados de origem são continuamente atualizados.
Por ter que atualizar sempre uma réplica das tabelas de origem, a tabela de destino pode não refletir com precisão o estado atual do aplicativo de origem. O CDC evita esse problema mantendo um fluxo de dados em tempo real.
Transformar
O CDC também apresenta novas eficiências na fase de transformação.
Tradicionalmente, conjuntos de dados inteiros precisam ser transformados usando ferramentas ETL para corresponder à estrutura e ao formato da tabela ou repositório de destino antes do carregamento. Embora isso ainda seja verdade com o CDC, ele não tenta transformar grandes lotes de dados de uma só vez.
Em vez disso, os dados são carregados continuamente à medida que a origem muda e, depois, transformados no repositório de destino. Com o tamanho cada vez maior dos dados modernos, esta abordagem não é apenas mais eficiente, ela é necessária para acompanhar o volume dos dados que precisam ser armazenados e analisados.
Carregar
Como você deve ter percebido na seção “transformar”, o carregamento e a transformação ocorrem quase simultaneamente com o CDC. Na verdade, o carregamento ocorre antes da transformação, já que a maioria dos repositórios de destino baseados em nuvem lidam com esse processo de transformar os dados.
Benefícios do Change Data Capture
Tornar o CDC parte de suas integrações de dados apresenta uma série de benefícios exclusivos e não apenas para ETL. De modo geral, as operações em tempo real do CDC permitem que você e sua organização integrem, analisem e utilizem dados com mais rapidez do que nunca.
Aqui estão algumas maneiras pelas quais a eficiência do Chance Data Capture pode beneficiar suas integrações de dados:
Operações em tempo real
Sem mais janelas em lote ou carregamento em massa, o ETL ocorre em tempo real e com melhor comunicação entre repositórios e fontes de dados. Isto também reduz o impacto nas extrações de origem, que não precisam mais ser atualizadas de uma só vez.
Impacto reduzido nos recursos do sistema
O princípio fundamental do CDC é que ele transfere dados em pequenos incrementos, em vez de cargas em massa. Isso reduz bastante o impacto nos recursos do sistema que, de outra forma, seriam consumidos em excesso durante o carregamento em massa, podendo onerar o negócio.
Migrações de banco de dados mais rápidas e sem tempo de inatividade
A capacidade do CDC de mover dados de forma rápida e eficiente também permite migrações de bancos de dados em tempo real, sem qualquer tempo de inatividade. Isso também permite análises em tempo real, sincronização e outras aplicações em sistemas distribuídos.
Sincronização entre vários sistemas de dados
Como uma extensão do acima exposto, a transferência de dados em tempo real do Change Data Capture também permite que vários sistemas permaneçam sincronizados, independentemente de onde estejam localizados. Este é um benefício extremamente importante para aplicações e ambientes urgentes.
Alterar métodos de captura de dados
Existem muitos métodos diferentes para implementar a captura de dados alterados em diferentes tipos de bancos de dados. Para manter as coisas simples, vamos nos concentrar em bancos de dados relacionais, que são comumente usados para processamento de dados operacionais.
Existem vários tipos de captura de dados alterados que podem ser usados para processamento de dados de um banco de dados. Isso inclui CDC baseado em log, CDC baseado em gatilho, CDC baseado em time stamp e CDC baseado em diferença.
Change Data Capture baseada em log
A maioria dos bancos de dados criados para processamento de transações online (OLTP) usa um log para registrar alterações. No caso de falha do sistema ou do banco de dados, o log de transações permite a recuperação do banco de dados sem perdas. Fundamentalmente, todas as alterações confirmadas e recuperáveis podem ser encontradas nos logs do banco de dados.
Um mecanismo de captura baseado em log analisa as alterações, de forma assíncrona, a partir das transações que enviam as alterações. Algumas tecnologias de banco de dados fornecem uma API para CDC baseado em log. Outros não, e é necessário conhecimento profundo para implementar as mudanças.
Poucos fornecedores, incluindo nosso parceiro para CDC, a Fivetran, fornecem Change Data Capture baseado em log por meio dos chamados leitores de log binário. Um leitor de log binário analisa o log de transações diretamente, sem camadas intermediárias de API que possam retardar ou limitar a captura de dados alterados.
Os leitores de log binário também têm impacto mínimo no processamento do banco de dados e oferecem maior flexibilidade nas opções de implantação. Por exemplo, a leitura do log binário pode ser realizada em um sistema standby ou com base nos backups do log.
Alguns casos de uso de replicação de dados exigem consistência transacional alinhada com as tabelas de origem de dados. O CDC baseado em log permite isso por padrão porque os limites da transação e a ordem de confirmação estão no log de transações.
Além disso, o CDC baseado em log permite voltar no tempo e recuperar alterações históricas.
- Bom para: bancos de dados de missão crítica e mais ocupados que não podem permitir uma lentidão no processamento. Estes são os sistemas com os conjuntos de dados mais importantes que você deseja incluir em casos de uso analíticos. O CDC baseado em log lida com os maiores volumes de dados alterados em tempo real.
- Quando considerar outros tipos de CDC: algumas tecnologias ou implantações, como bancos de dados na nuvem, ou aplicativos entregues como uma solução ou dispositivo hospedado, simplesmente não permitem CDC baseado em log.
Change Data Capture baseada em trigger
O CDC baseado em trigger é uma abordagem para registrar as alterações à medida que elas acontecem. Cada operação de inserção, exclusão e atualização não apenas executa sua respectiva alteração, mas um gatilho é acionado para registrar a alteração em uma tabela de alterações separada.
A abordagem baseada em gatilhos (triggers) foi preferida antes do desenvolvimento de soluções baseadas em logs. Hoje em dia, as organizações querem evitar o impacto dos gatilhos no processamento do banco de dados. No entanto, o CDC baseado em triggers ainda funciona bem, e é até mesmo a solução nativa da SAP para CDC, por exemplo.
Existem duas implementações comuns para captura baseada em gatilho:
- Registre a alteração na sua totalidade. Isso permite o acesso ao histórico completo das alterações, mas efetivamente duplica a quantidade de dados gravados no banco de dados para a transação de origem. Assim como todos os dados alterados em tabelas separadas, recuperá-los é simples.
- Registre apenas a chave identificadora da linha e o tipo de operação (inserir, atualizar ou excluir). Esta abordagem tem impacto mínimo na transação de origem. Porém, conhecer apenas a chave e o tipo de operação não é suficiente para reconstruir todo o histórico de alterações. A extração de dados geralmente consome recursos extras devido à junção necessária entre a tabela de alterações e a tabela base para recuperar os valores atuais.
- Bom para: casos de uso em que o desempenho das transações e do banco de dados não é crítico e seu sistema tem capacidade de processamento adequada.
- Quando considerar outros tipos de CDC: se o processamento do seu banco de dados não puder arcar com a sobrecarga dos acionadores do banco de dados devido a requisitos críticos de processamento de dados ou altos volumes. Além disso, aplicativos prontos para uso podem não permitir a adição de triggers. Se o seu caso de uso exigir consistência transacional, o CDC baseado em gatilho também não é uma boa opção.
Change Data Capture com base em “carimbos de data/hora” (ou outro limite baixo)
Algumas aplicações registram quando cada alteração de linha é executada em uma coluna separada (por exemplo, LAST_MODIFIED). As alterações podem ser extraídas simplesmente acompanhando quando as alterações foram extraídas mais recentemente e filtrando na respectiva coluna.
Uma grande desvantagem desta abordagem é a incapacidade de identificar linhas excluídas. Algumas tecnologias armazenam naturalmente uma marca d’água baixa em cada linha. Por exemplo, PostgreSQL usa XMIN.
Se o valor aumentar monotonicamente, o CDC também pode usar essa alternativa de marca d’água baixa.
- Bom para: aplicativos com uma coluna confiável de marca d’água baixa em todas as tabelas. O CDC baseado em TimeStamp ou marca d’água baixa é uma alternativa quando outras opções, incluindo CDC baseado em log ou em gatilho, não estão disponíveis.
- Quando considerar outros tipos de CDC: se você precisar do processamento de exclusões. Se a consistência transacional exata for importante, então o CDC baseado em carimbo de data/hora (TimeStamp) ou marca d’água baixa geralmente não é uma boa opção.
Esses benefícios fazem do CDC uma solução moderna e valiosa para a arquitetura de dados de grandes organizações. Se você quiser entender melhor como podemos te apoiar nesta jornada, fale com um dos nossos especialistas e descubra como podemos te ajudar com a implementação de Change Data Capture!