Шардирование в Managed Service for ClickHouse®
Шардирование в ClickHouse® — это стратегия горизонтального масштабирования кластера, при которой данные разделяются на несколько логических частей — шардов. Каждый шард может состоять из одного хоста или нескольких хостов-реплик.
Преимущества шардирования:
- Горизонтальное масштабирование — позволяет преодолеть ограничения одного сервера по CPU, RAM, объему диска и пропускной способности ввода-вывода.
- Параллельное выполнение запросов к одной логической таблице на разных шардах — распределяет нагрузку, снижает конкуренцию за ресурсы и ускоряет чтение и запись данных.
Особенности шардирования в Managed Service for ClickHouse®
Для распределенного хранения данных таблицы в Managed Service for ClickHouse® нужно создать:
- Одинаковые локальные таблицы на движке семейства MergeTree
на нескольких шардах кластера. - Распределенную таблицу на движке Distributed
, использующую эти шарды.
Каждая локальная таблица хранит часть строк распределенного набора данных. Распределенная таблица маршрутизирует запросы к локальным таблицам, но не хранит данные.
Распределение данных таблицы по шардам определяется ключом шардирования. При выполнении запроса INSERT распределенная таблица вычисляет значение ключа шардирования и перенаправляет запрос на ту или иную локальную таблицу. Ключ шардирования задается при создании распределенной таблицы. Примеры ключей шардирования: поля таблицы, вычисляемые выражения, функции случайного распределения.
От выбора ключа шардирования зависят:
- равномерность распределения данных между шардами;
- эффективность выполнения запросов.
Примечание
В отличие от INSERT, запросы SELECT отправляются на все шарды кластера независимо от ключа шардирования. Это поведение может быть изменено с помощью настройки optimize_skip_unused_shards.
Для распределения данных таблицы можно использовать как все шарды кластера, так и их часть — группу шардов. Распределенную таблицу также можно создать на всех шардах кластера или на группе шардов.
Такой подход позволяет вам гибко управлять шардированием в кластере Managed Service for ClickHouse®.
Разные способы шардирования показаны в разделе Шардирование таблиц в ClickHouse®.
Управление шардированием в Managed Service for ClickHouse®
Кластер Managed Service for ClickHouse® можно сразу создать шардированным или включить шардирование позже.
При создании нешардированного кластера в него автоматически добавляется один шард, содержащий все хосты кластера. Чтобы включить шардирование на созданном кластере, добавьте в него как минимум еще один шард.
При создании шардированного кластера в него можно добавить два и более шарда. В уже существующий шардированный кластер можно добавить дополнительные шарды.
Примечание
Нельзя удалить хост из шарда, если достигнут лимит на минимальное количество хостов.
Репликация в шардированном кластере Managed Service for ClickHouse®
В шардированном кластере Managed Service for ClickHouse® репликация работает на уровне шардов, а не кластера целиком:
- каждый шард хранит собственную часть данных;
- реплики одного шарда содержат одинаковые копии этой части данных;
- между разными шардами данные не реплицируются.
Если в кластере включен сервис координации, то при создании шарда с двумя и более хостами автоматически включается репликация.
Примечание
Если в кластере выключен сервис координации, в нем невозможно создать шард с двумя и более хостами.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc