Pourquoi acheminer des données de SQL Server vers ClickHouse en continu ?
- Des rapports internes qui ne ralentissent pas les applications de production
- Des tableaux de bord destinés aux clients, qui doivent être rapides et toujours à jour
- Le streaming d’événements, par exemple pour garder les logs d’activité des utilisateurs à jour à des fins d’analytics
Ce qu’il vous faut pour commencer
Prérequis
- Une instance SQL Server opérationnelle
- Pour ce tutoriel, nous utilisons AWS RDS pour SQL Server, mais toute instance SQL Server moderne fera l’affaire.Configurer AWS SQL Server à partir de zéro.
- Une instance ClickHouse
- Auto-hébergée ou dans le cloud.Configurer ClickHouse à partir de zéro.
- Streamkap
- Cet outil sera la pierre angulaire de votre pipeline de streaming de données.
Informations de connexion
- l’adresse du serveur SQL Server, le port, le nom d’utilisateur et le mot de passe. Il est recommandé de créer un utilisateur et un rôle distincts pour permettre à Streamkap d’accéder à votre base de données SQL Server.Consultez notre documentation pour la configuration.
- l’adresse du serveur ClickHouse, le port, le nom d’utilisateur et le mot de passe. Les listes d’accès IP dans ClickHouse déterminent quels services peuvent se connecter à votre base de données ClickHouse.Suivez les instructions ici.
- les tables que vous souhaitez diffuser — commencez-en par une seule pour l’instant
Configurer SQL Server comme source
Étape 1 : créer une source SQL Server dans Streamkap
- Ouvrez Streamkap et accédez à la section Sources.
- Créez une nouvelle source.
- Donnez-lui un nom explicite (par exemple, sqlserver-demo-source).
- Renseignez les informations de connexion à SQL Server :
- Hôte (par exemple, your-db-instance.rds.amazonaws.com)
- Port (le port par défaut de SQL Server est 3306)
- Nom d’utilisateur et mot de passe
- Nom de la base de données
Ce qui se passe en coulisses
Création d’une destination ClickHouse
Étape 2 : Ajouter une destination ClickHouse dans Streamkap
Étapes :
- Accédez à la section des destinations dans Streamkap.
- Ajoutez une nouvelle destination — choisissez ClickHouse comme type de destination.
- Saisissez vos informations de connexion ClickHouse :
- Hôte
- Port (la valeur par défaut est 9000)
- Nom d’utilisateur et mot de passe
- Nom de la base de données
Mode upsert : de quoi s’agit-il ?
- Cela garantit que votre table de destination ne se remplit pas de doublons lorsque des changements interviennent côté SQL Server.
Gestion de l’évolution du schéma
- Bonne nouvelle : Streamkap peut gérer les évolutions de schéma de base. Autrement dit, si vous ajoutez une nouvelle colonne dans SQL Server, elle apparaîtra aussi dans ClickHouse.
Mise en place du pipeline de streaming
Étape 3 : Configurer le pipeline dans Streamkap
Configuration du pipeline
- Accédez à l’onglet Pipelines dans Streamkap.
- Créez un nouveau pipeline.
-
Sélectionnez votre source SQL Server (
sqlserver-demo-source). -
Sélectionnez votre destination ClickHouse (
clickhouse-tutorial-destination). -
Choisissez la table que vous souhaitez synchroniser en continu — par exemple
events. - Configurez la capture des changements de données (CDC).
- Pour cette exécution, nous allons synchroniser uniquement les nouvelles données (vous pouvez ignorer le backfill dans un premier temps et vous concentrer sur les événements CDC).
Faut-il effectuer un backfill ?
Le streaming en action : à quoi s’attendre
Étape 4 : Surveillez le flux de données
- À mesure que de nouvelles données arrivent dans la table source de SQL Server, le pipeline Streamkap capture la modification et l’envoie à ClickHouse.
- ClickHouse (grâce à ReplacingMergeTree et à la fusion des parties) ingère ces lignes et fusionne les mises à jour.
- Le schéma reste synchronisé : ajoutez des colonnes dans SQL Server, et elles apparaîtront aussi dans ClickHouse.
Sous le capot : que fait réellement Streamkap ?
- Streamkap surveille le journal binaire de SQL Server (le même journal utilisé pour la réplication).
- Dès qu’une ligne est insérée, mise à jour ou supprimée dans votre table, Streamkap détecte l’événement.
- Il convertit l’événement dans un format compréhensible par ClickHouse et l’achemine — en appliquant instantanément les modifications dans votre base analytique.
Options avancées
Modes Upsert et Insert
- Mode Insert : chaque nouvelle ligne est ajoutée — même s’il s’agit d’une mise à jour, cela crée des doublons.
- Mode Upsert : les mises à jour des lignes existantes écrasent les données déjà présentes — c’est bien plus efficace pour garder les analyses à jour et propres.
Gestion des modifications du schéma
- Vous ajoutez une nouvelle colonne à votre table opérationnelle ? Streamkap la détectera et l’ajoutera également côté ClickHouse.
- Vous supprimez une colonne ? Selon la configuration, une migration peut être nécessaire, mais la plupart des ajouts se font sans accroc.
Supervision en production : garder un œil sur le pipeline
Vérification de l’état du pipeline
- Voir le décalage du pipeline (vos données sont-elles à jour ?)
- Surveiller le nombre de lignes et le débit
- Être alerté si quelque chose ne va pas
Métriques courantes à surveiller
- Retard : de combien ClickHouse est-il en retard sur SQL Server ?
- Débit : lignes par seconde
- Taux d’erreur : doit être proche de zéro
Mise en production : interroger ClickHouse
Étapes suivantes et approfondissements
- Configurer des flux filtrés (ne synchroniser que certaines tables/colonnes)
- Diffuser en streaming plusieurs sources vers une seule base de données analytique
- Combiner cela avec S3/des lacs de données pour le stockage à froid
- Automatiser les migrations de schéma lorsque vous modifiez des tables
- Sécuriser votre pipeline avec SSL et des règles de pare-feu
FAQ et dépannage
Pour conclure
- Upsert vs. Insert et les subtilités de chacun
- Latence de bout en bout : en combien de temps votre vue analytique finale est-elle disponible ?
- Optimisation des performances et débit
- Des dashboards concrets sur cette stack