Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. ClickHouse: от схемы до эксплуатации
Базы данных·16 тем·190 вопросов·уровень Junior, Middle, Senior

ClickHouse: от схемы до эксплуатации

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

Начать курс

ClickHouse: инженерный курс от схемы до эксплуатации

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

Результат курса

После курса вы сможете не просто написать SELECT, а принять и защитить инженерные решения:

  • выбрать ClickHouse для подходящей нагрузки и аргументированно отказаться от него для OLTP;
  • спроектировать схему под реальные фильтры, объём и срок хранения данных;
  • построить надёжную загрузку с пакетами, повторными попытками и контролем числа частей;
  • читать EXPLAIN, system.query_log и system.parts, находить причину деградации;
  • выбрать между JOIN, словарём, проекцией и материализованным представлением;
  • настроить репликацию, шардирование, права доступа, резервное копирование и SLO;
  • провести восстановление и подтвердить RPO/RTO, а не считать наличие бэкапа достаточным.

Курс ориентирован на ClickHouse 26.3 LTS. Версионно зависимые возможности помечены в тексте; для практики используется закреплённый образ, а не плавающий тег latest.

Для спорных и версионно зависимых деталей используйте первичные источники: описание 26.3 LTS, установка на Debian/Ubuntu, материализованные представления, BACKUP и RESTORE и актуальная модель JOIN.

Сквозной проект

Вы строите хранилище событий для SaaS-сервиса. Нагрузка проекта постепенно растёт:

  1. один узел и первые события;
  2. десятки миллионов строк, SLA для дашборда и контроль стоимости;
  3. повторная доставка событий, поздние данные и изменение схемы;
  4. реплики, шарды, ограничение доступа по арендаторам;
  5. сбой реплики, восстановление из резервной копии и разбор инцидента.

В итоговом практикуме каждая оптимизация проверяется числами: объёмом чтения, временем, памятью, количеством частей и выполнением RPO/RTO.

Маршруты обучения

МаршрутДля когоТемыПодтверждение навыка
Основаbackend-разработчик без опыта ClickHouse1–6, 12Рабочая таблица событий и корректные аналитические запросы
Производительностьbackend/data engineer1–7, 10–12Отчёт «до/после» с EXPLAIN и system.query_log
Распределённая системаинженер данных или платформывсе темыПроект кластера, инструкция на случай отказа и проверенное восстановление

Программа

№ТемаНаблюдаемый результатУровень
1АрхитектураОбъяснить стоимость чтения, вставки и mergeJunior
2Воспроизводимое окружениеЗапустить закреплённую LTS-версию и проверить подключениеJunior
3Типы данныхСократить хранение без потери смысла данныхJunior
4MergeTree: основаВыбрать ORDER BY, PARTITION BY и гранулярностьJunior
5Специализированные MergeTreeСмоделировать версии, дедупликацию и агрегатыMiddle
6SQL и функцииРешить продуктовые задачи с агрегациями, окнами и JOINMiddle
7Индексы и проекцииДоказать уменьшение чтения по плану и метрикамMiddle
8РепликацияЗадать модель отказа и требуемую согласованностьSenior
9ШардированиеВыбрать ключ без перекоса и лишней пересылки данныхSenior
10Оптимизация запросовНайти узкое место экспериментом, а не догадкойSenior
11Предвычисления и словариВыбрать инкрементальное или обновляемое MV, проекцию либо словарьSenior
12Жизненный цикл данныхОрганизовать идемпотентную загрузку, TTL и измененияMiddle
13НаблюдаемостьСобрать сигналы и диагностировать учебный инцидентSenior
14БезопасностьРеализовать минимальные привилегии и изоляцию арендаторовMiddle
15ЭксплуатацияСпроектировать SLO, восстановление из копии и безопасное обновлениеSenior
16Итоговый практикумЗащитить проект на основе измерений и испытаний отказаSenior

Как устроена работа

На чтение должно уходить не больше 40% времени. Остальное — запросы, измерения, диагностика и письменная защита решений.

Для каждого эксперимента сохраняйте:

  • DDL и запрос;
  • версию ClickHouse и настройки сессии;
  • объём и способ генерации данных;
  • query_id, EXPLAIN indexes = 1 или EXPLAIN PIPELINE;
  • read_rows, read_bytes, memory_usage, query_duration_ms;
  • короткий вывод: что изменилось, почему и какой компромисс появился.

