ClickHouse vs Apache Druid: сравнение OLAP-СУБД

Для аналитика данных ClickHouse и Apache Druid — две ведущие колоночные OLAP-СУБД, на которых строят дашборды и системы аналитики в реальном времени. Обе умеют отвечать на агрегирующие запросы по миллиардам строк за доли секунды, но устроены по-разному: ClickHouse — это моно-СУБД с богатым SQL и высокой скоростью на сырых событиях, Druid — распределённая система из нескольких типов процессов, заточенная под потоковый ingestion и высокую конкурентность коротких запросов. На собеседовании в продуктовые команды (маркетплейсы, реклама, финтех) часто спрашивают, чем ClickHouse отличается от Druid, что такое rollup, как устроен колоночный формат и когда выбирать одно, а когда другое. Понимать архитектуру важно и на практике: неправильный выбор движка выливается в дорогую переделку витрин. Потренировать сами SQL-запросы под такие движки можно в тренажёре на /sql-sandbox.

Сравнительная таблица

Параметр Clickhouse Druid
Тип и архитектураКолоночная OLAP-СУБД, единый сервер (моно-бинарь), масштабируется шардами и репликамиРаспределённая система из нескольких ролей: Historical, Broker, Coordinator, MiddleManager/Overlord, Router
Модель храненияКолоночные части (parts) движка MergeTree, сортировка по ключу, фоновое слияниеКолоночные сегменты (segments), партиционированные по времени, версионируются и раздаются Historical-нодам
Rollup / преагрегацияОпционально через AggregatingMergeTree и materialized views; по умолчанию хранит сырые строкиRollup встроен в ingestion: события агрегируются по измерениям на этапе загрузки (можно отключить)
Ingestion в реальном времениKafka-движок и async inserts; near-real-time, оптимально для батчевых и потоковых вставокНативный стриминговый ingestion из Kafka/Kinesis с exactly-once, данные видны почти сразу
SQLБогатый диалект SQL: JOIN, оконные функции, подзапросы, CTE, массивы, множество функцийDruid SQL (на базе Apache Calcite) + нативный JSON-язык; JOIN ограничены, ориентация на GROUP BY по времени
Профиль скоростиОчень быстрые сканирующие агрегации по большим объёмам, тяжёлые ad-hoc и аналитические запросыНизкая задержка и высокая конкурентность коротких time-series запросов, много одновременных пользователей
ИндексацияРазреженный первичный индекс по ключу сортировки + skip-индексы (min/max, bloom и др.)Битмап-индексы по измерениям (dimensions), эффективная фильтрация по высококардинальным полям
Зависимости эксплуатацииМинимальные: сам ClickHouse (+ Keeper/ZooKeeper для репликации). Проще развернутьТребует ZooKeeper, глубокое хранилище (S3/HDFS) и метаданные в реляционной БД; больше движущихся частей
Хранение данныхЛокальные диски нод; поддержка tiered storage и S3 как отдельного дискаDeep storage (S3/HDFS) как источник истины, Historical-ноды кэшируют сегменты локально
Кривая обученияНиже для SQL-аналитика: знакомый SQL, один компонентВыше: нужно понимать роли процессов, сегменты, спеки ingestion и rollup
Стоимость и лицензияApache 2.0, open-source; облако ClickHouse Cloud и managed-варианты (в т.ч. Yandex Cloud, VK Cloud)Apache 2.0, open-source; managed-варианты (например Imply); эксплуатация дороже из-за числа компонентов

Когда что использовать

Когда Clickhouse

  • Выбирайте ClickHouse, если нужна универсальная быстрая аналитика на сырых событиях с полноценным SQL: сложные ad-hoc запросы, JOIN, оконные функции, продуктовая и логовая аналитика
  • Он проще в развёртывании и эксплуатации (меньше компонентов), что критично для небольших команд
  • Это хороший дефолт, когда паттерн запросов заранее не известен и нужна гибкость

Когда Druid

  • Выбирайте Apache Druid, если основной сценарий — интерактивные time-series дашборды с высокой конкурентностью (сотни-тысячи одновременных запросов) и потоковым ingestion с минимальной задержкой видимости данных
  • Druid силён во встроенном rollup и битмап-фильтрации по измерениям, поэтому хорошо ложится на рекламную и операционную аналитику, где запросы предсказуемы и агрегируются по времени

FAQ

В чём ключевое архитектурное различие ClickHouse и Druid?

ClickHouse — это моно-СУБД: один тип сервера, который масштабируется шардами и репликами, с локальным хранением частей MergeTree. Druid — распределённая система из нескольких ролей (Historical, Broker, Coordinator, Overlord/MiddleManager), где источником истины служит deep storage (S3/HDFS), а Historical-ноды кэшируют сегменты. Отсюда у ClickHouse проще эксплуатация, а у Druid — более чёткое разделение ingestion, хранения и запросов и удобная эластичность.

Что такое rollup и чем подходы различаются?

Rollup — это преагрегация событий по набору измерений, уменьшающая объём и ускоряющая запросы. В Druid rollup встроен в ingestion: строки с одинаковыми измерениями сворачиваются с суммированием метрик на этапе загрузки (можно отключить). В ClickHouse аналогичное достигается через AggregatingMergeTree и materialized views, но по умолчанию он хранит сырые строки, что даёт больше гибкости для ad-hoc анализа.

Какая из систем лучше держит много одновременных запросов?

Druid исторически проектировался под высокую конкурентность коротких time-series запросов с низкой задержкой (типичный кейс — дашборды на много пользователей), чему помогают битмап-индексы по измерениям и распределённые Broker/Historical. ClickHouse отлично справляется с тяжёлыми сканирующими агрегациями, а под высокую конкурентность его настраивают ограничением памяти на запрос, реплики и кэши.

Поддерживают ли обе системы полноценный SQL и JOIN?

ClickHouse предоставляет богатый SQL: JOIN, оконные функции, подзапросы, CTE, массивы и множество функций. У Druid есть Druid SQL на базе Apache Calcite и нативный JSON-язык, но JOIN и сложные подзапросы ограничены — движок заточен под GROUP BY по времени и измерениям. Если нужны сложные соединения и произвольная аналитика, ClickHouse гибче. Разобрать такие различия и потренировать SQL-запросы можно на /sql-sandbox или в разделе задач /interviews.

Источники

Практика по теме → Полный гайд в блоге →

Другие сравнения

Postgresql vs Clickhouse · Pandas vs Polars · Tableau vs Powerbi Datalens Superset · SQL vs Pandas · Dbt vs Airflow · Redshift vs Bigquery vs Snowflake · Airflow vs Dagster vs Prefect · Greenplum vs Clickhouse · Excel vs SQL · Postgresql vs Mysql · Sqlite vs Postgresql · Spark vs Pandas · Power Bi vs Excel · Python vs R