Базы данных

Учебник ClickHouse и аналитические базы данных для начинающих

21 урок · 6 разделов · бесплатно, без регистрации

Этот курс знакомит с миром аналитических баз данных на примере ClickHouse — одной из самых быстрых колоночных СУБД, которую создали в Яндексе для обработки миллиардов строк. Вы поймёте, чем аналитическая нагрузка (OLAP) отличается от транзакционной (OLTP) и почему привычные PostgreSQL и MySQL «задыхаются» на больших отчётах. Разберётесь, как устроено колоночное хранение, почему оно радикально ускоряет аналитику и как им пользоваться. Освоите главный движок ClickHouse — MergeTree, научитесь правильно выбирать ORDER BY и партиции, вставлять данные большими батчами, строить материализованные представления для предагрегации и применять агрегатные комбинаторы. В финале — обзор шардирования, интеграций с Kafka и S3, типичные ошибки и честный ответ на вопрос, когда ClickHouse использовать НЕ стоит. Базового знания SQL достаточно; курс рассчитан на тех, кто хочет перейти от «обычных» баз к аналитике на больших данных.

Курс «ClickHouse и аналитические базы данных» состоит из 6 разделов и 21 урока: OLAP против OLTP: зачем нужны аналитические базы, Знакомство с ClickHouse, Движок MergeTree — сердце ClickHouse, Загрузка данных и агрегации, Ускорение и управление данными и Масштабирование, интеграции и пределы. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 OLAP против OLTP: зачем нужны аналитические базы

    1. Транзакции и аналитика: две разные нагрузки

      OLTP и OLAP — два типа нагрузки на базу данных. Разбираемся, чем отличаются короткие транзакции от тяжёлых аналитических запросов.

    2. Почему обычные базы медленные на аналитике

      Почему PostgreSQL и MySQL тормозят на больших отчётах: строковое хранение, чтение лишних данных и узкое место диска.

    3. Колоночное хранение: главная идея аналитики

      Что такое колоночное хранение данных, почему оно ускоряет аналитику и улучшает сжатие — на наглядных ASCII-схемах.

  2. 2 Знакомство с ClickHouse

    1. Что такое ClickHouse и где он применяется

      ClickHouse — колоночная аналитическая СУБД из Яндекса. Где её используют: метрики, логи, аналитика событий, дашборды реального времени.

    2. Установка и clickhouse-client

      Как запустить ClickHouse локально через Docker, подключиться через clickhouse-client и отправлять запросы по HTTP с помощью curl.

    3. Типы данных ClickHouse

      Обзор типов данных ClickHouse: числа фиксированного размера, строки, даты, LowCardinality, Nullable и Enum — и как выбор типа влияет на скорость.

  3. 3 Движок MergeTree — сердце ClickHouse

    1. Движки таблиц и семейство MergeTree

      Что такое движок таблицы в ClickHouse, зачем он нужен и почему MergeTree — главный движок для аналитики. Как устроены куски (parts) и их слияние.

    2. ORDER BY и первичный ключ: ключ к скорости

      Как ORDER BY и первичный ключ в MergeTree влияют на скорость запросов через разрежённый индекс и отсечение гранул. Как правильно выбрать порядок ключа.

    3. Партиционирование данных

      Что такое PARTITION BY в ClickHouse, чем партиции отличаются от ORDER BY, как они ускоряют запросы и упрощают удаление старых данных.

    4. Специализированные движки MergeTree

      Варианты MergeTree: ReplacingMergeTree, SummingMergeTree, AggregatingMergeTree и CollapsingMergeTree — что они делают при слиянии и когда их применять.

  4. 4 Загрузка данных и агрегации

    1. Вставка больших объёмов: батчи, а не строки

      Почему в ClickHouse нельзя вставлять по одной строке, как грузить данные большими батчами и что такое ошибка too many parts.

    2. Агрегации и аналитические функции

      Аналитические функции ClickHouse: GROUP BY, sum, avg, count, а также специальные функции вроде uniq, uniqCombined, quantile и topK для быстрой аналитики.

    3. Агрегатные комбинаторы: -If, -Array, -State/-Merge

      Комбинаторы агрегатных функций ClickHouse: суффиксы -If, -Array, -State и -Merge. Как они расширяют функции и зачем нужны промежуточные состояния агрегатов.

  5. 5 Ускорение и управление данными

    1. Материализованные представления: предагрегация на лету

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

    2. Сэмплирование данных

      Что такое сэмплирование (SAMPLE) в ClickHouse: как посчитать приблизительный результат по части данных в разы быстрее и когда это уместно.

    3. TTL: автоматический жизненный цикл данных

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

    4. Сжатие данных

      Сжатие в ClickHouse: кодеки LZ4 и ZSTD, специализированные кодеки Delta и DoubleDelta, и как сжатие ускоряет аналитику за счёт меньшего чтения с диска.

  6. 6 Масштабирование, интеграции и пределы

    1. Распределённые таблицы и шардирование

      Обзор шардирования в ClickHouse: что такое шарды и реплики, как работает движок Distributed и как кластер ускоряет запросы и обеспечивает надёжность.

    2. Интеграции: Kafka и S3

      Интеграции ClickHouse: движок Kafka для потоковой загрузки событий и движок/функция S3 для работы с данными в облачном объектном хранилище.

    3. ClickHouse против PostgreSQL для аналитики

      Сравнение ClickHouse и PostgreSQL для аналитики: колоночное и строковое хранение, транзакции, скорость отчётов и когда какой инструмент выбрать.

    4. Типичные ошибки и когда ClickHouse не подходит

      Главные ошибки при работе с ClickHouse — мелкие вставки, неверный ORDER BY, частые мутации — и честный список задач, для которых ClickHouse не подходит.