К содержанию

Wiki · Технологии разработки

ClickHouse

ClickHouse – это колоночная система управления базами данных с открытым кодом для аналитических запросов: подсчётов, сумм и группировок по огромным таблицам. Её разработали в Яндексе для Яндекс Метрики.

Заказчик обычно слышит это слово в двух ситуациях. Подрядчик по аналитике говорит: «Выгрузим сырые данные Метрики в ClickHouse и построим отчёты». Или разработчик предлагает перенести туда логи и статистику, потому что основная база уже не справляется с отчётами. Разберём, что это значит для бизнеса.

Откуда взялся ClickHouse и кому принадлежит

Работу над проектом начали в 2009 году, в 2012 году ClickHouse заработал как хранилище для Яндекс Метрики. В 2016 году код открыли под лицензией Apache 2.0, поэтому базу может бесплатно поставить любая компания. В 2021 году появилась отдельная компания ClickHouse, Inc. со штаб-квартирой в районе Сан-Франциско, она развивает проект и продаёт облачный сервис ClickHouse Cloud.

Почему колоночная база считает отчёты быстрее

Обычные базы, например PostgreSQL и MySQL, хранят данные строками: всё про один визит лежит рядом. Это удобно, когда нужно достать заказ целиком или поменять в нём статус. ClickHouse хранит рядом значения одного столбца: все даты отдельно, все источники трафика отдельно.

Условный пример. В таблице визитов 100 столбцов и 500 миллионов строк. Вам нужно число визитов по источникам за месяц:

SELECT source, count() AS visits
FROM visits
WHERE date >= '2026-09-01'
GROUP BY source

Строковая база прочитает с диска все строки целиком, со всеми 100 полями. ClickHouse прочитает только два столбца, date и source. Колонки одного типа ещё и хорошо сжимаются, так что с диска читается в разы меньше данных.

Сравнение строковой базы и колоночной ClickHouse: какие данные читаются с диска при отчёте о визитах по источникам трафика
Что читает база ради одного отчёта

Где ClickHouse встречается в маркетинговой аналитике

Самый частый сценарий связан с Яндекс Метрикой. Отчёты в её интерфейсе строятся по агрегированным данным и не всегда отвечают на нестандартный вопрос. Сырые визиты и просмотры можно забрать двумя способами:

  • Logs API: скрипт запрашивает визиты или события, один запрос охватывает не больше года, потом выгрузку скачивают и загружают в свою базу.
  • Data Streaming: Метрика сама передаёт события в кластер ClickHouse в Yandex Cloud, при потоковой передаче запись появляется не позже чем через 15 минут. Нужен пакет Метрика Про или отдельное подключение через маркетплейс Yandex Cloud (на октябрь 2026 года).

Дальше к ClickHouse добавляют расходы из рекламных кабинетов и сделки из CRM, а отчёты строят в BI-системе: DataLens, Superset или Metabase. Так устроено большинство самописных систем сквозной аналитики.

Схема: сырые данные Яндекс Метрики попадают в ClickHouse через Logs API или Data Streaming, затем по ним строят отчёты в BI-системе
Как сырые данные Метрики попадают в отчёты

ClickHouse, PostgreSQL и MySQL: что под какую задачу

ЗадачаClickHousePostgreSQL, MySQL
Хранить заказы, корзины, пользователей сайтане для этогоподходят
Часто менять отдельные строкинеудобно, изменения идут тяжёлыми операциямиобычная операция
Считать отчёты по сотням миллионов строкосновная задачамедленно без отдельной подготовки
Хранить логи, клики, события сайтаподходитподходит до определённого объёма

На практике их не выбирают вместо друг друга, а ставят рядом. Сайт и CRM работают на строковой базе, а копия данных для отчётов уходит в ClickHouse.

Почему в ClickHouse неудобно исправлять данные

