tgoop.com/big_data_systems_analysis/23
Last Update:
Шардирование данных в ClickHouse
Шардирование — стратегия горизонтального масштабирования кластера (набора серверов), при которой части одной базы данных размещаются (и обрабатываются) параллельно на разных узлах кластера. Узел — 1 сервер кластера. Каждый сервер хранит свой набор данных.
Для шардирования используется движок Distributed. Он не хранит данные самостоятельно, а позволяет обрабатывать запросы распределённо, на нескольких серверах. Чтение автоматически распараллеливается.
Данные между шардами распределяются либо по какому-то ключу, например по идентификатору пользователя, либо равномерно. В качестве ключа шардирования рекомендуется брать значение хеш-функции от поля (not-Nullable) в таблице, которое обеспечит достаточно ровное распределение наборов данных по разным шардам в кластере. Либо же поле должно быть наполненно уникальными INTEGER значениями. Это важно для равномерного распределения данных между шардами.
Каждая шардированная таблица в ClickHouse состоит из:
— распределенной таблицы на движке Distributed, которая маршрутизирует запросы;
— нижележащих таблиц с данными, расположенных на нескольких шардах кластера.
С шардированной таблицей можно работать с данными, обращаясь:
— к нижележащим таблицам напрямую: вставлять данные на нужные шарды или читать данные, содержащиеся в таблице на конкретном шарде (сложнее, но эффективнее);
— через распределенную таблицу, которая будет представлять данные всех распределнных таблиц в виде единой таблицы.
Подробнее про создание Distributed-table можно прочитать в доке: https://clickhouse.com/docs/en/engines/table-engines/special/distributed
#clickhouse
BY В мире больших данных
Share with your friend now:
tgoop.com/big_data_systems_analysis/23