Что такое ClickHouse и где он применяется

Колоночная СУБД, родившаяся из задачи считать миллиарды кликов Яндекс.Метрики.

ClickHouse — открытая колоночная СУБД для аналитики (OLAP), способная сканировать миллиарды строк за доли секунды на одном сервере.

Откуда он взялся

ClickHouse создали в Яндексе для Яндекс.Метрики — системы веб-аналитики, которая собирает события с миллионов сайтов. Нужно было строить отчёты в реальном времени по триллионам строк, и существующие базы не справлялись. Так появилась специализированная колоночная СУБД, которую позже выложили в открытый доступ. Само имя — от «Clickstream Data Warehouse», склад данных о кликах.

Для чего его берут

  • Веб- и продуктовая аналитика: события, воронки, retention, дашборды по миллиардам действий пользователей.
  • Логи и наблюдаемость: хранение и анализ логов приложений, метрик, трейсов (часто вместо дорогих специализированных систем).
  • Метрики и мониторинг: временные ряды показателей серверов и сервисов.
  • Бизнес-аналитика: витрины данных, отчёты, BI-дашборды поверх больших объёмов.

Чем он берёт

СвойствоЧто даёт
Колоночное хранениечитает только нужные колонки
Сильное сжатиеменьше данных на диске и в чтении
Векторизацияобработка данных пачками на CPU
Параллелизмвсе ядра и серверы в работе
Знакомый SQLпорог входа ниже, чем у NoSQL

Простой запрос

Синтаксис привычный — это SQL. Вот агрегирующий запрос (стандартная часть выполнится и в SQLite-песочнице):

CREATE TABLE hits (
  url TEXT,
  duration INTEGER
);
INSERT INTO hits (url, duration) VALUES
  ('/home', 12), ('/home', 8), ('/price', 30), ('/price', 25);
SELECT url, COUNT(*) AS hits, AVG(duration) AS avg_dur
FROM hits
GROUP BY url
ORDER BY hits DESC;

В реальном ClickHouse такой же запрос отработал бы по миллиардам строк за доли секунды.

Как работает под капотом

ClickHouse — это не «магия», а сумма правильных инженерных решений: данные хранятся по колонкам, сжаты блоками, к ним есть разрежённый индекс по первичному ключу, запросы выполняются векторизованно и параллельно по всем ядрам и (в кластере) по всем серверам. Каждое из решений вы изучите в следующих разделах.

Частые ошибки

  • Считать ClickHouse заменой PostgreSQL. Это не транзакционная база: точечные UPDATE/DELETE и частые мелкие вставки — не его профиль.
  • Ждать гарантий уникальности по ключу «из коробки». ClickHouse не следит за уникальностью первичного ключа как OLTP-базы — это сделано ради скорости.

Итоги

  • ClickHouse — колоночная OLAP-СУБД родом из Яндекс.Метрики.
  • Сфера: аналитика событий, логи, метрики, BI по большим объёмам.
  • Скорость даёт сумма приёмов: колонки, сжатие, векторизация, параллелизм.
Проверьте себя
1. Для какой задачи изначально создали ClickHouse?
AХранение банковских транзакций
BВеб-аналитика Яндекс.Метрики по огромным объёмам событий
CКэширование сессий пользователей
DФайловое хранилище
2. Что НЕ является сильной стороной ClickHouse?
AСканирование миллиардов строк для отчётов
BАнализ логов и метрик
CЧастые точечные UPDATE отдельных строк
DBI-дашборды по большим объёмам