> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Streaming de données de SQL Server vers ClickHouse pour des analyses rapides

# Streaming de données de SQL Server vers ClickHouse pour des analyses rapides : guide pas à pas

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

Dans cet article, nous allons passer en revue un tutoriel qui montre comment transférer des données en continu de SQL Server vers ClickHouse. ClickHouse est idéal si vous recherchez des capacités d’analytics ultra-rapides pour alimenter des dashboards internes ou destinés à vos clients. Nous vous guiderons pas à pas pour configurer les deux bases de données, les connecter, puis utiliser [Streamkap](https://streamkap.com) pour acheminer vos données en continu. Si SQL Server gère vos opérations quotidiennes, mais que vous avez besoin de la rapidité et de la puissance analytique de ClickHouse, vous êtes au bon endroit.

<div id="why-stream-data-from-sql-server-to-clickhouse">
  ## Pourquoi acheminer des données de SQL Server vers ClickHouse en continu ?
</div>

Si vous êtes ici, vous voyez probablement bien le problème : SQL Server est très fiable pour les transactions, mais il n’est tout simplement pas conçu pour exécuter de lourdes requêtes analytiques en temps réel.

C’est là que ClickHouse excelle. ClickHouse est conçu pour l’analytics, avec une agrégation et un reporting ultra-rapides, même sur d’énormes jeux de données. Mettre en place un pipeline CDC en streaming pour envoyer vos données transactionnelles vers ClickHouse vous permet donc d’exécuter des rapports extrêmement rapides — idéal pour les équipes opérationnelles, les équipes produit ou les tableaux de bord clients.

Cas d’utilisation typiques :

* 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

<div id="what-youll-need-to-get-started">
  ## Ce qu’il vous faut pour commencer
</div>

Avant d’entrer dans les détails, voici ce que vous devriez avoir sous la main :

<div id="prerequisites">
  ### Prérequis
</div>

* 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.](https://streamkap.com/blog/how-to-stream-data-from-rds-sql-server-to-clickhouse-cloud-using-streamkap#setting-up-a-new-rds-sql-server-from-scratch)

* Une instance ClickHouse

* Auto-hébergée ou dans le cloud.[Configurer ClickHouse à partir de zéro.](https://streamkap.com/blog/how-to-stream-data-from-rds-sql-server-to-clickhouse-cloud-using-streamkap#creating-a-new-clickhouse-account)

* Streamkap

* Cet outil sera la pierre angulaire de votre pipeline de streaming de données.

<div id="connection-info">
  ### Informations de connexion
</div>

Assurez-vous d'avoir :

* 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.](https://www.google.com/url?q=https://docs.streamkap.com/docs/sql-server\&sa=D\&source=editors\&ust=1760992472358213\&usg=AOvVaw3jfocCF1VSijgsq1OCpZPj)
* 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.](https://www.google.com/url?q=https://docs.streamkap.com/docs/clickhouse\&sa=D\&source=editors\&ust=1760992472359060\&usg=AOvVaw3H1XqqwvqAso_TQPNBKEhD)
* les tables que vous souhaitez diffuser — commencez-en par une seule pour l'instant

<Steps>
  <Step title="Créer une source SQL Server dans Streamkap" id="step-1-creating-a-sql-server-source-in-streamkap">
    <a id="setting-up-sql-server-as-a-source" />

    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 :

    1. Ouvrez Streamkap et accédez à la section Sources.
    2. Créez une nouvelle source.

    * Donnez-lui un nom facilement identifiable (par exemple, sqlserver-demo-source).

    3. 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

    <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/image3.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=b0f0584f3a5d4ad25920d0bdedce7fe2" size="lg" width="1654" height="1156" data-path="images/integrations/data-ingestion/etl-tools/image3.webp" />

    #### Ce qui se passe en arrière-plan

    <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/image1.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=fe4e2ec6f907f030fdec36d1f2b4e71e" size="lg" width="1999" height="648" data-path="images/integrations/data-ingestion/etl-tools/image1.webp" />

    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.
  </Step>

  <Step title="Ajouter une destination ClickHouse dans Streamkap" id="step-2-add-a-clickhouse-destination-in-streamkap">
    <a id="creating-a-clickhouse-destination" />

    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 :

    1. Accédez à la section des destinations dans Streamkap.
    2. Ajoutez une nouvelle destination — choisissez ClickHouse comme type de destination.
    3. 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

    Capture d’écran d’exemple : ajout d’une nouvelle destination ClickHouse dans le tableau de bord Streamkap.

    ### 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.

    Sélectionnez simplement « schema evolution » dans les paramètres de votre destination. Vous pourrez toujours ajuster cela plus tard si nécessaire.
  </Step>

  <Step title="Configurer le pipeline dans Streamkap" id="step-3-set-up-the-pipeline-in-streamkap">
    <a id="building-the-streaming-pipeline" />

    La source et la destination étant définies, passons à la partie amusante : diffuser vos données en continu !

    #### Configuration du pipeline

    1. Accédez à l’onglet Pipelines dans Streamkap.

    2. Créez un nouveau pipeline.

    3. Sélectionnez votre source SQL Server (sqlserver-demo-source).

    4. Sélectionnez votre destination ClickHouse (clickhouse-tutorial-destination).

    5. Choisissez la table que vous souhaitez diffuser en continu — par exemple, events.

    6. 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).

    Capture d’écran des paramètres du pipeline — sélection de la source, de la destination et de la table.

    #### Faut-il charger l’historique ?

    <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/image2.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=116f56b3a29c08de2bbd85c5cbbfa00f" size="lg" width="1999" height="563" data-path="images/integrations/data-ingestion/etl-tools/image2.webp" />

    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.
  </Step>

  <Step title="Surveiller le flux de données" id="step-4-watch-the-data-stream">
    <a id="streaming-in-action-what-to-expect" />

    Votre pipeline est maintenant configuré et actif !

    Voici ce qui se passe :

    * À 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.

    Un tableau de bord en direct ou des logs montrent le nombre de lignes qui augmente dans ClickHouse et SQL Server en temps réel.

    Vous pouvez littéralement voir le nombre de lignes grimper dans ClickHouse à mesure que SQL Server reçoit des données.

    ```sql theme={null}
    -- Example: Checking rows in ClickHouse 
    SELECT COUNT(*) FROM analytics.events; |
    ```

    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.
  </Step>
</Steps>

<div id="under-the-hood-whats-streamkap-actually-doing">
  ## Sous le capot : que fait réellement Streamkap ?
</div>

Pour vous donner un aperçu :

* 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.

Ce n’est pas seulement de l’ETL — c’est une capture des changements de données (CDC) complète, en temps réel.

<div id="advanced-options">
  ## Options avancées
</div>

<div id="upsert-vs-insert-modes">
  ### Modes Upsert et Insert
</div>

Quelle est la différence entre le simple fait d’insérer chaque ligne (mode Insert) et le fait de s’assurer que les mises à jour et les suppressions sont elles aussi répliquées (mode Upsert) ?

* 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.

<div id="handling-schema-changes">
  ### Gestion des modifications du schéma
</div>

Les applications évoluent, et vos schémas aussi. Grâce à ce pipeline :

* 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.

<div id="real-world-monitoring-keeping-tabs-on-the-pipeline">
  ## Supervision en production : garder un œil sur le pipeline
</div>

<div id="checking-pipeline-health">
  ### Vérification de l’état du pipeline
</div>

Streamkap fournit un tableau de bord qui vous permet de :

* 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

Exemple de tableau de bord : graphique de latence, nombre de lignes, indicateurs d’état.

<div id="common-metrics-to-watch">
  ### Métriques courantes à surveiller
</div>

* 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

<div id="going-live-querying-clickhouse">
  ## Mise en production : interroger ClickHouse
</div>

Maintenant que vos données sont dans ClickHouse, vous pouvez les interroger à l’aide de tous ces outils d’analyse rapides. Voici un exemple simple :

```sql theme={null}
-- See top 10 active users in the last hour
SELECT user\_id, COUNT(*) AS actionsFROM analytics.eventsWHERE event\_time >= now() - INTERVAL 1 HOURGROUP BY user\_idORDER BY actions DESCLIMIT 10;
```

Associez ClickHouse à des outils de tableau de bord comme Grafana, Superset ou Redash pour un reporting complet.

<div id="next-steps-and-deep-dives">
  ## Étapes suivantes et approfondissements
</div>

Cette procédure pas à pas ne fait qu’effleurer les possibilités. Maintenant que vous maîtrisez les bases, voici ce que vous pouvez explorer ensuite :

* 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

Gardez un œil sur le [blog Streamkap](https://streamkap.com/blog) pour des guides plus approfondis.

<div id="faq-and-troubleshooting">
  ## FAQ et dépannage
</div>

Q : Est-ce que cela fonctionne avec des bases de données dans le cloud ?
A : Oui ! Nous avons utilisé AWS RDS dans cet exemple. Assurez-vous simplement d’ouvrir les bons ports.

Q : Qu’en est-il des performances ?
A : ClickHouse est rapide. Le goulot d’étranglement est généralement le réseau ou la vitesse du binlog de la base source, mais dans la plupart des cas, vous constaterez un retard inférieur à une seconde.

Q : Pouvez-vous aussi gérer les suppressions ?
A : Absolument. En mode upsert, les suppressions sont également marquées et gérées dans ClickHouse.

<div id="wrapping-up">
  ## Pour conclure
</div>

Voilà : un aperçu complet du streaming de vos données SQL Server vers ClickHouse avec Streamkap. C’est rapide, flexible, et idéal pour les équipes qui ont besoin d’analytics en temps quasi réel sans surcharger leurs bases de données de production.

Prêt à essayer ?
Rendez-vous sur la [page d’inscription](https://app.streamkap.com/account/sign-up) et dites-nous si vous souhaitez que nous abordions des sujets comme :

* 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

Merci de votre lecture ! Bon streaming.
