Участник:Gorvzavodru/Шардирование
Шардирование (шардинг, sharding[1], от англ. shard «осколок»[2]) — принцип проектирования базы данных, при котором данные разбиваются на части и размещаются на разных шардах[3].
Термин «шардирование» может использоваться как синоним термина «горизонтальное партиционирование»[4].
Общая информация[править]
Шардирование обычно используется когда[5]:
- увеличивается количество данных и частота запросов к базе данных.
- система требует все больше ресурсов, но вертикальное масштабирование кластера, которое предполагает обновление аппаратного обеспечения имеющихся серверов, не может быть использовано, так как существуют физические пределы — по количеству ядер на процессор, количеству процессоров, объему памяти и т. д.
Поскольку шардирование означает разделение набора данных и нагрузки по нескольким узлам СУБД, нужно понимать, по какому принципу реализуется это разделение. Как правило, данные разделяются по какому-то признаку, то есть ключу: записи с одинаковым значением ключа шардирования группируются в единый набор данных, который хранится на одном вычислительном узле, что облегчает обработку[6].
Существует несколько видов шардинга, каждый из которых применяться при определенных требованиях и исходной структуре БД. К основным видам относятся горизонтальное и вертикальное разделение шардирование.
Горизонтальное шардирование представляет из себя метод разделения хранилища по строкам, а точнее по определенным критериям строки. Каждый сегмент содержит одинаковые столбцы, но, соответственно, разные строки.
Вертикальное шардирование же, в свою очередь, подразумевает разделение хранилище по столбцам. В таком случае каждый шард содержит определенные столбцы и все связанные с ними строки.[7]
Связанные определения[править]
- Шард — отдельный узел внутри кластера, который может состоять из одной или нескольких реплик[3].
- Реплика — сервер, на который дублируются данные в рамках шарда[3].
См. также[править]
Источники[править]
- ↑ https://www.tarantool.io/ru/doc/latest/platform/sharding/
- ↑ https://habr.com/ru/companies/ozontech/articles/705912/
- ↑ 3,0 3,1 3,2 https://yandex.cloud/ru/docs/glossary/sharding
- ↑ https://habr.com/ru/companies/oleg-bunin/articles/433370/
- ↑ https://docs.arenadata.io/ru/ADQM/current/concept/architecture/sharding.html
- ↑ https://bigdataschool.ru/blog/sharding-in-greenplum.html
- ↑ https://gitverse.ru/blog/articles/data/249-chto-takoe-shardirovanie-bd-bazy-dannyh