раздел 38
ClickHouse и аналитические базы
Аналитические базы с нуля: чем нагрузка дашбордов отличается от транзакций и почему колоночное хранение читает в десятки раз меньше. ClickHouse на данных «Гонца»: типы, движки семейства MergeTree, ключ сортировки, гранулы и партиции, вставка батчами, агрегации и комбинаторы. Материализованные представления для дашборда, сэмплирование, TTL и сжатие, распределённые таблицы, интеграции с Kafka и S3 и честное сравнение с PostgreSQL.
Не получилось изменить список. Попробуй ещё раз.
Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти
«ClickHouse и аналитические базы» покупается один раз и остаётся навсегда: 500 ₽. Оплата пока не подключена, доступ открывается промокодом. ввести промокод
Уроки раздела
- Транзакции и аналитика: две разные нагрузки
- Почему обычные базы медленные на аналитике
- Колоночное хранение: главная идея аналитики
- Что такое ClickHouse и где он применяется
- Установка и clickhouse-client
- Типы данных ClickHouse
- Движки таблиц и семейство MergeTree
- ORDER BY и первичный ключ: ключ к скорости
- Партиционирование данных
- Специализированные движки MergeTree
- Вставка больших объёмов: батчи, а не строки
- Агрегации и аналитические функции
- Агрегатные комбинаторы: -If, -Array, -State/-Merge
- Материализованные представления: предагрегация на лету
- Сэмплирование данных
- TTL: автоматический жизненный цикл данных
- Сжатие данных
- Распределённые таблицы и шардирование
- Интеграции: Kafka и S3
- ClickHouse против PostgreSQL для аналитики
- Типичные ошибки при работе с ClickHouse
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
OLAP против OLTP: зачем нужны аналитические базы
- Колоночное хранение: главная идея аналитикиКолонка в своём файле, чтение только нужных колонок, сжатие похожих значений и векторное выполнение.урок 3 · Колоночное хранение: главная идея аналитикиопираются: урок 4
- Почему обычные базы медленные на аналитикеСтроки на диске целиком, лишние байты при чтении трёх колонок из двадцати, индексы не спасают от полного прохода.урок 2 · Почему обычные базы медленные на аналитикеопираются: урок 3
- Транзакции и аналитика: две разные нагрузкиКороткие транзакции над одной строкой против запросов по миллионам строк, кто их задаёт и чем они отличаются.урок 1 · Транзакции и аналитика: две разные нагрузкиопираются: урок 2
Знакомство с ClickHouse
- Типы данных ClickHouseЦелые с размером и знаком, Float64 и Decimal, String и LowCardinality, Enum, Date и DateTime, Nullable и Array.урок 6 · Типы данных ClickHouseопираются: урок 7
- Установка и clickhouse-clientClickHouse в Docker, clickhouse-client, порты 9000 и 8123, первые запросы, форматы вывода, system.tables.урок 5 · Установка и clickhouse-clientопираются: урок 6
- Что такое ClickHouse и где он применяетсяКолоночная СУБД для аналитики в реальном времени: продуктовые события, логи, метрики, где она сильна и где нет.урок 4 · Что такое ClickHouse и где он применяетсяопираются: урок 5
Движок MergeTree: сердце ClickHouse
- Движки таблиц и семейство MergeTreeENGINE в CREATE TABLE, Memory и Log для мелочей, MergeTree: части, вставка новой частью, слияния в фоне и OPTIMIZE.урок 7 · Движки таблиц и семейство MergeTreeопираются: урок 8
- Партиционирование данныхPARTITION BY по месяцу, части внутри партиций, отсечение партиций, удаление старых данных целой партицией, почему не дробить мелко.урок 9 · Партиционирование данныхопираются: урок 10
- Специализированные движки MergeTreeReplacingMergeTree для последней версии, SummingMergeTree и AggregatingMergeTree для сумм, CollapsingMergeTree, FINAL.урок 10 · Специализированные движки MergeTreeопираются: урок 11
- ORDER BY и первичный ключ: ключ к скоростиСортировка внутри части, гранулы по 8192 строки, разреженный индекс, какой фильтр ключ ускоряет, а какой нет.урок 8 · ORDER BY и первичный ключ: ключ к скоростиопираются: урок 9
Загрузка данных и агрегации
- Агрегатные комбинаторы: -If, -Array, -State/-MergecountIf и sumIf вместо подзапросов, -Array по массивам, промежуточные состояния -State и их слияние -Merge.урок 13 · Агрегатные комбинаторы: -If, -Array, -State/-Mergeопираются: урок 14
- Агрегации и аналитические функцииGROUP BY с count, sum, avg, uniq и quantile, функции дат для группировки по часам, argMax, topK, WITH TOTALS, LIMIT BY.урок 12 · Агрегации и аналитические функцииопираются: урок 13
- Вставка больших объёмов: батчи, а не строкиКаждый INSERT это новая часть, Too many parts, батчи по тысячам строк, async_insert и Buffer, INSERT SELECT.урок 11 · Вставка больших объёмов: батчи, а не строкиопираются: урок 12
Ускорение и управление данными
- Материализованные представления: предагрегация на летуMV как триггер на вставку, TO-таблица на SummingMergeTree или AggregatingMergeTree, дашборд по часам за миллисекунды.урок 14 · Материализованные представления: предагрегация на летуопираются: урок 15
- Сжатие данныхLZ4 и ZSTD, кодеки Delta, DoubleDelta и Gorilla, LowCardinality, system.columns и коэффициент сжатия.урок 17 · Сжатие данныхопираются: урок 18
- Сэмплирование данныхSAMPLE BY в ключе таблицы, SAMPLE 0.1 и масштабирование результата, когда приблизительный ответ годится.урок 15 · Сэмплирование данныхопираются: урок 16
- TTL: автоматический жизненный цикл данныхTTL на таблицу и колонку, удаление сырых событий через 90 дней, когда TTL срабатывает, drop партиций.урок 16 · TTL: автоматический жизненный цикл данныхопираются: урок 17
Масштабирование, интеграции и пределы
- Интеграции: Kafka и S3Табличный движок Kafka с материализованным представлением, функция s3 для чтения файлов озера, INSERT из озера.урок 19 · Интеграции: Kafka и S3опираются: урок 20
- Распределённые таблицы и шардированиеШарды и реплики, движок Distributed, ключ шардирования, запрос на всех шардах и сборка ответа, кластер словами.урок 18 · Распределённые таблицы и шардированиеопираются: урок 19
- Типичные ошибки при работе с ClickHouseВставка по строке, неудачный ORDER BY, мелкие партиции, UPDATE как привычка, JOIN двух больших таблиц, Nullable везде.урок 21 · Типичные ошибки при работе с ClickHouse
- ClickHouse против PostgreSQL для аналитикиОдин запрос дашборда в обеих базах, где ClickHouse выигрывает на порядки, где PostgreSQL удобнее, как их сочетают.урок 20 · ClickHouse против PostgreSQL для аналитикиопираются: урок 21