ClickHouseMiddleExperience
Как сравнить ClickHouse с альтернативами по consistency, latency, throughput, cost и operability?
ClickHouse — лидер по latency и throughput на self-hosted при минимальных затратах, но с eventual consistency и высокой операционной сложностью. BigQuery/Snowflake — fully managed с strong consistency, но дороже; Druid аналогичен по скорости, но сложнее в эксплуатации.
Контекст сравнения
При выборе аналитического хранилища обычно сравнивают ClickHouse с BigQuery, Snowflake, Redshift, Apache Druid, Apache Pinot и TimescaleDB. Ниже — структурированное сравнение по пяти критериям.
Consistency (согласованность)
- ClickHouse: eventual consistency в кластерном режиме (ReplicatedMergeTree + ZooKeeper/ClickHouse Keeper). Запись считается успешной, когда данные попали на одну реплику; другие реплики догоняют асинхронно. Чтение с
select_sequential_consistency=1гарантирует строгую консистентность ценой дополнительных round-trip'ов к ZooKeeper. - BigQuery / Snowflake: strong consistency по умолчанию. После COMMIT данные сразу видны всем читателям. Проще для ACID-сценариев.
- Apache Druid: near-real-time сегменты могут быть видны раньше, чем полностью реплицированы. Аналогично eventual consistency.
- TimescaleDB: PostgreSQL под капотом — полный ACID, strong consistency.
Latency (задержка запросов)
- ClickHouse: лидер для аналитических запросов sub-second при объёмах до триллиона строк на self-hosted кластере. Медианный запрос над миллиардом строк — 50-500 мс.
- BigQuery: serverless, холодный старт вносит 1-5 секунд накладных расходов; BI Engine снижает до сотен мс для кэшированных запросов.
- Snowflake: виртуальные склады масштабируются, но «warming» занимает секунды; конкурентные слоты ограничены размером склада.
- Druid: оптимизирован для sub-second ad-hoc запросов по временным рядам с pre-aggregation (rollup); хуже ClickHouse на сырых данных без rollup.
- TimescaleDB: хорошо на OLTP-объёмах (миллионы строк), заметно медленнее на миллиардах.
Throughput (пропускная способность записи)
- ClickHouse: 500k–2M строк/сек на одном сервере при batch-INSERT; очень высокий throughput за счёт сжатия и колоночного хранения.
- Druid / Pinot: разработаны для streaming-ingest из Kafka; Pinot показывает сопоставимый throughput при real-time сегментах.
- BigQuery / Snowflake: Streaming API BigQuery — до 1M строк/сек, но дороже batch-загрузки; Snowflake Streaming тоже платный.
- TimescaleDB: ограничен PostgreSQL WAL и checkpoint'ами; при гипертаблицах — порядка 100-300k строк/сек.
Cost (стоимость)
- ClickHouse (self-hosted): платите только за инфраструктуру. При больших объёмах — кратно дешевле облачных OLAP. ClickHouse Cloud — pay-per-use, сравнимо с BigQuery.
- BigQuery: $5 за TB отсканированных данных (on-demand) или flat-rate. Неожиданные большие запросы могут создать крупные счета.
- Snowflake: оплата по compute (credits) + storage. При непрерывной нагрузке дороже ClickHouse; при редких ad-hoc запросах — дешевле (склад выключен).
- Druid: self-hosted, требует отдельных Broker/Coordinator/Historical нод — операционно сложнее и дороже ClickHouse по TCO.
- TimescaleDB: Timescale Cloud дёшево для небольших объёмов; при сотнях GB быстро растёт.
Operability (операционная зрелость)
- ClickHouse: богатые встроенные системные таблицы (system.query_log, system.merges, system.replication_queue), Prometheus-экспорт, ClickHouse Keeper. Требует экспертизы в настройке MergeTree, репликации и ZooKeeper.
- BigQuery / Snowflake: fully managed, zero ops. Идеальны для команд без DBA.
- Druid: наиболее сложен в эксплуатации: 5+ типов нод, Zookeeper, отдельное глубокое хранилище (S3). Высокая кривая обучения.
- TimescaleDB: наследует PostgreSQL ecosystem (pg_dump, pgBackRest, Patroni), что упрощает операционную работу для команд с PostgreSQL-опытом.
Краткая сводка
-- Условные эталонные запросы для бенчмарка
-- ClickHouse: ~100ms
SELECT toDate(ts), count(), avg(duration_ms)
FROM page_views
WHERE project_id = 42 AND ts >= '2024-01-01'
GROUP BY 1
ORDER BY 1;
Подводные камни
- Latency != latency: ClickHouse быстр при прогретом кэше страниц ОС; холодные запросы с диска могут быть медленнее облачных MPP-систем с кэшированием результатов.
- Consistency: eventual по умолчанию может удивить: сразу после INSERT данные могут быть не видны на репликах без явного
select_sequential_consistency. - BigQuery стоимость непредсказуема: один неоптимальный запрос без
LIMITможет просканировать петабайт и стоить сотни долларов. - Druid rollup — не серебряная пуля: pre-aggregation теряет raw данные; ретроспективная аналитика с новыми измерениями требует перезагрузки.
- Snowflake concurrency limit: виртуальный склад одного размера имеет лимит параллельных запросов; при превышении запросы ставятся в очередь.
- ClickHouse операционная сложность: настройка репликации, управление ZooKeeper/Keeper, балансировка шардов требует выделенного DevOps-ресурса.
- TimescaleDB плохо масштабируется горизонтально: Citus extension добавляет шардинг, но это другой продукт со своими ограничениями.
What hurts your answer
- Сравнивать ClickHouse с альтернативами по одному признаку
- Путать личную привычку с инженерным критерием выбора
- Не учитывать migration cost и vendor/ecosystem lock-in
What they're listening for
- Сравнивает ClickHouse по нескольким инженерным осям
- Не путает популярность с пригодностью
- Понимает migration cost и долгосрочную поддержку