Одиночный ClickHouse рано или поздно упирается в объём, скорость или отказоустойчивость.
Дальше - шарды и реплики, и вот там начинается самое интересное: SQL продолжает работать без единой правки, сервер ошибок не возвращает, а запросы могут выдавать неверные ответы:
count() задваивается, если в пути реплики потерялся {shard} - при этом uniqExact() и avg() остаются верными, и отчёт выглядит здоровым
LIMIT без ORDER BY возвращает строки одного шарда, второй в выборку не попадает
JOIN без GLOBAL теряет строки без оповещения клиента
INSERT через Distributed отвечает "ОК" раньше, чем данные дошли до шардов
неудачный ключ шардирования кладёт весь свежий трафик на один шард, а готовой операции для смены ключа в ClickHouse нет
За 42 шага ты разберёшь каждую из этих ситуаций на практике и научишься их замечать. Нужная теория разобрана прямо в стенде.
Кластер: 2 шарда по 2 реплики, отдельный ClickHouse Keeper из 3 узлов, версия 26.7. Данные ощутимые: 10 млн строк. Автотесты проверяют состояние объектов в базе.
Пригодится, если уже работаешь с ClickHouse или собираешься: шардирование и распределённые запросы стабильно встречаются на собеседованиях уровня middle и выше.
Содержание: 1. Введение 2. Подключение и разведка 3. Шардирование и репликация: разные оси 4. Реплицированная и распределённая таблицы 5. Реальные данные: загрузка 10М строк Citibike 6. Физическое хранение данных 7. Ключ шардирования и перекос 8. Чтение и диагностика на шардированном кластере 9. Перенос таблицы на шардированный кластер 10. Запись на шардированном кластере 11. Когда данные на нодах расходятся 12. Очистка и итоги
Доступ выдаётся на 30 дней. Материалы можно сохранить в PDF. После оплаты получи доступ по ссылке: https://labs-pay.rzvde.pro/claim