ClickHouse est la base analytique columnar la plus performante en 2026 (informations vérifiées en avril 2026, susceptibles d’évoluer). Conçue pour OLAP (analytics, reporting, BI), elle traite des milliards de lignes en quelques secondes sur du hardware modeste. Pour les PME africaines avec besoin d’analytics avancée, ClickHouse self-hosted est imbattable.
Ce guide général couvre l’écosystème. Les articles connexes détaillent : installer ClickHouse, ClickHouse vs Postgres vs BigQuery, replication et cluster, dashboards Grafana.
Pourquoi ClickHouse
- Colonne-stockée : ne lit que les colonnes nécessaires
- Compression aggressive : 10-100x ratio
- SQL standard + extensions analytics puissantes
- Open-source Apache 2.0
- Performance : 100M+ rows/s scan, queries OLAP en sub-second
- Materialized views, projections, dictionaries
Cas d’usage
- Analytics applicatives : événements user, conversion funnel
- Logs centralisés (alternative ELK/Loki)
- Reporting financier (BI sur transactions)
- Métriques IoT à grande échelle
- Web analytics (alternative Google Analytics auto-hébergée)
Setup minimal
# Docker
docker run -d --name clickhouse \
-p 127.0.0.1:8123:8123 \
-p 127.0.0.1:9000:9000 \
-v ch-data:/var/lib/clickhouse \
clickhouse/clickhouse-server
# Client
docker exec -it clickhouse clickhouse-client
Premier table
CREATE TABLE events (
timestamp DateTime,
user_id UInt64,
event_name LowCardinality(String),
properties String CODEC(ZSTD(3)),
url String,
country LowCardinality(String)
)
ENGINE = MergeTree()
ORDER BY (event_name, timestamp);
-- Insert 1M rows
INSERT INTO events
SELECT now() - rand() % 86400, rand64(), 'pageview',
'{}', 'https://exemple.sn/page', 'SN'
FROM numbers(1000000);
-- Query analytique : pageviews par jour
SELECT
toDate(timestamp) AS day,
count() AS views
FROM events
WHERE event_name = 'pageview'
GROUP BY day
ORDER BY day DESC;
1M rows scannés en ~50 ms sur VPS modeste.
Materialized views
CREATE MATERIALIZED VIEW daily_stats
ENGINE = SummingMergeTree()
ORDER BY (day, event_name)
AS SELECT
toDate(timestamp) AS day,
event_name,
count() AS cnt
FROM events
GROUP BY day, event_name;
-- Query ultra-rapide sur agrégat pré-calculé
SELECT * FROM daily_stats WHERE day = today();
Adaptation Afrique de l’Ouest
Pour PME africaine avec besoin BI/analytics, ClickHouse sur Hetzner CX42 (15 €/mois) traite des millions d’événements. Beaucoup moins cher que BigQuery (qui facture par requête + storage en USD).