КЛАСТЕР
В режиме кластера Сфера MDX сервер распределяет данные куба по узлам и выполняет запрос на всех узлах параллельно
Массово-параллельная архитектура
MPP (Massively Parallel Processing) — архитектура, в которой данные распределены между независимыми узлами (шардами), а каждый узел обрабатывает свою часть данных одновременно с остальными. Частичные результаты затем объединяются в общий ответ.
Для OLAP-кубов это существенно: аналитический запрос агрегирует очень большое число строк фактов. На одном сервере время ответа и объём данных ограничены его ресурсами, а в MPP-кластере нагрузка делится между узлами.
Данные куба разделены по узлам, каждый узел хранит свою часть.
Запрос выполняется на всех узлах одновременно, результаты объединяются.
Объём данных и производительность наращиваются добавлением узлов, а не увеличением производительности одного сервера.
Архитектура кластера
Кластерный режим рассчитан на встроенное MPP-хранилище MDWH Storage либо оригинальный сервер ClickHouse. Клиенты работают с сервером так же, как и без кластера: распределение запроса по узлам и сбор результата выполняет MPP-хранилище.
Принципы построения
- 1Куб — распределённая таблица
Сфера выбирает данные из распределённой таблицы, а ХД раскладывает запрос по шардам и собирает результат. Данные распределяются между шардами по ключу шардирования, который задаётся при построении куба, например случайному для равномерной загрузки.
- 2Измерения реплицируются
Справочники измерений хранятся на всех узлах (ReplicatedMergeTree). Поэтому каждый шард выполняет свою часть запроса, не обращаясь к другим узлам.
- 3Одна аналитическая таблица
Исходные данные куба загружаются в одну таблицу на узле-инициаторе (узел «Аналитическая таблица»), а куб строится из неё записью сразу в распределённую таблицу (узел «Создать куб»). Эта аналитическая таблица может использоваться как табличное хранилище для других систем Сферы либо автоматически удаляться, чтобы избежать дублирования данных.
- 4Единые права на всех узлах
Роли, разрешения и политики строк создаются на каждом узле кластера. На шардах запрос выполняется от имени того же пользователя, поэтому ограничения строк действуют и там.
- 5Администрирование
Административный портал показывает состав кластера, узлы и их роль, а для каждого распределённого куба — распределение данных по шардам. Шард без данных помечается как аварийный.
Режимы работы и ограничения
Если кластер не настроен, Сфера MDX сервер работает с одним сервером ClickHouse или с другой базой данных, с обычными таблицами куба и без распределённых таблиц. Все возможности сервера доступны и в этом режиме.
Если кластер в ХД настроен, но режим MPP нужен не для всех кубов, Сфера MDX сервер работает в смешанном режиме: в кластере можно создавать нераспределённые кубы. Такой куб создаётся на узле-инициаторе.
Если один из шардов недоступен, запрос к распределённому кубу завершается ошибкой, а не возвращает неполный итог. Так сделано намеренно, чтобы не выдавать неверные цифры. Административный портал показывает, на каком шарде нет данных.
Для распределённого куба ключ шардирования обязателен. Изменить его у готового куба без перераспределения данных нельзя, поэтому ключ выбирается при проектировании куба.
Для построения куба в кластере пользователю необходимы права на уровне кластера.