> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ClickHouse® est un système de gestion de base de données SQL orienté colonnes (SGBD) pour le traitement analytique en ligne (OLAP). Il est disponible à la fois en tant que logiciel open source et en tant qu’offre Cloud.

# Qu’est-ce que ClickHouse ?

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

ClickHouse® est un système de gestion de base de données (SGBD) SQL haute performance orienté colonnes pour le traitement analytique en ligne (OLAP). Il est disponible à la fois en tant que [logiciel open source](https://github.com/ClickHouse/ClickHouse) et sous forme d’[offre Cloud](https://clickhouse.com/cloud).

<div id="what-are-analytics">
  ## Qu’est-ce que l’analytique ?
</div>

L’analytique, également appelée OLAP (Online Analytical Processing), désigne des requêtes SQL comportant des calculs complexes (par exemple, des agrégations, du traitement de chaînes de caractères ou des calculs arithmétiques) sur de très grands volumes de données.

Contrairement aux requêtes transactionnelles (ou OLTP, Online Transaction Processing), qui ne lisent et n’écrivent que quelques lignes par requête et s’exécutent donc en quelques millisecondes, les requêtes analytiques traitent couramment des milliards, voire des milliers de milliards de lignes.

Dans de nombreux cas d’usage, les [requêtes analytiques doivent être « en temps réel »](https://clickhouse.com/engineering-resources/what-is-real-time-analytics), c’est-à-dire renvoyer un résultat en moins d’une seconde.

<div id="row-oriented-vs-column-oriented-storage">
  ## Stockage orienté lignes ou orienté colonnes
</div>

Un tel niveau de performance ne peut être atteint qu’avec la bonne « orientation » des données.

Les bases de données stockent les données soit [en lignes, soit en colonnes](https://clickhouse.com/engineering-resources/what-is-columnar-database).

Dans une base de données orientée lignes, les lignes successives d’une table sont stockées séquentiellement, les unes à la suite des autres. Cette disposition permet de récupérer rapidement les lignes, car les valeurs de chaque colonne d’une ligne sont stockées ensemble.

ClickHouse est une base de données orientée colonnes. Dans ce type de système, les tables sont stockées sous forme de collection de colonnes, c’est-à-dire que les valeurs de chaque colonne sont stockées séquentiellement les unes à la suite des autres. Cette disposition rend plus difficile la reconstitution de lignes individuelles (car il existe désormais des écarts entre les valeurs d’une même ligne), mais les opérations sur les colonnes, comme les filtres ou l’agrégation, deviennent bien plus rapides que dans une base de données orientée lignes.

La différence s’illustre le mieux avec un exemple de requête exécutée sur 100 millions de lignes de [données réelles anonymisées d’analyse du trafic web](/fr/get-started/sample-datasets/anon-web-analytics-metrica) :

```sql theme={null}
SELECT MobilePhoneModel, COUNT() AS c
FROM metrica.hits
WHERE
      RegionID = 229
  AND EventDate >= '2013-07-01'
  AND EventDate <= '2013-07-31'
  AND MobilePhone != 0
  AND MobilePhoneModel not in ['', 'iPad']
GROUP BY MobilePhoneModel
ORDER BY c DESC
LIMIT 8;
```

Vous pouvez [exécuter cette requête dans le ClickHouse SQL Playground](https://sql.clickhouse.com?query=U0VMRUNUIE1vYmlsZVBob25lTW9kZWwsIENPVU5UKCkgQVMgYyAKRlJPTSBtZXRyaWNhLmhpdHMgCldIRVJFIAogICAgICBSZWdpb25JRCA9IDIyOSAKICBBTkQgRXZlbnREYXRlID49ICcyMDEzLTA3LTAxJyAKICBBTkQgRXZlbnREYXRlIDw9ICcyMDEzLTA3LTMxJyAKICBBTkQgTW9iaWxlUGhvbmUgIT0gMCAKICBBTkQgTW9iaWxlUGhvbmVNb2RlbCBub3QgaW4gWycnLCAnaVBhZCddIApHUk9VUCBCWSBNb2JpbGVQaG9uZU1vZGVsCk9SREVSIEJZIGMgREVTQyAKTElNSVQgODs\&chart=eyJ0eXBlIjoicGllIiwiY29uZmlnIjp7InhheGlzIjoiTW9iaWxlUGhvbmVNb2RlbCIsInlheGlzIjoiYyJ9fQ\&run_query=true) qui sélectionne et filtre [quelques-unes seulement parmi plus de 100](https://sql.clickhouse.com/?query=U0VMRUNUIG5hbWUKRlJPTSBzeXN0ZW0uY29sdW1ucwpXSEVSRSBkYXRhYmFzZSA9ICdtZXRyaWNhJyBBTkQgdGFibGUgPSAnaGl0cyc7\&tab=results\&run_query=true) colonnes existantes, et renvoie le résultat en quelques millisecondes :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/qvDh3oxLPI7c74wx/images/column-oriented-example-query.png?fit=max&auto=format&n=qvDh3oxLPI7c74wx&q=85&s=fb524ca2ff9f3a1d358ded0ed315e657" alt="Exemple de requête dans une base de données orientée colonnes" size="lg" width="2496" height="1080" data-path="images/column-oriented-example-query.png" />

Comme vous pouvez le voir dans la section des statistiques du schéma ci-dessus, la requête a traité 100 millions de lignes en 92 millisecondes, soit un débit de plus d’un milliard de lignes par seconde, ou un peu moins de 7 Go de données transférées par seconde.

**SGBD orienté lignes**

Dans une base de données orientée lignes, même si la requête ci-dessus ne traite que quelques-unes des colonnes existantes, le système doit tout de même charger du disque vers la mémoire les données d’autres colonnes. Cela s’explique par le fait que les données sont stockées sur le disque en fragments appelés [blocs](https://en.wikipedia.org/wiki/Block_\(data_storage\)) (généralement de taille fixe, par exemple 4 Ko ou 8 Ko). Les blocs sont les plus petites unités de données lues du disque vers la mémoire. Lorsqu’une application ou une base de données demande des données, le sous-système d’E/S disque du système d’exploitation lit les blocs nécessaires sur le disque. Même si seule une partie d’un bloc est nécessaire, le bloc entier est chargé en mémoire (en raison de la conception du disque et du système de fichiers) :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/Z1HvIxdS-kNnO1Sa/images/row-oriented.gif?s=41406a9318f85a0a2443461c5898f2e7" alt="Structure de base de données orientée lignes" size="lg" width="630" height="258" data-path="images/row-oriented.gif" />

**SGBD orienté colonnes**

Comme les valeurs de chaque colonne sont stockées séquentiellement, les unes à la suite des autres sur le disque, aucune donnée inutile n'est chargée lorsque la requête ci-dessus est exécutée.
Comme le stockage et le transfert par blocs du disque vers la mémoire sont alignés sur le mode d'accès aux données des requêtes analytiques, seules les colonnes nécessaires à une requête sont lues sur le disque, ce qui évite des E/S inutiles sur des données non utilisées. C'est [bien plus rapide](https://benchmark.clickhouse.com/) que le stockage par ligne, où des lignes entières (y compris des colonnes non pertinentes) sont lues :

<Image img="https://mintcdn.com/private-7c7dfe99-mintlify-fbfa8bee/qvDh3oxLPI7c74wx/images/column-oriented.gif?s=093379df6cbe42b0796dce5376b5c668" alt="Structure d'une base de données orientée colonnes" size="lg" width="630" height="258" data-path="images/column-oriented.gif" />

<div id="data-replication-and-integrity">
  ## Réplication et intégrité des données
</div>

ClickHouse utilise un mécanisme de réplication multi-maître asynchrone pour garantir un stockage redondant des données sur plusieurs nœuds. Une fois les données écrites sur n’importe quelle réplique disponible, toutes les autres répliques récupèrent leur copie en arrière-plan. Le système maintient des données identiques sur les différentes répliques. La récupération après la plupart des défaillances s’effectue automatiquement, ou semi-automatiquement dans les cas complexes.

<div id="role-based-access-control">
  ## Contrôle d’accès basé sur les rôles
</div>

ClickHouse assure la gestion des comptes utilisateurs à l’aide de requêtes SQL et permet de configurer un contrôle d’accès basé sur les rôles, semblable à celui que l’on trouve dans la norme ANSI SQL et dans les systèmes de gestion de bases de données relationnelles les plus répandus.

<div id="sql-support">
  ## Prise en charge de SQL
</div>

ClickHouse prend en charge un [langage de requête déclaratif fondé sur SQL](/fr/reference/home), qui est dans de nombreux cas identique à la norme ANSI SQL. Les clauses de requête prises en charge incluent [GROUP BY](/fr/reference/statements/select/group-by), [ORDER BY](/fr/reference/statements/select/order-by), les sous-requêtes dans [FROM](/fr/reference/statements/select/from), la clause [JOIN](/fr/reference/statements/select/join), l'opérateur [IN](/fr/reference/statements/in), les [fonctions de fenêtre](/fr/reference/functions/window-functions/index) et les sous-requêtes scalaires.

<div id="approximate-calculation">
  ## Calcul approximatif
</div>

ClickHouse permet de privilégier les performances au détriment de la précision. Par exemple, certaines de ses fonctions d'agrégation calculent de manière approximative le nombre de valeurs distinctes, la médiane et les quantiles. De plus, les requêtes peuvent être exécutées sur un échantillon des données afin d'obtenir rapidement un résultat approximatif. Enfin, les agrégations peuvent être effectuées sur un nombre limité de clés plutôt que sur l'ensemble des clés. Selon le degré de déséquilibre dans la répartition des clés, cela peut fournir un résultat raisonnablement précis tout en utilisant bien moins de ressources qu'un calcul exact.

<div id="adaptive-join-algorithms">
  ## Algorithmes de jointure adaptatifs
</div>

ClickHouse choisit l'algorithme de jointure de façon adaptative : il commence par des jointures de hachage rapides et bascule vers des jointures de fusion lorsqu'il y a plus d'une grande table.

<div id="superior-query-performance">
  ## Excellentes performances des requêtes
</div>

ClickHouse est réputé pour offrir des performances de requête extrêmement rapides.
Pour comprendre pourquoi ClickHouse est si rapide, consultez le guide [Pourquoi ClickHouse est-il rapide ?](/fr/get-started/about/why-clickhouse-is-so-fast).
