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ó
Configurando o SQL Server como origem
Passo 1: Criar uma origem do SQL Server no Streamkap
- Abra o Streamkap e vá até a seção de origens.
- Crie uma nova origem.
- 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 está acontecendo nos bastidores
Criando um destino ClickHouse
Passo 2: Adicione um destino do ClickHouse no Streamkap
Etapas:
- Acesse 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 nome do banco de dados
Modo upsert: o que é isso?
- Isso garante que sua tabela de destino não fique cheia de duplicatas quando houver mudanças no SQL Server.
Lidando com a evolução do schema
- Boa notícia: o Streamkap consegue lidar com a evolução básica do schema. Isso significa que, se você adicionar uma nova coluna no SQL Server, ela também aparecerá no ClickHouse.
Construindo o pipeline de streaming
Passo 3: Configure o pipeline no Streamkap
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 captura de dados alterados (CDC).
- Nesta execução, vamos transmitir apenas dados novos (se quiser, deixe o backfill para depois e concentre-se nos eventos de CDC).
Você deve fazer backfill?
Streaming na prática: o que esperar
Passo 4: Acompanhe o fluxo de dados
- À medida que novos dados chegam à tabela de origem no SQL Server, o pipeline do Streamkap captura a mudança e a envia ao ClickHouse.
- O ClickHouse (graças ao ReplacingMergeTree e à mesclagem de partes) faz a ingestão dessas linhas e consolida as atualizações.
- O esquema acompanha as mudanças — 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