Sincronize bancos de dados mais facilmente com ferramentas de código aberto
O projeto Apache SeaTunnel de código aberto é uma plataforma de integração de dados que facilita a sincronização de dados.
Change Data Capture (CDC) usa agentes de servidor para registrar, inserir, atualizar e excluir atividades aplicadas a tabelas de banco de dados. O CDC fornece detalhes sobre alterações em um formato relacional fácil de usar. Ele captura informações de coluna e metadados necessários para aplicar as alterações ao ambiente de destino para linhas modificadas. Uma tabela variável que espelha a estrutura de colunas da tabela de origem controlada armazena essas informações.
Capturar dados alterados não é tarefa fácil. No entanto, o projeto de código aberto Apache SeaTunnel i é uma plataforma de integração de dados que fornece à função CDC uma filosofia de design e um conjunto de recursos que tornam essas capturas possíveis, com recursos acima e além das soluções existentes.
Cenários de uso do CDC
Os casos de uso clássicos do CDC são a sincronização de dados ou backups entre bancos de dados heterogêneos. Você pode sincronizar dados entre MySQL, PostgreSQL, MariaDB e bancos de dados semelhantes em um cenário. Você poderia sincronizar os dados com um mecanismo de pesquisa de texto completo em um exemplo diferente. Com o CDC, você pode criar backups de dados com base no que o CDC capturou.
Quando bem projetado, o sistema de análise de dados obtém dados para processamento assinando alterações nas tabelas de dados de destino. Não há necessidade de incorporar o processo de análise no sistema existente.
Compartilhando estado de dados entre microsserviços
Os microsserviços são populares, mas o compartilhamento de informações entre eles costuma ser complicado. O CDC é uma solução possível. Os microsserviços podem usar o CDC para obter alterações em outros bancos de dados de microsserviços, adquirir atualizações de status dos dados e executar a lógica correspondente.
Atualizar cache
O conceito de Command Query Responsibility Segregation (CQRS) é a separação da atividade de comando da atividade de consulta. Os dois são fundamentalmente diferentes:
- Um comando grava dados em uma fonte de dados.
- Uma consulta lê dados de uma fonte de dados.
O problema é: quando ocorre um evento de leitura em relação a quando ocorreu um evento de gravação, e qual é o fardo de fazer com que esses eventos ocorram?
Pode ser difícil atualizar um cache. Você pode usar o CDC para obter eventos de atualização de dados de um banco de dados e permitir que isso controle a atualização ou invalidação do cache.
O design do CQRS geralmente usa duas instâncias de armazenamento diferentes para oferecer suporte a consultas de negócios e operações de alteração. Devido ao uso de dois armazenamentos, para garantir a consistência dos dados, podemos usar transações distribuídas para garantir uma forte consistência dos dados, ao custo da disponibilidade, desempenho e escalabilidade. Você também pode usar o CDC para garantir a consistência final dos dados, que tem melhor desempenho e escalabilidade, mas às custas da latência dos dados, que atualmente pode ser mantida na faixa de milissegundos na indústria.
Por exemplo, você pode usar o CDC para sincronizar dados do MySQL com seu mecanismo de pesquisa de texto completo, como o ElasticSearch. Nesta arquitetura, o ElasticSearch pesquisa todas as consultas, mas quando você deseja modificar os dados, você não altera diretamente o ElasticSearch. Em vez disso, você modifica os dados upstream do MySQL, o que gera um evento de atualização de dados. Este evento é consumido pelo sistema ElasticSearch enquanto monitora o banco de dados e o evento solicita uma atualização no ElasticSearch.
Em alguns sistemas CQRS, um método semelhante pode ser usado para atualizar a visualização da consulta.
Pontos de dor
CDC não é um conceito novo e vários projetos existentes o implementam. Para muitos usuários, porém, existem algumas desvantagens nas soluções existentes.
Configuração de tabela única
Com alguns softwares CDC, você deve configurar cada tabela separadamente. Por exemplo, para sincronizar dez tabelas, você precisa escrever dez SQLs de origem e SQLs de coletor. Para realizar uma transformação, você também precisa escrever o SQL de transformação.
Às vezes, uma tabela pode ser escrita à mão, mas apenas quando o volume é pequeno. Quando o volume é grande, podem ocorrer erros de mapeamento de tipo ou configuração de parâmetros, resultando em altos custos de operação e manutenção.
Apache SeaTunnel é uma plataforma de integração de dados fácil de usar que espera resolver esse problema.
A evolução do esquema não é suportada
Algumas soluções CDC suportam o envio de eventos DDL, mas não suportam o envio para o Sink para que ele possa fazer alterações síncronas. Mesmo um CDC que pode obter um evento pode não ser capaz de enviá-lo ao mecanismo porque não pode alterar as informações de tipo da transformação com base no evento DDL (portanto, o Sink não pode seguir o evento DDL para alterá-lo).
Muitos links
Em algumas plataformas CDC, quando existem diversas tabelas, um link deve ser utilizado para representar cada tabela enquanto uma delas está sincronizada. Quando há muitas tabelas, são necessários muitos links. Isso coloca pressão no banco de dados JDBC de origem e causa muitos Binlogs, o que pode resultar em análises repetidas de log.
Objetivos da arquitetura SeaTunnel CDC
Apache SeaTunnel é uma estrutura de integração de dados massiva, distribuída e de alto desempenho de código aberto. Para resolver os problemas que as funções CDC da ferramenta de integração de dados existente não conseguem resolver, a comunidade “reinventa a roda” para desenvolver uma plataforma CDC com características únicas. Este projeto arquitetônico é baseado nos pontos fortes e fracos das ferramentas CDC existentes.
Apache Seatunnel suporta:
- Dados históricos de instantâneos paralelos sem bloqueio.
- Detecção de pulsação de log e adição de tabela dinâmica.
- Leitura de subbancos de dados, subtabelas e tabelas multiestruturadas.
- Evolução do esquema.
- Todas as funções básicas do CDC.
O Apache SeaTunnel reduz os custos de operação e manutenção para os usuários e pode adicionar tabelas dinamicamente.
Por exemplo, quando você deseja sincronizar todo o banco de dados e adicionar uma nova tabela posteriormente, não é necessário mantê-la manualmente, alterar a configuração do trabalho ou interromper e reiniciar os trabalhos.
Além disso, o Apache SeaTunnel oferece suporte à leitura de subbancos de dados, subtabelas e tabelas multiestruturadas em paralelo. Ele também permite a evolução do esquema, transmissão DDL e alterações que suportam a evolução do esquema no mecanismo, que pode ser alterado para Transform e Sink.
Status atual do SeaTunnel CDC
Atualmente, o CDC possui os recursos básicos para suportar fases incrementais e de instantâneo. Ele também suporta MySQL para uso offline e em tempo real. O teste em tempo real do MySQL foi concluído e o teste offline está chegando. O esquema ainda não é compatível porque envolve alterações no Transform e no Sink. A descoberta dinâmica de novas tabelas ainda não é suportada e algumas interfaces foram reservadas para tabelas multiestruturadas.
Perspectiva do projeto
Como um projeto de incubação Apache, a comunidade Apache SeaTunnel está se desenvolvendo rapidamente. A próxima sessão de planejamento comunitário tem estas orientações principais:
1. Expandir e melhorar a ecologia de conectores e catálogos
Estamos trabalhando para aprimorar muitos recursos de conectores e catálogos, incluindo:
- Suporta mais conectores, incluindo TiDB, Doris e Stripe.
- Melhorar os conectores existentes em termos de usabilidade e desempenho.
- Suporte a conectores CDC para cenários de sincronização incremental em tempo real.
Qualquer pessoa interessada em conectores pode avaliar o Umbrella.
2. Suporte para mais cenários de integração de dados (SeaTunnel Engine)
Existem pontos problemáticos que os mecanismos existentes não conseguem resolver, como a sincronização de um banco de dados inteiro, a sincronização de alterações na estrutura da tabela e a grande granularidade de falhas de tarefas.
Estamos trabalhando para resolver esses problemas. Qualquer pessoa interessada no mecanismo CDC deve consultar a edição 2272.
3. Mais fácil de usar (SeaTunnel Web)
Estamos trabalhando para fornecer uma interface web para tornar as operações mais fáceis e intuitivas. Através de uma interface web, será possível exibir Catálogo, Conector, Job e informações relacionadas, na forma de DAG/SQL. Também estamos dando aos usuários acesso à plataforma de agendamento para lidar facilmente com o gerenciamento de tarefas.
Visite o subprojeto da web para obter mais informações sobre a UI da web.
Embrulhar
A atividade do banco de dados geralmente deve ser monitorada cuidadosamente para gerenciar alterações com base em atividades como atualizações, exclusões ou inserções de registros. O Change Data Capture fornece esse recurso. Apache SeaTunnel é uma solução de código aberto que atende a essas necessidades e continua a evoluir para oferecer mais recursos. O projeto e a comunidade são ativos e sua participação é bem-vinda.