O Que é Change Data Capture (CDC) ?

Descubra o que é Change Data Capture (CDC), o processo mais eficiente para replicação das suas bases de dados.


É bastante comum que banco de dados transacionais precisem ser replicados em um data lake, isso porque o data lake irá permitir que a sua organização importe qualquer quantidade de dados, de várias fontes, em seu formato original, economizando o tempo de definição de estruturas de dados, esquemas e transformações, e também permitindo que você execute com o framework da sua escolha as análises desses dados.

Uma forma de replicar os dados é fazer o que é chamado de replicação completa ou bulk load update, neste caso, o sistema faz a replicação de todos os dados de forma agendada, de acordo com certas condições a depender do caso de uso. Este método é relativamente simples de implementar mas possui as desvantagens de utilizar muito recurso computacional para bases de dados maiores e não fazer uma sincronização em tempo real.

Em contraste com a replicação completa da base de dados, que se torna mais e mais complicada conforme a quantidade de dados aumenta, existe o método conhecido por Change Data Capture – CDC, este processo, por sua vez, captura apenas as alterações adicionadas na base de dados entre uma versão e outra e pode transferir em tempo real essas mudanças para um outro destino, como por exemplo um data lake ou data warehouse, incluindo plataformas em nuvem como Amazon S3, Amazon Redshift, Google Cloud Storage, Snowflake e Microsoft Azure.

Na prática, o CDC sincroniza os bancos de dados instantânea e automaticamente assim que os dados de origem são alterados. Uma vez que os dados estejam replicados, é possível fazer as análises necessárias no data lake, sem sobrecarregar o banco de dados de produção. Atualmente, pela eficiência do processo de Change Data Capture, esse setup tem se tornado cada vez mais comum.

Existem diferentes abordagens para implementação do CDC, as mais citadas são através de triggers ou logs.

  • Abordagem utilizando logs:tipicamente os sistemas de gerenciamento de banco de dados salvam cada mudança feita pelos usuário nos logs de transação, estes logs existem para garantir que quando necessário um estado anterior dos dados seja restaurado e não haja nenhuma perda. Uma solução de CDC baseada em logs lê as mudanças descritas nos logs de transação da base fonte e as reproduz na base de destino. Esta abordagem possui alta confiabilidade, e os logs de transações ficam separados dos registros em um banco de dados, portanto, não há necessidade de escrever procedimentos adicionais que colocam mais carga no sistema. Uma desvantagem é que cada sistema de gerenciamento de banco de dados possui sua própria sintaxe para a escrita do log de transações, o que torna mais difícil a replicação e generalização desta abordagem, por exemplo, o log de transações do MySQL é o Binary Log (binlog), enquanto o do PostgreSQL é o Write-Ahead Logging (WAL).

  • Abordagem utilizando triggers:os triggers (gatilhos) são funções a nível de banco de dados que executam quando um determinado evento acontece, por exemplo, “BEFORE UPDATE” ou “AFTER INSERT” de uma tabela. Os triggers podem dificultar a performance do banco de dados, porque eles são executados à medida que as mudanças são feitas na base. Para uma solução CDC com triggers, a cada transação, as mudanças inseridas são capturadas por triggers e salvas numa tabela separada (bem como nos logs de transação) o que sobrecarrega o banco com uma carga extra de trabalho, além disso, os triggers precisam ser definidos separadamente tabela por tabela que será replicada.

De forma geral, a abordagem mais recomendada é a baseada em logs. Fizemos uma representação em esquema das etapas para ficar mais claro, vejam só:

 

Para concluir, o Change Data Capture permite que os dados sejam replicados quase instantaneamente e de forma mais eficiente, registrando as alterações de dados de forma incremental, em vez de depender de transferências de dados massivas de uma só vez. A abordagem mais eficiente de CDC é a que utiliza os logs de transação dos sistemas de gerenciamento de banco de dados para extrair e replicar as modificações. Por fim, a utilização de boas ferramentas disponíveis no mercado irá facilitar a implementação de todo este processo, algumas das ferramentas são: Debezium, Azure Data Factory, AWS Database Migration Service e FlyData.

 

Quer saber mais sobre change data capture?

Acompanha este vídeo que fiz sobre CDC no AWS usando database migration service.

 

Se Inscreva Na Nossa Newsletter Tenha Acesso Aos Melhores Artigos