System Design Space

    Глава 111

    Обновлено: 16 февраля 2026 г. в 03:00

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

    Прогресс части0/12

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

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

    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.

    1
    Client
    INSERT batches
    2
    Insert Coordinator
    route by shard key
    3
    ReplicatedMergeTree
    create new parts
    4
    ClickHouse Keeper
    replication metadata
    5
    Background Merges
    compact + optimize
    Write path: start Play, чтобы увидеть route -> replication -> background merge.

    Write path: operational notes

    1. Клиент отправляет INSERT батчами (обычно через HTTP/native protocol).
    2. Данные пишутся в новые части (parts) внутри MergeTree-таблиц.
    3. Фоновые merge-процессы укрупняют parts и оптимизируют хранение.
    4. При репликации данные синхронизируются между репликами через coordination layer.

    Read path: operational notes

    1. Планировщик определяет, какие партиции и части потенциально релевантны запросу.
    2. Data skipping и min/max статистики отсекают лишние диапазоны данных.
    3. Движок читает только нужные колонки и выполняет агрегации батчами.
    4. Результат возвращается после parallel scan и reduce-этапов.

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

    • Сначала проектируй под шаблоны чтения и агрегации, а не под 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 по одной записи.

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