[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for Sharded PostgreSQL](../index.md) > [Концепции](index.md) > Шардирование

# Шардирование в Managed Service for Sharded PostgreSQL

[_Шардирование_](../../glossary/sharding.md) — стратегия горизонтального масштабирования, при которой данные из нескольких PostgreSQL-кластеров объединяются в единый кластер Sharded PostgreSQL. При этом PostgreSQL-кластеры располагаются в том же каталоге и в той же облачной сети, что и кластер Sharded PostgreSQL. В кластере Sharded PostgreSQL данные распределяются по шардам с помощью [ключа шардирования](sharding-keys.md). Количество шардов в кластере не ограничено.

Кластер Sharded PostgreSQL содержит:

* Хосты, которые управляют шардированием в кластере Sharded PostgreSQL.
* Хосты PostgreSQL-кластеров — выступают в роли хостов с данными (мастер и наборы реплик).

Managed Service for Sharded PostgreSQL поддерживает следующие стратегии шардирования данных:

* [по хешу](https://pg-sharding.tech/sharding/hashed);
* [по диапазону значений](https://pg-sharding.tech/sharding/ranged).

Узнайте больше о стратегиях шардирования данных в разделе [Стратегии шардирования](sharding-keys.md#sharding-strategies).

## Преимущества шардирования {#advantages}

Шардирование обычно используется в следующих случаях:

* Ожидаются высокая частота запросов к базе данных PostgreSQL и быстрый рост количества данных.
* Приложению не хватает ресурсов, но наращивать вычислительную мощность хостов PostgreSQL-кластера (дисков, памяти и процессоров) уже невозможно.

Шардирование помогает:

* Преодолевать технические ограничения.

    Потребность работать с большими наборами данных может привести к тому, что инфраструктура хранения данных будет функционировать на пределе возможностей оборудования, доступного на рынке (например, дисковая подсистема будет показывать неудовлетворительные метрики по IOPS). Если приложению приходится работать близко к потолку возможностей оборудования, имеет смысл распределить данные по шардам. В этом случае операции чтения будут выполняться параллельно.

* Повышать отказоустойчивость.

    Шардирование позволяет изолировать отказы отдельных хостов или наборов реплик. Без шардирования потеря отдельного хоста приводит к потере доступа ко всему набору данных, которые он содержит. А отказ, например, одного шарда из пяти оставляет доступными 80% данных таблицы.

* Повышать скорость выполнения запросов.

    Скорость выполнения запросов может снижаться из-за конкуренции за ресурсы. Обычно это происходит при росте количества операций чтения или затрат процессорного времени на их обработку. Шарды выполняют запросы к одной и той же таблице параллельно. Это исключает конкуренцию за общие ресурсы (процессор, дисковая подсистема) и сокращает время обработки запросов.

## Особенности управления шардированием в Managed Service for Sharded PostgreSQL {#shard-management}

За управление шардированием в Managed Service for Sharded PostgreSQL отвечают хосты с ролями `ROUTER` ([маршрутизация запросов пользователей](https://pg-sharding.tech/sharding/cluster_components/router)) и `COORDINATOR` ([хранение конфигурации шардов](https://pg-sharding.tech/sharding/cluster_components/coordinator)).

В Managed Service for Sharded PostgreSQL можно использовать шардирование двух типов:

* Стандартное — экономичный тип шардирования для кластеров, в которых нет особых требований к хостам, управляющим шардированием. В кластер будут добавлены хосты `INFRA`, сочетающие в себе роли `ROUTER` и `COORDINATOR`.

* Расширенное — гибкий тип шардирования. В кластер будут добавлены хосты `ROUTER` и (опционально) `COORDINATOR`.

Настройка шардирования выполняется через хосты `COORDINATOR` или `INFRA`.

В кластере Managed Service for Sharded PostgreSQL все запросы должны направляться к хостам `ROUTER` или `INFRA`. Хосты этих типов нельзя полностью удалить из кластера. Должен оставаться как минимум один хост `ROUTER` или `INFRA`.