System Design Space
Граф знанийНастройки

Обновлено: 25 марта 2026 г. в 02:00

ClickHouse: аналитическая СУБД и архитектура

medium

Column-oriented OLAP СУБД: MergeTree, партиционирование, репликация, materialized views и сценарии high-throughput аналитики.

ClickHouse важен не обещанием быстрых отчетов, а тем, как он устроен вокруг реального потока аналитических данных: колонночное хранение, MergeTree, фоновые merge-процессы и тяжелые read-path сценарии.

В инженерной работе эта глава помогает проектировать таблицы, сортировочные ключи, партиционирование и materialized views под вопросы бизнеса, а не под форму исходных событий, и тем самым заранее управлять свежестью данных и ценой ingest.

В интервью и архитектурных обсуждениях она особенно сильна там, где нужно четко развести OLAP и OLTP, а также показать, почему ClickHouse хорош для аналитики, но не заменяет систему записи.

Практическая польза главы

Модель аналитических данных

Проектируйте таблицы и партиционирование под реальные аналитические вопросы, а не по структуре источников.

Ingestion и merge

Закладывайте batching, sort keys и фоновые merge-процессы в расчет ingest latency и свежести данных.

Стоимость производительности

Оптимизируйте storage policy, compression и materialized views для баланса скорости и стоимости.

Interview perspective

Четко отделяйте ClickHouse как OLAP-движок от OLTP-сценариев и объясняйте компромисс eventual consistency загрузки.

Официальная документация

ClickHouse Docs

Базовые концепции: table engines, архитектура, SQL и операционные практики.

Открыть docs

ClickHouse — колонночная OLAP СУБД для аналитики на больших объёмах. Её сильная сторона — быстрые агрегирующие запросы по событиям и логам при высоком throughput записи и эффективной компрессии данных.

История: ключевые вехи

2009

Внутренний запуск в Яндексе

ClickHouse появляется как колонночная аналитическая база для высоконагруженных отчётов.

2016

Open source релиз

Проект становится публичным и начинает развиваться в open-source экосистеме.

2021

Выделение отдельной компании ClickHouse, Inc.

Команда запускает отдельную компанию вокруг проекта, фокус смещается на коммерческую экосистему и cloud-направление.

2021+

Cloud и экосистема

Развитие managed-предложений, object storage интеграций и экосистемы инструментов.

Ключевые принципы архитектуры

Column-oriented storage

Чтение только нужных колонок резко снижает I/O для аналитических запросов.

MergeTree family

Партиции, сортировка, фоновые merge-процессы и репликация — ядро большинства продакшен-инсталляций.

Vectorized execution

Запросы выполняются батчами, что повышает throughput и эффективность CPU-кеша.

Compression + skipping

Колоночная компрессия и data skipping индексы ускоряют scan-heavy workload.

High-Level Architecture

На high-level уровне ClickHouse разделяет client layer, coordinator layer и storage/background слой MergeTree. Запись и чтение идут через координаторы, а фактическое хранение и вычисления происходят на shard-репликах.

Sharded + Replicated

Канонический продакшен-профиль: шардирование по ключу, репликация через Keeper и параллельный scan.

Плюсы

  • Горизонтальный масштаб под рост данных.
  • Лучший read throughput и отказоустойчивость.
  • Гибкая балансировка write/read пути по узлам.

Ограничения

  • Выше операционная сложность.
  • Нужен контроль lag, merge backlog и skew.
Подходит для: Крупные BI и продуктовая аналитика с высоким throughput.

Workload Queue

CH-REQ-201
read
BI
dashboard_last_15m
CH-REQ-202
write
Ingest
insert_events_batch
CH-REQ-203
read
ML
feature_slice_by_tenant
CH-REQ-204
write
Ingest
insert_clickstream_batch

Control Plane

Запросы распределяются по шардам, а реплики обеспечивают HA и масштаб чтения.

Готово к симуляции архитектуры ClickHouse.

Последнее решение

Активный шаг: idle

Shard A / R1

lag 1

primary replica

parts: 36 | reads: 0 | writes: 0

Shard A / R2

lag 2

secondary replica

parts: 35 | reads: 0 | writes: 0

Shard B / R1

lag 1

primary replica

parts: 34 | reads: 0 | writes: 0

Shard B / R2

lag 2

secondary replica

parts: 33 | reads: 0 | writes: 0

Replication & Merges

Keeper ops: 0

Репликация и merge-процессы держат parts и lag в управляемом диапазоне.

Cluster Counters

reads: 0 | writes: 0 | parts: 138 | Avg lag: 1.5

Контролируйте баланс между ingestion throughput, merge backlog и query latency.

Architecture Checklist

Partition + ORDER BY design
Replication lag SLO
Merge / TTL observability

Write / Read Path через компоненты

Ниже интерактивная схема, где видно прохождение запросов через ключевые компоненты: coordinator, shard replicas, Keeper и background процессы.

Read/Write Path Explorer

Интерактивный разбор прохождения clickhouse-запросов через coordinator, shard replicas, Keeper и background процессы.

1
Client
INSERT batch
2
Insert Coordinator
route by shard key
3
Replicated MergeTree
create new parts
4
ClickHouse Keeper
replication metadata
5
Background Merges
compact + optimize
Write path: INSERT проходит через coordinator на shard replicas, создает новые parts и оптимизируется background merge-процессами.

Write path

  1. Клиент отправляет INSERT батчами (обычно через HTTP/native protocol).
  2. Координатор маршрутизирует batch по shard key на нужные реплики.
  3. Данные пишутся в новые parts внутри MergeTree-таблиц и синхронизируются через Keeper.
  4. Background merge-процессы укрупняют parts, применяют TTL/mutations и оптимизируют хранение.

Практика моделирования данных

  • Сначала проектируй под шаблоны чтения и агрегации, а не под OLTP-нормализацию.
  • Выбирай ORDER BY так, чтобы ключевые фильтры максимально отсеивали данные.
  • Используй партиционирование по времени/домену для управляемых retention и scan.
  • Применяй materialized views для pre-aggregation горячих аналитических отчётов.
  • Планируй TTL/retention заранее — объёмы в аналитике растут быстро.

Когда выбирать ClickHouse

Хорошо подходит

  • Product analytics, BI-дашборды, observability/лог-аналитика.
  • Событийные и time-series данные с очень высоким write throughput.
  • Сложные агрегирующие запросы по большим историческим объёмам.
  • Near-real-time витрины данных для команд продукта и аналитики.

Стоит избегать

  • OLTP-сценарии с частыми point-updates и короткими транзакциями.
  • Нагрузки, где критичны row-level lock и строгая transactional семантика.
  • Системы с множеством мелких UPDATE/DELETE в реальном времени.
  • Use cases, где ключевая задача — online serving по одной записи.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки