Aller au contenu

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 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 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 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 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) :

clickhouse-client

2. Connexion depuis une machine distante :

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

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

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

Statut du service :

clickhouse status

Affichage des journaux :

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

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 :

ss -tlnp | grep clickhouse

Ou plus en détail :

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)

Remarque

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