Один быстрый запуск ничего не доказывает. Сравнивайте несколько прогонов, не меняйте одновременно несколько факторов и отмечайте влияние кэша.

Начальные требования

  • уверенный базовый SQL: фильтрация, GROUP BY, подзапросы и JOIN;
  • командная строка и Docker;
  • представление о сети, диске и оперативной памяти;
  • для тем 8–15 — основы распределённых систем и эксплуатации сервисов.

Быстрый старт

Закрепляем LTS-версию курса:

docker run -d --name clickhouse-server \
  -p 8123:8123 \
  -p 9000:9000 \
  -v clickhouse_data:/var/lib/clickhouse \
  clickhouse/clickhouse-server:26.3

Проверка:

docker exec clickhouse-server clickhouse-client \
  --query "SELECT version(), timezone(), 1"

Команды удаления контейнера и тома приведены в уроке по установке. Не выполняйте их в окружении с нужными данными.

Критерий завершения

Курс завершён, когда выполнены все четыре условия:

  1. тесты по темам пройдены без опоры на позицию ответа;
  2. итоговый практикум воспроизводится с чистого окружения;
  3. минимум одна оптимизация подтверждена сравнением «до/после»;
  4. резервная копия восстановлена в отдельную базу, а фактические RPO/RTO записаны в отчёт.

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


  • Автор: Tech Path Finder Team
  • Версия курса: 2.0
  • Базовая версия ClickHouse: 26.3 LTS
  • Последнее обновление: 10 августа 2026
  1. 1

    Введение и архитектура

    Что такое ClickHouse, история создания, область применения, колоночная архитектура, векторизованное выполнение

    10 вопросов
  2. 2

    Установка и первое знакомство

    Установка через Docker и нативно, clickhouse-server, clickhouse-client, веб-интерфейс, первая база данных

    12 вопросов
  3. 3

    Типы данных

    Числовые, строковые, даты, массивы, кортежи, Nullable, LowCardinality, специализированные типы

    12 вопросов10.0(1)
  4. 4

    Движки таблиц — основы

    Что такое движки таблиц, MergeTree, Log, Memory, File, Table, Null, различия и применение

    12 вопросов10.0(1)
  5. 5

    Движки таблиц — продвинутые

    ReplacingMergeTree, SummingMergeTree, AggregatingMergeTree, CollapsingMergeTree, VersionedCollapsingMergeTree, GraphiteMergeTree

    12 вопросов
  6. 6

    SQL-запросы и функции

    SELECT, INSERT, агрегатные функции, оконные функции, функции для работы с массивами, JOIN, подзапросы

    12 вопросов
  7. 7

    Индексы и производительность

    Первичный индекс, индекс ключей сортировки, вторичные индексы (data skipping), полнотекстовый индекс, проекции

    12 вопросов
  8. 8

    Репликация и отказоустойчивость

    ReplicatedMergeTree, ZooKeeper/ClickHouse Keeper, кворумы вставки, восстановление после сбоев

    12 вопросов
  9. 9

    Шардирование и распределённые запросы

    Распределённые таблицы, шардирование, кластеры, движок Distributed, глобальные JOIN и балансировка

    12 вопросов
  10. 10

    Оптимизация запросов

    EXPLAIN, анализ планов выполнения, оптимизация JOIN, предикаты, партиционирование, типичные антипаттерны

    12 вопросов
  11. 11

    Материализованные представления

    Инкрементальные и обновляемые материализованные представления, загрузка истории без дублей, словари и цена предвычислений

    12 вопросов
  12. 12

    Управление данными

    INSERT, UPDATE, DELETE, ALTER, мутации, TTL, сжатие, кодировки, оптимизация партиций

    12 вопросов
  13. 13

    Мониторинг и отладка

    Системные таблицы, логи, метрики, трассировка запросов, профилирование и оповещения

    12 вопросов
  14. 14

    Безопасность и доступ

    Пользователи, роли, права доступа, квоты, SSL/TLS, аудит и политики доступа к строкам

    12 вопросов
  15. 15

    Эксплуатация ClickHouse

    SLO, встроенные BACKUP/RESTORE, проверка RPO/RTO, безопасные обновления, масштабирование и разбор инцидентов

    12 вопросов
  16. 16

    Итоговый практикум

    Сквозной проект аналитической платформы: схема, загрузка, измерения, отказ, восстановление и инженерная защита

    12 вопросов
  17. Зачёт

    Доступен после всех тем (0 из 16)

  18. Экзамен

    Доступен после зачёта

