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

Обновлено: 3 мая 2026 г. в 22:37

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

средний

Колоночная аналитическая СУБД: MergeTree, партиционирование, репликация, материализованные представления, пути записи и чтения для высокопроизводительной аналитики.

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

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

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

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

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

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

Загрузка и слияние

Закладывайте пакетную запись, ключи сортировки и фоновые слияния в расчёт задержки приёма и свежести данных.

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

Оптимизируйте политику хранения, сжатие и материализованные представления для баланса скорости и стоимости.

Перспектива на интервью

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

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

ClickHouse Docs

Базовые концепции: движки таблиц, архитектура, SQL и операционные практики.

Открыть docs

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

На первом уровне ClickHouse — это для : данные организуются так, чтобы быстро читать нужные столбцы и агрегировать большие диапазоны.

Архитектурная цена проявляется в и : вставка создаёт , фоновые процессы выполняют , а запросы выигрывают от , и .

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

2009

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

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

2016

Публичный релиз с открытым кодом

Проект становится доступен сообществу и быстро обрастает драйверами, интеграциями и практиками эксплуатации.

2021

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

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

2021+

Облако и экосистема

Появляются управляемые предложения, интеграции с объектными хранилищами и новые инструменты вокруг аналитического контура.

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

Колоночное хранение

Запрос читает только нужные колонки, поэтому меньше тратит ввод-вывод на большие аналитические выборки.

Семейство MergeTree

Партиции, сортировка, фоновые слияния частей и репликация образуют основу большинства рабочих кластеров.

Векторизованное выполнение

Операции выполняются пакетами строк, что повышает пропускную способность и лучше использует кэш CPU.

Сжатие и отсечение данных

Колоночное сжатие и индексы отсечения уменьшают объём чтения для запросов, которые сканируют большие диапазоны.

Архитектура ClickHouse по слоям

На верхнем уровне ClickHouse разделяет клиентский вход, координаторы запросов и слой хранения на MergeTree-таблицах. Запись и чтение идут через координаторы, а фактическое хранение и вычисления выполняются на репликах шардов.

Шарды и реплики

Типовой рабочий профиль: шардирование по ключу, репликация через Keeper и параллельное чтение.

Плюсы

  • Горизонтальный масштаб под рост данных.
  • Выше пропускная способность чтения и отказоустойчивость.
  • Гибкая балансировка путей записи и чтения по узлам.

Ограничения

  • Выше операционная сложность.
  • Нужен контроль отставания, очереди слияний и перекоса по шардам.
Подходит для: Крупные BI-сценарии и продуктовая аналитика с высокой пропускной способностью.

Очередь нагрузки

CH-REQ-201
чтение
BI
dashboard_last_15m
CH-REQ-202
запись
Приём
insert_events_batch
CH-REQ-203
чтение
ML
feature_slice_by_tenant
CH-REQ-204
запись
Приём
insert_clickstream_batch

Контур управления

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

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

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

Активный шаг: ожидание

Шард A / R1

отставание 1

основная реплика

части: 36 | чтения: 0 | записи: 0

Шард A / R2

отставание 2

вторичная реплика

части: 35 | чтения: 0 | записи: 0

Шард B / R1

отставание 1

основная реплика

части: 34 | чтения: 0 | записи: 0

Шард B / R2

отставание 2

вторичная реплика

части: 33 | чтения: 0 | записи: 0

Репликация и слияния

операции Keeper: 0

Репликация и фоновые слияния держат части данных и отставание в управляемом диапазоне.

Счётчики кластера

чтения: 0 | записи: 0 | части: 138 | среднее отставание: 1.5

Контролируйте баланс между скоростью приёма, очередью слияний и задержкой запросов.

Архитектурный чек-лист

Партиции и ORDER BY
SLO на отставание репликации
Наблюдаемость слияний и TTL

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

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

Пути записи и чтения

Интерактивный разбор прохождения ClickHouse-запросов через координатор, реплики шардов, Keeper и фоновые процессы.

1
Клиент
INSERT пакет
2
Координатор вставки
по ключу шарда
3
Реплики MergeTree
новые части
4
ClickHouse Keeper
метаданные репликации
5
Фоновые слияния
укрупнение частей
Путь записи: INSERT проходит через координатор к репликам шардов, создаёт новые части данных и затем оптимизируется фоновыми слияниями.

Путь записи

  1. Клиент отправляет INSERT пакетами, обычно через HTTP или нативный протокол.
  2. Координатор маршрутизирует пакет по ключу шарда на нужные реплики.
  3. Данные пишутся в новые части внутри MergeTree-таблиц и синхронизируются через Keeper.
  4. Фоновые слияния укрупняют части, применяют TTL и мутации, оптимизируют раскладку хранения.

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

  • Сначала проектируй под шаблоны чтения и агрегации, а не под нормализацию транзакционной модели.
  • Выбирай ORDER BY так, чтобы ключевые фильтры максимально отсеивали данные.
  • Используй партиционирование по времени или домену, чтобы управлять удержанием данных и объёмом чтения.
  • Применяй материализованные представления для предварительной агрегации горячих аналитических отчётов.
  • Планируй время жизни и удержание данных заранее: объёмы в аналитике растут быстро.

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

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

  • Продуктовая аналитика, BI-дашборды, наблюдаемость и анализ логов.
  • События и временные ряды с очень высокой пропускной способностью записи.
  • Сложные агрегирующие запросы по большим историческим объёмам.
  • Витрины данных почти в реальном времени для продуктовых и аналитических команд.

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

  • Транзакционные сценарии с частыми точечными обновлениями и короткими транзакциями.
  • Нагрузки, где критичны блокировки отдельных строк и строгая транзакционная семантика.
  • Системы с множеством мелких UPDATE/DELETE в реальном времени.
  • Сценарии, где ключевая задача — оперативная выдача одной записи по ключу.

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

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