Aller au contenu

ClickHouse

Dans cet article

Information

ClickHouse est un système de gestion de base de données (SGBD) en colonnes haute performance conçu pour l'exécution de 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 télémétrie.

ClickHouse. Fonctionnalités principales

  • Stockage en colonnes : 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 le traitement 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 processeur.
  • 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 petite que les SGBD basés sur les lignes), en particulier sous les 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 la mise à l'échelle horizontale et le traitement des données sur plusieurs serveurs.
  • Réplication des données : prise en charge intégrée de la réplication pour assurer 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 aux formats CSV, JSON, Parquet, Avro et autres.
  • 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.

Caractéristiques du déploiement

ID Nom du logiciel Système d'exploitation compatible VM BM VGPU GPU Min CPU (Cœurs) Min RAM (Go) Min HDD/SSD (Go) Actif
492 ClickHouse Ubuntu 24.04, Ubuntu 22.04 + + + + 4 8 120 COMMANDER
  • Logiciel installé :

    • ClickHouse Server >= 26.1.1
    • ClickHouse Client >= 26.1.1
  • Spécificités de l'installation :

    • Logiciel installé via le script officiel du développeur ;
    • Temps d'installation : 5-10 minutes ;
    • La base de données est disponible pour les connexions réseau via divers clients SQL ;
    • Par défaut, l'utilisateur default avec le mot de passe du compte root est 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 du certificat SSL
9100 gRPC Interface gRPC Optionnel Clients gRPC

Note

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.

Note

Sauf indication contraire, nous installons la dernière version du logiciel depuis le site Web officiel du développeur.

Démarrage après le déploiement de ClickHouse

Après paiement de la commande, une notification de préparation du serveur sera envoyée à l'adresse e-mail indiquée lors de l'inscription. Elle contiendra l'adresse IP du VPS ainsi que les identifiants de connexion. Les clients de notre entreprise gèrent leur équipement dans le panneau de gestion des serveurs et APIInvapi.

Détails d'autorisation :

  • Adresse IP du serveur : fournie dans l'e-mail et dans le panneau de contrôle ;
  • Identifiant : default ;
  • Mot de passe : correspond au mot de passe du compte root et 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 moyens les plus courants de 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 en ligne de commande natif pour les opérations de base de données.

1. Connexion depuis le serveur (localement) :

clickhouse-client

2. Connexion depuis une machine distante :

clickhouse-client --host <adresse-IP> --port 9000 --user default --password <mot-de-passe>

3. Exécution d'une requête simple :

SELECT version();

4. Affichage de la liste des bases de données :

SHOW DATABASES;

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 Web 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, recherchez et sélectionnez ClickHouse

  • Cliquez sur Next

3. Configuration des paramètres de connexion

Dans la fenêtre des paramètres, spécifiez les paramètres suivants :

Host: <Adresse IP de votre serveur>
Port: 8123
Database/Schema: (laissez vide ou spécifiez default)
Username: default
Password: <mot_de_passe_root>

Extrêmement important

Pour les connexions DBeaver, utilisez le port 8123.

4. Téléchargement du pilote JDBC

Lors de la première connexion, DBeaver vous proposera 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 configuré correctement, 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 Solution
transport error: 400 Port 9000 utilisé au lieu de 8123 Passez au port 8123
Connection refused Mauvaise IP ou le pare-feu bloque le port Vérifiez l'adresse IP et les règles du pare-feu
Authentication failed Mauvais identifiant ou mot de passe Vérifiez les informations d'identification
Hostname is not specified Tunnel SSH activé accidentellement sans configuration Fermez l'onglet SSH dans les paramètres de connexion

Opérations de base dans ClickHouse

Création d'une base de données

CREATE DATABASE IF NOT EXISTS my_database;

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 :

SELECT * FROM my_database.events LIMIT 10;

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 :

INSERT INTO my_database.logs
FROM INFILE '/path/to/file.csv'
FORMAT CSV;

Gestion des utilisateurs et des privilèges

Création d'un utilisateur :

CREATE USER analyst IDENTIFIED BY 'secure_password';

Attribution de permissions :

GRANT SELECT ON my_database.* TO analyst;

Affichage des utilisateurs :

SHOW USERS;

Affichage des privilèges :

SHOW GRANTS FOR analyst;

Gestion du service

Démarrage du service :

clickhouse start

Arrêt du service :

clickhouse stop

Redémarrage du service :

clickhouse restart

État du service :

clickhouse status

Affichage des journaux :

tail -f /var/log/clickhouse-server/clickhouse-server.log

Note

Si vous n'opérez pas en tant que root, ajoutez sudo avant les commandes : sudo clickhouse start

Vérification des ports actifs

Pour voir quels ports ClickHouse écoute :

ss -tlnp | grep clickhouse

Ou plus détaillé :

ss -tlnp | grep $(pidof clickhouse-server)

Pour vérifier les ports configurés dans la configuration :

cat /etc/clickhouse-server/config.xml | grep -E "port>" | head -20

Pour vérifier un port spécifique :

ss -tlnp | grep :8123

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)

Note

Des informations détaillées sur la configuration et l'optimisation de ClickHouse sont disponibles dans la documentation officielle du développeur.

Commande d'un serveur avec ClickHouse via l'API

Pour installer ce logiciel en utilisant l'API, suivez les instructions


Une partie du contenu de cette page a été créée ou traduite par IA.