29 / 29

OLAP

Архитектура

Online Analytical Processing — класс систем для анализа больших объёмов данных. В отличие от OLTP (транзакционных систем), OLAP оптимизирован для сложных аналитических запросов.

Пример

ClickHouse — это OLAP-система, предназначенная для аналитики, а не для транзакций.

Связанные термины

Колоночная БД

Архитектура

База данных, хранящая данные по колонкам, а не по строкам. Это позволяет эффективно сжимать данные и выполнять запросы, читающие только несколько колонок.

Пример

В колоночной БД значения колонки `user_id` хранятся вместе, что позволяет быстро посчитать `COUNT(DISTINCT user_id)`.

Связанные термины

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

Архитектура

Метод выполнения запросов, при котором операции применяются не к одной строке, а к вектору (пакету) строк одновременно. Это позволяет эффективно использовать SIMD-инструкции процессора.

Пример

При сложении двух колонок ClickHouse обрабатывает сразу 64 или 128 значений за одну CPU-инструкцию.

Связанные термины

MergeTree

Движки таблиц

Семейство движков ClickHouse, которые хранят данные в отсортированных частях. Новые части появляются после вставок, а затем сервер объединяет их в фоне.

Пример

CREATE TABLE events ENGINE = MergeTree() ORDER BY (event_date, user_id)

Связанные термины

ReplacingMergeTree

Движки таблиц

Движок таблиц, который при слиянии частей удаляет дубликаты строк с одинаковым ключом сортировки, оставляя последнюю версию (или версию с максимальным значением версии).

Пример

CREATE TABLE users ENGINE = ReplacingMergeTree(version) ORDER BY user_id

Связанные термины

SummingMergeTree

Движки таблиц

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

Пример

CREATE TABLE sales ENGINE = SummingMergeTree() ORDER BY (date, product_id)

Связанные термины

AggregatingMergeTree

Движки таблиц

Движок для хранения предварительно агрегированных данных с использованием агрегатных функций состояния (AggregateFunction). Позволяет строить сложные преагрегации.

Пример

CREATE TABLE stats ENGINE = AggregatingMergeTree() ORDER BY date SELECT date, uniqState(user_id) AS users FROM raw GROUP BY date

Связанные термины

CollapsingMergeTree

Движки таблиц

Движок, который использует колонку Sign (+1/-1) для схлопывания пар строк: вставка (+1) и удаление (-1) одной логической записи. Позволяет эмулировать UPDATE/DELETE.

Пример

CREATE TABLE orders ENGINE = CollapsingMergeTree(sign) ORDER BY order_id INSERT VALUES (1, +1), (1, -1)

Связанные термины

LowCardinality

Типы данных

Специализированный тип-обёртка, который хранит строковые (или другие) значения в виде словаря с числовыми кодами. Значительно уменьшает размер данных и ускоряет запросы для колонок с малым числом уникальных значений.

Пример

LowCardinality(String) для колонки country_code (всего ~200 значений)

Связанные термины

Nullable

Типы данных

Тип-обёртка, позволяющий колонке хранить NULL-значения. В ClickHouse NULL — это специальное значение, а не отсутствие данных. Nullable добавляет небольшую накладную плату на хранение.

Пример

Nullable(Int32) — колонка может содержать NULL

Связанные термины

Array

Типы данных

Тип данных для хранения массивов однородных элементов. ClickHouse имеет богатый набор функций для работы с массивами.

Пример

Array(String) — массив строк, [1, 2, 3] — литерал массива

Связанные термины

AggregateFunction

SQL и функции

Специализированный тип для хранения состояния агрегатной функции. Позволяет инкрементально обновлять агрегаты и комбинировать состояния из разных частей данных.

Пример

AggregateFunction(uniq, UInt64) — состояние для подсчёта уникальных значений

Связанные термины

Первичный ключ

Производительность

В ClickHouse первичный ключ — это не уникальность, а индекс для ускорения поиска по диапазонам. Он определяет порядок сортировки данных в партициях и используется для data skipping.

Пример

PRIMARY KEY (date, user_id) — данные сортируются по date, затем по user_id

Связанные термины

Вторичный индекс (data skipping)

Производительность

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

Пример

INDEX idx_price price TYPE minmax GRANULARITY 4 — пропускает гранулы, где price вне диапазона

Связанные термины

Проекция

Производительность

Дополнительная отсортированная копия данных таблицы с другой сортировкой или агрегацией. ClickHouse автоматически выбирает оптимальную проекцию для запроса.

