Открыто 8 глав
Первый урок: Ответ есть, а цены у него нет: чем мерить без секундомера
Интерактивный курс · ClickHouse
Два запроса — один ответ.
Цены у них разные.
Не «обзор быстрой аналитической СУБД», а одна выдача читального зала, которую ты собираешь сам: комбинаторы агрегатов, массивы как колонки, воронки и удержание, время без пропусков, соединения с их отказами — и раскладка, из-за которой тот же ответ стоит вдвое дешевле. Настоящий ClickHouse 24.10 в песочнице, ноль установки.
- Настоящий сервер, а не подсветка синтаксиса
- Ноль установки: ни клиента, ни докера, ни карты
- Первая глава целиком бесплатно — 5 уроков
- Дельта к SQL: ни абзаца про SELECT и GROUP BY
Что болит
Симптом с работы — и то, чем курс его лечит
Слева — то, с чем приходят. Справа — приём из программы, который это закрывает, и урок, где он исполняется в ячейке.
Запрос «стал медленным», а почему — непонятно: секундомер показывает разное на одних и тех же данных
цена ответа в прочитанномСекунды здесь мерить нечем, а прочитанное — можно: части, строки и засечки берутся из плана исполнения. Курс с первого урока меряет ответ ими, и все дальнейшие утверждения опираются на число, а не на ощущение.
Пять метрик — пять запросов по одной и той же таблице
условие внутри агрегатаcountIf, sumIf, uniqIf и остальные суффиксы-комбинаторы: пять ответов за один проход по колонке вместо пяти запросов. Это не сахар — в колоночном движке за каждый лишний проход платят чтением.
Два отчёта считают «уникальных пользователей» и не сходятся
точность, названная числомНа «сколько разных» здесь пять ответов, и у каждого своя ошибка и своя цена. Плюс правило, из-за которого готовые дневные числа нельзя сложить в месячные — самая частая причина расхождения на месяц.
Воронка написана пятью соединениями и считается минуту
путь посетителя за один проходwindowFunnel, sequenceMatch и retention отвечают на «дошёл ли», «в каком порядке» и «вернулся ли» одним проходом по колонке. И там же — где каждый из них врёт: окно, поймавшее чужой шаг, и шаблон, совпавший не в том месте.
В дневном графике пропал день, потому что в тот день ничего не было
ряд без пропусковСетка интервалов любой длины, WITH FILL с INTERPOLATE, итоговая строка и её ловушка, оконные функции под именами ClickHouse. Дыра в ряде — не свойство данных, а решение о запросе.
Соединение с большой таблицей падает по памяти
правая сторона и её алгоритмПравая сторона уезжает в память целиком — это не баг, а устройство. Отсюда выбор join_algorithm под её размер, ноль вместо NULL у непопавшей пары и справочник, который дешевле держать вообще не таблицей.
Курс для вас, если
- Аналитику, которому дали доступ в ClickHouse и сказали «пиши как в постгресе» — а оно ведёт себя иначе
- Тому, кто уверенно пишет SELECT с GROUP BY, JOIN и окнами: курс начинается там, где заканчивается наш курс SQL
- Тому, кто читает вакансии и видит ClickHouse в требованиях к аналитику, а не только к инженеру
- Тому, кто уже прошёл курс дата-инжиниринга: там ClickHouse — конец ленты, здесь он рабочее место того, кто отвечает на вопросы
И НЕ для вас, если
- Новичку без SQL. Здесь нет ни абзаца про SELECT, GROUP BY и оконные функции — это соседний курс, и этот начинается там, где тот заканчивается
- Тому, кто ищет курс администратора: репликации, настройки серверов и обслуживания кластера здесь нет, и это сказано отдельной секцией ниже
- Тому, кто ждёт обзор «десять баз за месяц». Курс про ОДИН движок и про то, чем он отличается от строчной базы
- Тому, кому нужен диплом и трудоустройство. Курс даёт навык, собранный ответ и сертификат платформы — не гарантию оффера
Как устроено
Урок закрывается сервером, а не прокруткой
В каждом уроке есть исполняемая ячейка ClickHouse, в каждом — проверка. Ответ засчитывается по строкам, которые он вернул, а не по буквам, которыми написан.
Живая ячейка
Запрос уходит настоящему ClickHouse 24.10. Каждое исполнение получает свою временную базу и сносит её после ответа — поэтому эксперимент соседа не влияет на ваш.
Отказ движка как материал
Тринадцать уроков построены на настоящем отказе: превышенная память на правой стороне соединения, запрет запроса мимо ключа сортировки, ограничение на размер результата. Вы видите текст, который движок отвечает вашей ячейке, и чините причину.
Гейт из задач
Каждая глава закрывается задачами тренажёра, которые открываются ТОЛЬКО на ClickHouse: закрыть их постгресом нельзя, иначе гейт проверял бы не то, чему учил.
Шестая смена одной истории
27 марта 2184, 10:15. Ты по эту сторону стекла.
Станция-архив «Хранилище-9», читальный зал Академии. Ночная лента работает без тебя: данные доезжают, повторный запуск ничего не ломает. В зале спрашивают другое — «сколько», «кто», «в каком порядке», «дошёл ли до конца», «вернулся ли через неделю». Смотритель зала ждёт три числа за март, а два твоих запроса дают один и тот же ответ за разные деньги.
Наставник тот же — КВЕРИ, старый архивный интеллект с характером кота, который вёл тебя через первый сигнал. На каждый новый ответ у него ровно один вопрос: сколько ты прочитал, чтобы это сказать. Ответа без числа он не принимает. К последней главе ты обнаруживаешь, что почти всё, что считал свойством запроса — «быстро», «дёшево», «без дублей», — было решением о раскладке, принятым кем-то до тебя.
Маршрут
Четыре слоя одного ответа
Курс — не список функций движка. Каждая глава кладёт в выдачу зала по ответу, и каждый ответ запускается в ячейке.
- I
Диалект ответа
Чем меряют ответ и как называть его точность числом
- ch1Читальный зал: чем меряют ответ
- ch2Сколько разных и насколько точно
- II
Форма ответа
Список, путь посетителя и время — то, из чего ответ зала собран
- ch3Массивы: список как колонка
- ch4Путь посетителя: воронка, шаблон, удержание
- ch5Время: сетка, ряд без дыр, окно
- III
Цена ответа
Раскладка и соединения: почему один ответ дороже другого
- ch6Раскладка: почему один ответ дороже другого
- ch7Соединения: почему здесь всё иначе
- IV
Ответ сдан
Капстоун, несколько машин и экзамен на незнакомом вопросе
- ch8Собрать выдачу целиком и защитить её числами
Программа
8 глав, 41 урок, 13,1 часа
Состав утверждён и совпадает с каноном — это проверяет тест, а не обещание. Глава, у которой в базе уже есть уроки, раскрывается ссылками и прогрессом; остальные ждут своей волны.
Читальный зал: чем меряют ответ
Первая смена по эту сторону стекла: смотритель ждёт три числа за март, а два запроса дают один и тот же ответ за разные деньги. Часов в зале нет — секундомер считает вместе с открытием базы и заливкой данных, — поэтому ответ меряют прочитанным: части, строки, засечки. К концу главы у тебя есть первый ответ в панели зала и умение доказать числом, что соседний ответ дороже.
Сколько разных и насколько точно
Два отчёта зала спорят друг с другом, и оба правы. «Сколько разных» — это пять разных чисел, у каждого своя ошибка и своя цена; «какая медиана» — три. Плюс правило, из-за которого готовые дневные числа нельзя сложить в месячные, и единственная причина, по которой в витрине хранят не число, а состояние.
Массивы: список как колонка
Список здесь — обычная колонка, а не сериализованная строка, которую потом разбирают регуляркой. Собрать, развернуть обратно, посчитать лямбдой, проверить принадлежность и отдать массивом как ответ. Половина отчётов, которые в строчной базе писались соединением, здесь пишется без него — и читает меньше.
Путь посетителя: воронка, шаблон, удержание
Вопросы зала про поведение — «дошёл ли», «в каком порядке», «вернулся ли через неделю» — считаются одним проходом по колонке, а не конструкцией из пяти соединений. Глава ставит windowFunnel, sequenceMatch и retention и честно показывает, где каждый из них врёт: окно, которое ловит чужой шаг, и шаблон, который совпал не там.
Время: сетка, ряд без дыр, окно
Все вопросы зала — про время, и глава закрывает то, чего нет ни в одном курсе платформы: сетку интервалов любой длины, ряд, в котором пропущенный день не исчезает, а рисуется нулём, итоговую строку с её ловушкой и оконные функции ClickHouse под их собственными именами.
Раскладка: почему один ответ дороже другого
Дежурный впервые трогает не запрос, а саму витрину зала. Чтение плана, приговор движка вместо погоды, порядок колонок в ключе сортировки под конкретный вопрос и четыре способа читать меньше — PREWHERE, skip-индекс, проекция, второй ключ — с деревом решения и ценой каждого. К концу главы ты умеешь не только починить чужой запрос, но и разложить таблицу так, чтобы запрос прошёл под сдаточным тумблером.
Соединения: почему здесь всё иначе
Соединение здесь — не то же соединение, что в строчной базе: правая сторона целиком уезжает в память и упирается в её предел, непопавшая пара даёт ноль вместо NULL, а маленький справочник дешевле держать вообще не таблицей. Каждое утверждение главы доказывается отказом движка и чинится настройкой или переписыванием.
Собрать выдачу целиком и защитить её числами
Капстоун в два захода: собрать ответы зала под фиксированный список вопросов и доказать числами плана, что они дёшевы. Потом — ответ, собранный из двух машин, и честная граница: чего в песочнице нет, чем мы это заменяли и что откроется в первый рабочий день. Заканчивается экзаменом на незнакомом вопросе.
Честная граница
Чего в курсе нет — и почему
Граница навыка должна стать известна выпускнику раньше, чем её обнаружит рекрутер. Поэтому она сказана здесь, до покупки, и повторена последней главой курса.
Администрирование и репликация
Песочница платформы работает под непривилегированной ролью: служебные таблицы движка закрыты, обслуживающие команды запрещены. Иначе она перестала бы быть песочницей.
Всё, что обычно смотрят в служебных таблицах, курс показывает разрешёнными средствами и честно говорит, чем именно заменил. Урок, который говорит о том, чего в песочнице нет, обязан нести плашку — её наличие проверяет гейт, а не совесть автора.
Несколько машин по-настоящему
В песочнице один сервер. Обещать распределённый кластер значило бы продавать слайды под видом практики.
Отдельный урок собирает ответ из двух локальных таблиц через UNION ALL и показывает на нём главное следствие распределённости: почему числа уникальных нельзя складывать по узлам, а суммы — можно.
Загрузка данных и потоки
Это тема соседнего курса — там ClickHouse стоит в конце ленты и учат класть в него данные так, чтобы их можно было перезалить.
Здесь данные уже лежат, и вопрос другой: как на них ОТВЕТИТЬ и сколько этот ответ стоит. Пересечение тем проверено сплошным поиском по канону всех курсов платформы.
FAQ
Частые вопросы
Нет. ClickHouse 24.10 работает песочницей платформы прямо во вкладке: ячейка урока исполняется настоящим сервером, а не подсвеченным текстом. Ни докера, ни клиента, ни облачного аккаунта, ни кредитной карты — открыл вкладку и пишешь запрос.
Смена начинается в 10:15
Первая глава открыта целиком — 5 уроков без подписки и без карты. Дальше решишь сам.