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
1
Créer une source SQL Server dans Streamkap
C’est parti !Nous allons commencer par configurer la connexion à la source. C’est ainsi que Streamkap sait d’où récupérer les modifications.Voici comment procéder :
- Ouvrez Streamkap et accédez à la section Sources.
- Créez une nouvelle source.
- Donnez-lui un nom facilement identifiable (par exemple, sqlserver-demo-source).
- Renseignez les détails de connexion à votre 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 arrière-plan
Une fois cette configuration effectuée, Streamkap se connectera à votre SQL Server et détectera les tables. Pour cette démo, nous choisirons une table contenant déjà des données en cours de diffusion, comme des événements ou des transactions.2
Ajouter une destination ClickHouse dans Streamkap
Passons maintenant à la configuration de la destination vers laquelle nous enverrons toutes ces données.Comme pour la source, nous allons créer une destination à l’aide de nos informations de connexion à ClickHouse.
É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 d’upsert : qu’est-ce que c’est ?
Il s’agit d’une étape importante : nous voulons utiliser le mode « upsert » de ClickHouse, qui utilise en arrière-plan le moteur ReplacingMergeTree dans ClickHouse. Cela nous permet de fusionner efficacement les enregistrements entrants et de gérer les mises à jour après l’ingestion, grâce à ce que ClickHouse appelle la « fusion des parts ».- Cela garantit que votre table de destination ne se remplit pas de doublons lorsque des changements interviennent du côté de SQL Server.
Gestion de l’évolution du schéma
ClickHouse et SQL Server n’ont pas toujours les mêmes colonnes, en particulier lorsque votre application est en production et que les développeurs continuent d’ajouter des colonnes à la volée.- Bonne nouvelle : Streamkap peut gérer les évolutions de schéma de base. Cela signifie que si vous ajoutez une nouvelle colonne dans SQL Server, elle apparaîtra également dans ClickHouse.
3
Configurer le pipeline dans Streamkap
La source et la destination étant définies, passons à la partie amusante : diffuser vos données en continu !
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 diffuser en continu — par exemple, events.
- Configurez la capture des changements de données (CDC).
- Pour cet essai, nous diffuserons uniquement les nouvelles données (n’hésitez pas à ignorer le chargement de l’historique au départ et à vous concentrer sur les événements CDC).
Faut-il charger l’historique ?
Vous vous demandez peut-être : faut-il charger les anciennes données ?Dans de nombreux cas d’analytics, vous pouvez simplement commencer par diffuser les changements à partir de maintenant, puis revenir plus tard pour charger aussi les données plus anciennes.Choisissez simplement « ne pas charger l’historique » pour le moment, sauf si vous avez un besoin précis.4
Surveiller le flux de données
Votre pipeline est maintenant configuré et actif !Voici ce qui se passe :Attendez-vous à un certain délai dans les scénarios de forte charge, mais, dans la plupart des cas d’usage, le streaming est quasi en temps réel.
- À 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 parts) 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