ClickHouse¶
Dans cet article
Information
ClickHouse est un système de gestion de base de données (SGBD) colonnaire haute performance conçu pour exécuter des requêtes analytiques de classe OLAP. Le SGBD est axé sur l'analyse de grands volumes de données avec une faible latence et est largement utilisé dans les tâches d'analyse, de surveillance, de journalisation et de traitement de la télémétrie.
ClickHouse. Fonctionnalités principales¶
- Stockage colonnaire : les données sont stockées par colonnes plutôt que par lignes, ce qui accélère considérablement l'exécution des requêtes analytiques et réduit le volume de données traitées.
- Haute performance : optimisé pour la gestion de jeux de données massifs et capable d'exécuter des requêtes sur des milliards de lignes grâce au traitement vectorisé et à une utilisation efficace du CPU.
- Compression des données : utilise des algorithmes de compression spécialisés qui peuvent réduire considérablement la quantité de données stockées (souvent plusieurs fois plus petit que les SGBD basés sur les lignes), en particulier sous des charges de travail analytiques.
- Compatibilité SQL : prend en charge une syntaxe SQL étendue avec des fonctions analytiques supplémentaires, simplifiant la migration des applications existantes.
- Traitement distribué : permet la création de clusters pour une mise à l'échelle horizontale et le traitement des données sur plusieurs serveurs.
- Réplication des données : la prise en charge intégrée de la réplication assure la tolérance aux pannes et une haute disponibilité des données.
- Prise en charge de plusieurs formats de données : peut importer et exporter des données au format CSV, JSON, Parquet, Avro et d'autres formats.
- Vues matérialisées : agrège automatiquement les données en arrière-plan pour accélérer les requêtes récurrentes.
- Intégration avec des sources externes : prend en charge la lecture directe de données depuis MySQL, PostgreSQL, MongoDB, Kafka, S3 et d'autres systèmes.
Fonctionnalités de déploiement¶
| ID | Nom du logiciel | Système d'exploitation compatible | VM | BM | VGPU | GPU | Min CPU (Cœurs) | Min RAM (GB) | Min HDD/SSD (GB) | Domaine personnalisé | Actif |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 492 | ClickHouse | Ubuntu 24.04, Ubuntu 22.04 | + | + | + | + | 4 | 8 | 120 | Non | COMMANDER |
-
Logiciels installés :
- ClickHouse Server >= 26.1.1
- ClickHouse Client >= 26.1.1
-
Spécificités d'installation :
- Logiciel installé via le script officiel du développeur ;
- Temps d'installation : 5 à 10 minutes ;
- La base de données est accessible pour les connexions réseau via divers clients SQL ;
- Par défaut, l'utilisateur
defaultavec le mot de passe du compterootest utilisé.
Emplacements des fichiers de configuration et de données :
- Configuration principale du serveur :
/etc/clickhouse-server/config.xml - Paramètres utilisateur :
/etc/clickhouse-server/users.xml - Journaux du serveur :
/var/log/clickhouse-server/clickhouse-server.log/var/log/clickhouse-server/clickhouse-server.err.log
- Données :
/var/lib/clickhouse/ - Fichier PID :
/run/clickhouse-server/clickhouse-server.pid - Limites système :
/etc/security/limits.d/clickhouse.conf
Ports disponibles pour les connexions :
| Port | Protocole | Objectif | Statut | Clients/Utilisation |
|---|---|---|---|---|
| 8123 | HTTP | Interface HTTP | Actif | DBeaver, DataGrip, Tableau, interface web, JDBC/ODBC |
| 9000 | TCP Native | Protocole natif ClickHouse | Actif | clickhouse-client, pilotes Python/Go |
| 9004 | MySQL | Émulation du protocole MySQL | Actif | MySQL Workbench, client mysql |
| 9005 | PostgreSQL | Émulation du protocole PostgreSQL | Actif | pgAdmin, client psql |
| 9009 | Interserver HTTP | Réplication entre serveurs | Actif | Communication intra-cluster |
| 8443 | HTTPS | Interface HTTP avec SSL | Optionnel | Nécessite la configuration d'un certificat SSL |
| 9100 | gRPC | Interface gRPC | Optionnel | Clients gRPC |
Remarque
Les ports 8443 et 9100 sont désactivés par défaut et nécessitent une configuration supplémentaire dans /etc/clickhouse-server/config.xml.
Remarque
Sauf indication contraire, nous installons la dernière version de sortie du logiciel depuis le site officiel du développeur.
Prise en main après le déploiement de ClickHouse¶
Une notification sera envoyée à l'adresse e-mail spécifiée lors de l'inscription indiquant que le serveur est prêt pour le travail après le paiement de la commande. Elle contiendra l'adresse IP du VPS, ainsi que le nom d'utilisateur et le mot de passe pour la connexion. Les clients de notre entreprise gèrent le matériel dans les serveurs et le panneau de contrôle API - Invapi.
Détails d'autorisation :
- Adresse IP du serveur : fournie dans l'e-mail et dans le panneau de contrôle ;
- Nom d'utilisateur :
default; - Mot de passe : correspond au mot de passe du compte
rootet est envoyé à l'adresse e-mail.
Important
Pour les clients GUI (DBeaver, DataGrip et autres), utilisez le port 8123 (interface HTTP). Le port 9000 est réservé uniquement au clickhouse-client natif.
Connexion à ClickHouse¶
Méthodes de connexion
Cette section décrit les méthodes les plus courantes pour se connecter à ClickHouse via clickhouse-client (client en ligne de commande) et DBeaver (interface graphique). ClickHouse prend également en charge les connexions via d'autres clients : DataGrip, Tableau, MySQL Workbench (via le port 9004), pgAdmin (via le port 9005), ainsi que des bibliothèques de programmation pour Python, Go, Java et d'autres langages.
Connexion via clickhouse-client¶
ClickHouse inclut un client natif en ligne de commande pour les opérations de base de données.
1. Connexion depuis le serveur (localement) :
2. Connexion depuis une machine distante :
3. Exécution d'une requête simple :
4. Affichage de la liste des bases de données :
Connexion via DBeaver¶
DBeaver est un client GUI universel pour travailler avec diverses bases de données, y compris ClickHouse.
1. Installation de DBeaver
Téléchargez et installez DBeaver depuis le site officiel.
2. Création d'une nouvelle connexion
- Lancez DBeaver
- Sélectionnez Database >> New Database Connection (ou appuyez sur
Ctrl+Shift+N)

