Хранилище-9 · читальный зал Академии

Открыто 8 глав

Первый урок: Ответ есть, а цены у него нет: чем мерить без секундомера

0/41
уроков пройдено
0· +10 за урок
Начать бесплатно

Интерактивный курс · ClickHouse

Два запроса — один ответ.
Цены у них разные.

Не «обзор быстрой аналитической СУБД», а одна выдача читального зала, которую ты собираешь сам: комбинаторы агрегатов, массивы как колонки, воронки и удержание, время без пропусков, соединения с их отказами — и раскладка, из-за которой тот же ответ стоит вдвое дешевле. Настоящий ClickHouse 24.10 в песочнице, ноль установки.

  • Настоящий сервер, а не подсветка синтаксиса
  • Ноль установки: ни клиента, ни докера, ни карты
  • Первая глава целиком бесплатно — 5 уроков
  • Дельта к SQL: ни абзаца про SELECT и GROUP BY
Один и тот же ответ, разная цена. Разницу назначает не запрос, а раскладка — и её видно числом в плане исполнения, а не на секундомере.
8 глав
слоёв одного ответа
41
уроков, в каждом — живая ячейка
13,1 ч
честных минут, а не округления
5
уроков бесплатно, без карты

Что болит

Симптом с работы — и то, чем курс его лечит

Слева — то, с чем приходят. Справа — приём из программы, который это закрывает, и урок, где он исполняется в ячейке.

  • Запрос «стал медленным», а почему — непонятно: секундомер показывает разное на одних и тех же данных

    цена ответа в прочитанном

    Секунды здесь мерить нечем, а прочитанное — можно: части, строки и засечки берутся из плана исполнения. Курс с первого урока меряет ответ ими, и все дальнейшие утверждения опираются на число, а не на ощущение.

  • Пять метрик — пять запросов по одной и той же таблице

    условие внутри агрегата

    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», читальный зал Академии. Ночная лента работает без тебя: данные доезжают, повторный запуск ничего не ломает. В зале спрашивают другое — «сколько», «кто», «в каком порядке», «дошёл ли до конца», «вернулся ли через неделю». Смотритель зала ждёт три числа за март, а два твоих запроса дают один и тот же ответ за разные деньги.

Наставник тот же — КВЕРИ, старый архивный интеллект с характером кота, который вёл тебя через первый сигнал. На каждый новый ответ у него ровно один вопрос: сколько ты прочитал, чтобы это сказать. Ответа без числа он не принимает. К последней главе ты обнаруживаешь, что почти всё, что считал свойством запроса — «быстро», «дёшево», «без дублей», — было решением о раскладке, принятым кем-то до тебя.

Маршрут

Четыре слоя одного ответа

Курс — не список функций движка. Каждая глава кладёт в выдачу зала по ответу, и каждый ответ запускается в ячейке.

  1. I

    Диалект ответа

    Чем меряют ответ и как называть его точность числом

    • ch1Читальный зал: чем меряют ответ
    • ch2Сколько разных и насколько точно
  2. II

    Форма ответа

    Список, путь посетителя и время — то, из чего ответ зала собран

    • ch3Массивы: список как колонка
    • ch4Путь посетителя: воронка, шаблон, удержание
    • ch5Время: сетка, ряд без дыр, окно
  3. III

    Цена ответа

    Раскладка и соединения: почему один ответ дороже другого

    • ch6Раскладка: почему один ответ дороже другого
    • ch7Соединения: почему здесь всё иначе
  4. IV

    Ответ сдан

    Капстоун, несколько машин и экзамен на незнакомом вопросе

    • ch8Собрать выдачу целиком и защитить её числами

Программа

8 глав, 41 урок, 13,1 часа

Состав утверждён и совпадает с каноном — это проверяет тест, а не обещание. Глава, у которой в базе уже есть уроки, раскрывается ссылками и прогрессом; остальные ждут своей волны.

Глава 1бесплатнооткрыта

Читальный зал: чем меряют ответ

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

цена ответа вместо секундомераcountIf, sumIf, uniqIfargMax без окна
5 уроков · 1 ч 34 минартефакт: журнал зала: вопрос → приём → цена
Глава 2 PROоткрыта

Сколько разных и насколько точно

Два отчёта зала спорят друг с другом, и оба правы. «Сколько разных» — это пять разных чисел, у каждого своя ошибка и своя цена; «какая медиана» — три. Плюс правило, из-за которого готовые дневные числа нельзя сложить в месячные, и единственная причина, по которой в витрине хранят не число, а состояние.

