Что такое 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 по большим объёмам.
- Скорость даёт сумма приёмов: колонки, сжатие, векторизация, параллелизм.