Por que transmitir dados do SQL Server para o ClickHouse?
- Relatórios internos que não deixam os aplicativos de produção mais lentos
- Dashboards voltados para clientes que precisam ser rápidos e estar sempre atualizados
- Streaming de eventos, como manter os logs de atividade dos usuários atualizados para análises
O que você vai precisar para começar
Pré-requisitos
- Uma instância do SQL Server em execução
- Neste tutorial, usamos o AWS RDS para SQL Server, mas qualquer instância moderna do SQL Server serve.Configure o AWS SQL Server do zero.
- Uma instância do ClickHouse
- Self-hosted ou na nuvem.Configure o ClickHouse do zero.
- Streamkap
- Essa ferramenta será a base do seu pipeline de streaming de dados.
Informações de conexão
- Endereço do servidor do SQL Server, porta, nome de usuário e senha. É recomendável criar um usuário e uma função separados para que o Streamkap acesse seu banco de dados do SQL Server.Confira nossa documentação sobre a configuração.
- Endereço do servidor do ClickHouse, porta, nome de usuário e senha. As listas de acesso por IP no ClickHouse determinam quais serviços podem se conectar ao seu banco de dados ClickHouse.Siga as instruções aqui.
- As tabelas que você quer transmitir em streaming — por enquanto, comece com uma só
1
Criando uma origem SQL Server no Streamkap
Vamos nessa!Começaremos configurando a conexão da fonte. É assim que o Streamkap sabe de onde buscar as alterações.Veja como fazer:
- Abra o Streamkap e vá para a seção de fontes.
- Crie uma nova fonte.
- Dê a ela um nome fácil de identificar (por exemplo, sqlserver-demo-source).
- Preencha os detalhes da conexão com o SQL Server:
- Host (por exemplo, your-db-instance.rds.amazonaws.com)
- Porta (o padrão do SQL Server é 3306)
- Nome de usuário e senha
- Nome do banco de dados
O que acontece nos bastidores
Quando você configurar isso, o Streamkap se conectará ao SQL Server e detectará as tabelas. Para esta demo, vamos escolher uma tabela com alguns dados já chegando em streaming, como eventos ou transações.2
Adicione o ClickHouse como destino no Streamkap
Agora vamos configurar o destino para onde enviaremos todos esses dados.Assim como na origem, vamos criar um destino usando os detalhes da nossa conexão com o ClickHouse.
Etapas:
- Vá para a seção de destinos no Streamkap.
- Adicione um novo destino — escolha ClickHouse como tipo de destino.
- Insira as informações do seu ClickHouse:
- Host
- Porta (o padrão é 9000)
- Nome de usuário e senha
- nome do banco de dados
Modo upsert: o que é isso?
Esta é uma etapa importante: queremos usar o modo “upsert” do ClickHouse, que (nos bastidores) usa o motor ReplacingMergeTree no ClickHouse. Isso nos permite mesclar os registros recebidos com eficiência e lidar com atualizações após a ingestão, usando o que o ClickHouse chama de “part merging”.- Isso garante que sua tabela de destino não fique cheia de duplicatas quando houver mudanças no lado do SQL Server.
Como lidar com a evolução de esquema
Às vezes, o ClickHouse e o SQL Server não têm as mesmas colunas, especialmente quando seu aplicativo está em produção e os desenvolvedores continuam adicionando colunas dinamicamente.- Boa notícia: o Streamkap consegue lidar com a evolução básica do esquema. Isso significa que, se você adicionar uma nova coluna no SQL Server, ela também aparecerá no ClickHouse.
3
Configure o pipeline no Streamkap
Com a origem e o destino definidos, chegou a hora da parte divertida: fazer streaming dos seus dados!
Configuração do pipeline
- Vá para a aba Pipelines no Streamkap.
- Crie um novo pipeline.
-
Selecione sua origem do SQL Server (
sqlserver-demo-source). -
Selecione seu destino do ClickHouse (
clickhouse-tutorial-destination). -
Escolha a tabela que você quer transmitir — digamos que seja
events. - Configure para CDC (Change Data Capture).
- Nesta execução, vamos transmitir apenas dados novos (se quiser, pule o carregamento de dados históricos no início e foque nos eventos de CDC).
Você deve fazer backfill?
Você pode estar se perguntando: devo carregar dados antigos?Em muitos casos de analytics, talvez você só queira começar transmitindo as alterações a partir de agora, mas sempre poderá voltar e carregar dados antigos também.Por enquanto, basta escolher “don’t backfill”, a menos que você tenha uma necessidade específica.4
Monitore o fluxo de dados
Agora seu pipeline está configurado e ativo!Veja o que acontece:Espere alguma defasagem em cenários de alta carga, mas, na maioria dos casos de uso, o streaming ocorre quase em tempo real.
- À medida que novos dados chegam à tabela de origem no SQL Server, o pipeline do Streamkap captura a alteração e a envia para o ClickHouse.
- O ClickHouse (graças ao ReplacingMergeTree e à mesclagem de partes) faz a ingestão dessas linhas e mescla as atualizações.
- O schema acompanha—adicione colunas no SQL Server e elas também aparecerão no ClickHouse.
Nos Bastidores: O que o Streamkap está realmente fazendo?
- O Streamkap monitora o log binário do SQL Server (o mesmo log usado para replicação).
- Assim que uma linha é inserida, atualizada ou excluída na sua tabela, o Streamkap captura o evento.
- Ele converte o evento em algo que o ClickHouse entende e o envia — aplicando as alterações instantaneamente no seu banco de dados analítico.
Opções avançadas
Modos Upsert vs. Insert
- Modo Insert: Cada nova linha é adicionada — mesmo que seja uma atualização, você acabará com duplicatas.
- Modo Upsert: As atualizações de linhas existentes sobrescrevem o que já está lá — muito melhor para manter as análises sempre atualizadas e organizadas.
Lidando com mudanças de schema
- Adicionou uma nova coluna à sua tabela operacional? O Streamkap vai detectá-la e adicioná-la também no ClickHouse.
- Removeu uma coluna? Dependendo das configurações, talvez você precise de uma migração — mas, na maioria dos casos, adicionar colunas ocorre sem problemas.
Monitoramento no mundo real: acompanhando de perto o pipeline
Verificando a integridade do pipeline
- Ver a defasagem do pipeline (quão atualizados estão seus dados?)
- Monitorar a contagem de linhas e o throughput
- Receber alertas se algo estiver fora do normal
Métricas comuns para monitorar
- Defasagem: Quanto o ClickHouse está atrás do SQL Server?
- Throughput: Linhas por segundo
- Taxa de erro: Deve ficar próxima de zero
Em produção: consultando o ClickHouse
Próximos passos e aprofundamentos
- Configurar streams filtrados (sincronizar apenas algumas tabelas/colunas)
- Fazer streaming de múltiplas fontes para um único banco de dados analítico
- Combinar isso com S3/lagos de dados para armazenamento a frio
- Automatizar migrações de schema ao alterar tabelas
- Proteger seu pipeline com SSL e regras de firewall
FAQ e solução de problemas
Concluindo
- Upsert vs. Insert e os detalhes de cada abordagem
- Latência de ponta a ponta: com que rapidez você consegue chegar à sua visão analítica final?
- Performance tuning e throughput
- Dashboards reais com base nessa stack