Пример

ALTER TABLE events ADD PROJECTION user_stats (SELECT user_id, count() GROUP BY user_id)

Связанные термины

Партиция

Производительность

Логическое разделение данных таблицы по значению ключа партиционирования (обычно по дате). Каждая партиция хранится отдельно, что упрощает управление данными и ускоряет запросы с фильтром по партиции.

Пример

PARTITION BY toYYYYMM(event_date) — данные разбиты по месяцам

Связанные термины

ZooKeeper

Распределённая система

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

Пример

ClickHouse хранит в ZooKeeper информацию о частях данных, кворумах и лидерах реплик.

Связанные термины

ClickHouse Keeper

Распределённая система

Встроенная альтернатива ZooKeeper для координации реплик и распределённых DDL. Keeper использует Raft и рассчитан на характерную для ClickHouse нагрузку.

Пример

keeper_server в конфигурации ClickHouse может заменить внешний ZooKeeper.

Связанные термины

ReplicatedMergeTree

Распределённая система

Движок таблиц с поддержкой репликации. Данные автоматически синхронизируются между репликами через ZooKeeper/Keeper.

Пример

CREATE TABLE events ON CLUSTER cluster ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/events', '{replica}') ORDER BY date

Связанные термины

Distributed

Распределённая система

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

Пример

CREATE TABLE events_all ENGINE = Distributed(cluster_all, default, events, rand())

Связанные термины

Шардирование

Распределённая система

Горизонтальное разделение данных между несколькими серверами (шардами). Каждый шард хранит только часть данных, что позволяет масштабироваться горизонтально.

Пример

Данные пользователей распределяются по 10 шардам по хэшу user_id

Связанные термины

Кворум записи

Распределённая система

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

Пример

INSERT INTO TABLE ... SETTINGS insert_quorum=2 — ждать подтверждения от 2 реплик

Связанные термины

Материализованное представление

SQL и функции

Объект БД, который автоматически обновляется при вставке данных в исходную таблицу. Хранит результат запроса (агрегацию, фильтрацию, трансформацию) в физической таблице.

Пример

CREATE MATERIALIZED VIEW daily_stats TO stats_table AS SELECT toDate(event_time) AS date, count() FROM events GROUP BY date

Связанные термины

Обновляемое материализованное представление

SQL и функции

Материализованное представление, которое выполняет запрос по расписанию. Без APPEND успешное обновление заменяет прошлый результат, с APPEND дописывает новые строки.

Пример

CREATE MATERIALIZED VIEW snapshot REFRESH EVERY 1 HOUR AS SELECT ...

Связанные термины

Словарь

SQL и функции

Структура данных для быстрого обогащения запросов дополнительными данными (например, из внешней БД или файла). Словари загружаются в память и кэшируются.

Пример

dictGet('users_dict', 'country', user_id) — получить страну по ID пользователя

Связанные термины

TTL (Time To Live)

Эксплуатация

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

Пример

TTL event_date + INTERVAL 1 YEAR DELETE — удалить данные старше года

Связанные термины

Мутация

Эксплуатация

Операция массового UPDATE или DELETE в ClickHouse. Выполняется асинхронно фоном, создавая новые части данных без изменяемых строк.

Пример

ALTER TABLE users UPDATE is_active = 0 WHERE last_login < '2025-01-01'

Связанные термины

Системные таблицы

Эксплуатация

Встроенные таблицы в базе system, содержащие метаданные, метрики, логи и информацию о выполнении запросов. Основной инструмент мониторинга и отладки.

Пример

SELECT * FROM system.query_log WHERE query_date = today() — логи запросов

Связанные термины

Гранула

Производительность

Минимальная единица чтения данных в ClickHouse (обычно 8192 строки). Индексы позволяют пропускать гранулы, не подходящие под условия запроса.

Пример

При GRANULARITY 4 вторичный индекс применяется к каждой 4-й грануле

Связанные термины

Частые вопросы о курсе «ClickHouse: от схемы до эксплуатации»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «ClickHouse: от схемы до эксплуатации»?

Курс включает 16 тем и 190 вопросов с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «ClickHouse: от схемы до эксплуатации»?

Маршрут охватывает уровни Junior, Middle, Senior. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «ClickHouse: от схемы до эксплуатации» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «ClickHouse: от схемы до эксплуатации» бесплатный?

Да, курс полностью бесплатный: все 16 тем доступны без оплаты.