В ClickHouse данные в основном дописывают. Изменить или удалить строки можно командами ALTER TABLE ... UPDATE и ALTER TABLE ... DELETE, но это мутации: база переписывает куски данных в фоне. Столбцы, входящие в ключ сортировки, так не обновить вообще. Для удаления есть облегчённый DELETE FROM у таблиц семейства MergeTree. Если в проекте статус заказа меняется по пять раз за день, хранить такие заказы удобнее в PostgreSQL, а в ClickHouse отправлять уже итог.

Что понадобится, если подрядчик предлагает ClickHouse

  • Сервер. ClickHouse ставят на свою машину, берут управляемый кластер Yandex Managed Service for ClickHouse или облако ClickHouse Cloud. Условия доступа к ClickHouse Cloud для России уточняйте у вендора.
  • Специалист. Запросы пишут на SQL, но со своими функциями и типами данных. Нужен человек, который знает именно ClickHouse, иначе отчёты будут медленными.
  • Загрузка. Сам ClickHouse ничего не забирает из Метрики и CRM. Кто-то должен написать и поддерживать скрипты выгрузки.
  • Небольшому сайту с десятками тысяч визитов в месяц отдельная аналитическая база обычно не нужна: хватит отчётов Метрики и DataLens.
Чек-лист перед запуском ClickHouse: сервер или облако, скрипты выгрузки, изменяемые данные, специалист, BI-система, нужна ли отдельная база
Что решить до запуска ClickHouse

ClickHouse рядом с PostgreSQL, Метрикой и BI-системами

Чем ClickHouse отличается от PostgreSQL?

ClickHouse хранит данные по столбцам и рассчитан на отчёты по огромным таблицам, а PostgreSQL хранит строки и подходит для заказов, пользователей и частых правок. Поэтому в проектах их обычно используют вместе: рабочие данные в PostgreSQL, копия для аналитики в ClickHouse.

Как подключиться к ClickHouse из BI-системы или своей программы?

У ClickHouse есть HTTP-интерфейс, родной TCP-протокол, консольный клиент clickhouse-client, драйверы JDBC и ODBC и библиотеки для языков программирования. DataLens, Superset и Metabase подключаются к нему штатно, достаточно адреса сервера, логина и пароля.

Как загрузить сырые данные Яндекс Метрики в ClickHouse?

Сырые данные Метрики попадают в ClickHouse через Logs API скриптом или через Data Streaming прямо в кластер Yandex Cloud. Второй способ работает с пакетом Метрика Про или отдельным подключением, а его формат данных не совпадает с Logs API.

Кто сейчас развивает ClickHouse и при чём здесь Яндекс?

ClickHouse придумали в Яндексе для Метрики, а с 2021 года его развивает отдельная компания ClickHouse, Inc. Код по-прежнему открыт под лицензией Apache 2.0.

Почему UPDATE в ClickHouse работает не так, как в MySQL?

В ClickHouse UPDATE выполняется как мутация: база в фоне переписывает целые куски таблицы, а не правит одну строку. Поэтому частые точечные правки здесь дорогие, а столбцы ключа сортировки обновить нельзя совсем. Данные, которые постоянно меняются, держат в строковой базе.

Где развернуть ClickHouse, если своего сервера нет?

Без своего сервера ClickHouse берут как управляемый кластер в Yandex Cloud: обновления, резервные копии и мониторинг там на стороне провайдера. Есть и ClickHouse Cloud от самого разработчика, но условия доступа к нему из России проверяйте у вендора.

Выгрузку данных Метрики, рекламы и CRM в единую базу и отчёты по ней делаем по услуге Проектирование и внедрение системы сквозной аналитики: подключаем источники и собираем отчёты.

Документация ClickHouse и Яндекс Метрики

  • Документация ClickHouse: «What is ClickHouse?», «Our Story», «Updating and deleting ClickHouse data», «Drivers and interfaces»
  • Блог ClickHouse: «Yandex Opensources ClickHouse»
  • Справка Яндекс Метрики: Logs API, «Data Streaming (интеграция с Yandex Cloud)»
  • Документация Yandex Cloud: Yandex Managed Service for ClickHouse

Остались вопросы по теме «ClickHouse»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.