uniq, uniqExact, uniqCombinedквантили и их ценаскладываемость и состояния
4 урока · 1 ч 16 минартефакт: таблица «точность ↔ цена»
Глава 3 PROоткрыта

Массивы: список как колонка

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

groupArray и ARRAY JOINarrayMap, arrayFilter, arrayReduceMap, Tuple, Nested
6 уроков · 1 ч 50 мин
Глава 4 PROоткрыта

Путь посетителя: воронка, шаблон, удержание

Вопросы зала про поведение — «дошёл ли», «в каком порядке», «вернулся ли через неделю» — считаются одним проходом по колонке, а не конструкцией из пяти соединений. Глава ставит windowFunnel, sequenceMatch и retention и честно показывает, где каждый из них врёт: окно, которое ловит чужой шаг, и шаблон, который совпал не там.

windowFunnelsequenceMatch и sequenceCountretention за один проход
5 уроков · 1 ч 32 минартефакт: воронка и удержание в панели зала
Глава 5 PROоткрыта

Время: сетка, ряд без дыр, окно

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

toStartOfIntervalWITH FILL и INTERPOLATELIMIT n BY и накопление
5 уроков · 1 ч 36 минартефакт: дневной ряд без пропусков
Глава 6 PROоткрыта

Раскладка: почему один ответ дороже другого

Дежурный впервые трогает не запрос, а саму витрину зала. Чтение плана, приговор движка вместо погоды, порядок колонок в ключе сортировки под конкретный вопрос и четыре способа читать меньше — PREWHERE, skip-индекс, проекция, второй ключ — с деревом решения и ценой каждого. К концу главы ты умеешь не только починить чужой запрос, но и разложить таблицу так, чтобы запрос прошёл под сдаточным тумблером.

EXPLAIN indexes и гранулыPREWHERE и skip-индексыпроекции и ключ сортировки
7 уроков · 2 ч 10 минартефакт: дерево решения: что выбрать и почём
Глава 7 PROоткрыта

Соединения: почему здесь всё иначе

Соединение здесь — не то же соединение, что в строчной базе: правая сторона целиком уезжает в память и упирается в её предел, непопавшая пара даёт ноль вместо NULL, а маленький справочник дешевле держать вообще не таблицей. Каждое утверждение главы доказывается отказом движка и чинится настройкой или переписыванием.

join_algorithmANY, SEMI, ANTI, ASOFjoin_use_nulls и joinGet
5 уроков · 1 ч 40 мин
Глава 8 PROоткрыта

Собрать выдачу целиком и защитить её числами

Капстоун в два захода: собрать ответы зала под фиксированный список вопросов и доказать числами плана, что они дёшевы. Потом — ответ, собранный из двух машин, и честная граница: чего в песочнице нет, чем мы это заменяли и что откроется в первый рабочий день. Заканчивается экзаменом на незнакомом вопросе.

капстоун на живых числахнесколько машинэкзамен
4 урока · 1 ч 26 минартефакт: выдача зала целиком и её цена

Честная граница

Чего в курсе нет — и почему

Граница навыка должна стать известна выпускнику раньше, чем её обнаружит рекрутер. Поэтому она сказана здесь, до покупки, и повторена последней главой курса.

  • Администрирование и репликация

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

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

  • Несколько машин по-настоящему

    В песочнице один сервер. Обещать распределённый кластер значило бы продавать слайды под видом практики.

    Отдельный урок собирает ответ из двух локальных таблиц через UNION ALL и показывает на нём главное следствие распределённости: почему числа уникальных нельзя складывать по узлам, а суммы — можно.

  • Загрузка данных и потоки

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

    Здесь данные уже лежат, и вопрос другой: как на них ОТВЕТИТЬ и сколько этот ответ стоит. Пересечение тем проверено сплошным поиском по канону всех курсов платформы.

FAQ

Частые вопросы

  • Нет. ClickHouse 24.10 работает песочницей платформы прямо во вкладке: ячейка урока исполняется настоящим сервером, а не подсвеченным текстом. Ни докера, ни клиента, ни облачного аккаунта, ни кредитной карты — открыл вкладку и пишешь запрос.

Смена начинается в 10:15

Первая глава открыта целиком — 5 уроков без подписки и без карты. Дальше решишь сам.