Описание
Курс ориентирован на специалистов, желающих глубже разобраться в архитектуре ClickHouse, развертывании кластеров, настройке репликации и отказоустойчивости, управлении нагрузкой, а также работе с системными объектами. Особое внимание уделяется оптимизации производительности и диагностике базы данных.
Для кого
- Разработчики и администраторы ClickHouse
- IT-специалисты, работающие с высоконагруженными аналитическими системами
- Архитекторы данных, проектирующие инфраструктуру ClickHouse
- Все, кто хочет изучить расширенные возможности ClickHouse
После курса сотрудники смогут
- производить развертывание Clickhouse;
- проектировать и создавать базы данных и объекты Clickhouse;
- выбирать движки таблиц и баз данных;
- производить загрузку данных, создавать и оптимизировать запросы.
План курса
- Clickhouse: особенности архитектуры и ситуации для применения.
- Планирование развертывания Clickhouse. Zookeeper или Clickhouse Keeper. Планирование отказоустойчивости и распределения нагрузки. Оценка требований к оборудованию. Развертывание Clickhouse.
- Введение в систему объектов Clickhouse. Отличия системы объектов от Postgres и других реляционных СУБД.
- Кластеры Clickhouse. Создание кластеров в файлах конфигурации, ситуации применения кластеров.
- Базы данных Clickhouse. Служебные и пользовательские базы данных. Выбор ядра базы данных: Atomic, Replicated, Memory, Lazy, Dictionary. Ядра баз данных для интеграции с Postgres и другими СУБД.
- Типы данных Clickhouse: обычные, модификаторы режимов хранения (Nullable и LowCardinality), композитные (Array, Tuple, Map, Nested). Влияние на производительность.
- Обзор движков таблиц Clickhouse. Архитектура движка MergeTree. Ключи сортировки и первичные ключи, секционирование (PARTITION BY), сэмплинг (SAMPLE BY), время жизни (TTL).
- Репликация данных и ядро ReplicatedMergeTree. Мониторинг репликации и исправление проблем при репликации.
- Проекции в таблицах MergeTree и применение альтернативных ключей сортировки.
- Движок ReplacingMergeTree и автоматическое удаление дубликатов.
- Движки SummingMergeTree и AggregatingMergeTree и автоматическое агрегирование данных.
- Движки CollapsingMergeTree и VersionedCollapsingMergeTree и решение проблем с удалением данных.
- Движок Distributed и шардинг в Clickhouse.
- Семейство движков Log и другие движки Clickhouse.
- Представления (Views) в Clickhouse. Обычные представления, параметризованные представления, материализованные представления, обновляемые материализованные представления, оконные представления. Использование материализованных представлений для перекачки и преобразования данных между таблицами.
- Особенности добавления/изменения/удаления данных в Clickhouse. Вставка данных и механика IJNSERT. Слияние кусков и команда OPTIMIZE. Удаление данных через облегченные DELETE (lightweight DELETE) и через мутации. UPDATE средствами мутаций и другие варианты изменения данных.
- Простая и инкрементальная закачка данных в Clickhouse через интеграционные таблицы.
- Непрерывная закачка данных в Clickhouse. Связка Postgres-Debezium-Kafka-Clickhouse. Получение данных в Clickhouse через Kafka. Оптимизация производительности и решение возникающих проблем.
- Запросы в Clickhouse. Инфраструктура для работы с запросами. Применение clickhouse-client для оценки производительности, команда EXPLAIN и таблицы system.query_log и system.query_metric_log. Работа со статистикой столбцов.
- Фильтрация данных в Clickhouse. WHERE и PREWHERE. Применение вторичных индексов - set, minmax, bloom. Особенности фильтрации с LIKE и регулярными выражениями. Применение полнотекстовых индексов для фильтрации данных.
- Джойны в запросах Clickhouse. Специальные типы джойнов и ASOF джойны. Алгоритмы выполнения джойнов: hash, parallel hash, grace hash, full sorting, partial merge. Метод Direct join и применение словарей (dictionaries).
- Группировка и агрегатные функции в Clickhouse. Комбинаторы агрегатных функций. Оконные функции. Оптимизация группировки и расчета агрегатов.
- Сортировка в запросах Clickhouse. Применение первичных и вторичных индексов для оптимизации сортировки. Управление оперативной памятью при сортировке больших таблиц.
- Подзапросы, CTE и временные таблицы в Clikchouse. Особенности работы Clickhouse при декомпозиции запросов. Рекурсивные CTE.
- Сжатие и кэширование данных в Clickhouse. Настройка кэширования при выполнении запросов. Применение query cache.
- Пользовательские функций в Clickhouse и лямбда-выражения. Применение функций на внешних языках (Python и т.п.).