- Dans la liste des bases de données, trouvez et sélectionnez ClickHouse

- Cliquez sur Next
3. Configuration des paramètres de connexion
Dans la fenêtre de paramètres, spécifiez les paramètres suivants :
Host: <IP-address of your server>
Port: 8123
Database/Schema: (laissez vide ou spécifiez default)
Username: default
Password: <mot_de_passe_root>

Important
Pour les connexions DBeaver, utilisez le port 8123.
4. Téléchargement du pilote JDBC
Lors de la première connexion, DBeaver vous demandera de télécharger le pilote JDBC pour ClickHouse :
- Cliquez sur Download dans la fenêtre contextuelle :

- Attendez que le téléchargement du pilote soit terminé :

- Cliquez sur OK
5. Test de la connexion
- Cliquez sur Test Connection ;
- Si tout est correctement configuré, un message apparaîtra : Connected (XXX ms) :

- Le message inclura :
- Server: ClickHouse X.X.X.XXX
- Driver: ClickHouse JDBC Driver X.X.X
6. Finalisation de la configuration
- Cliquez sur Finish ;
- La connexion apparaîtra dans le Database Navigator ;
- Développez l'arborescence de connexion pour afficher les bases de données, les tables et autres objets.

Problèmes courants :
| Erreur | Cause | Correction |
|---|---|---|
transport error: 400 | Port 9000 utilisé au lieu de 8123 | Changer pour le port 8123 |
Connection refused | Mauvaise IP ou le pare-feu bloque le port | Vérifier l'adresse IP et les règles du pare-feu |
Authentication failed | Mauvais nom d'utilisateur ou mot de passe | Vérifier les identifiants |
Hostname is not specified | Tunnel SSH activé accidentellement sans configuration | Désactiver l'onglet SSH dans les paramètres de connexion |
Opérations principales dans ClickHouse¶
Création d'une base de données¶
Création d'une table¶
CREATE TABLE my_database.events
(
event_date Date,
event_time DateTime,
user_id UInt32,
event_type String,
value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);
Insertion de données¶
INSERT INTO my_database.events VALUES
('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);
Sélection de données¶
Requête simple :
Agrégation de données :
SELECT
event_type,
count() as events_count,
avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;
Séries temporelles :
SELECT
toStartOfHour(event_time) as hour,
count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;
Importation de données depuis CSV¶
Création d'une table :
CREATE TABLE my_database.logs
(
timestamp DateTime,
level String,
message String
)
ENGINE = MergeTree()
ORDER BY timestamp;
Importation de données :
Gestion des utilisateurs et des privilèges¶
Création d'un utilisateur :
Attribution de permissions :
Affichage des utilisateurs :
Affichage des privilèges :
Gestion du service¶
Démarrage du service :
Arrêt du service :
Redémarrage du service :
Statut du service :
Affichage des journaux :
Remarque
Si vous n'opérez pas en tant que root, préfixez les commandes avec sudo : sudo clickhouse start
Vérification des ports actifs¶
Pour voir sur quels ports ClickHouse écoute :
Ou plus en détail :
Pour vérifier les ports configurés dans la configuration :
Pour vérifier un port spécifique :
Sortie attendue de la vérification des ports :
LISTEN *:8123 clickhouse-serv (HTTP)
LISTEN *:9000 clickhouse-serv (Native TCP)
LISTEN *:9004 clickhouse-serv (MySQL)
LISTEN *:9005 clickhouse-serv (PostgreSQL)
LISTEN *:9009 clickhouse-serv (Interserver)
Remarque
Des informations détaillées sur la configuration et l'optimisation de ClickHouse sont disponibles dans la documentation officielle du développeur.