Шардирование в Managed Service for Sharded PostgreSQL
Шардирование — стратегия горизонтального масштабирования, при которой данные из нескольких PostgreSQL-кластеров объединяются в единый кластер Sharded PostgreSQL. При этом PostgreSQL-кластеры располагаются в том же каталоге и в той же облачной сети, что и кластер Sharded PostgreSQL. В кластере Sharded PostgreSQL данные распределяются по шардам с помощью ключа шардирования. Количество шардов в кластере не ограничено.
Кластер Sharded PostgreSQL содержит:
- Хосты, которые управляют шардированием в кластере Sharded PostgreSQL.
- Хосты PostgreSQL-кластеров — выступают в роли хостов с данными (мастер и наборы реплик).
Managed Service for Sharded PostgreSQL поддерживает следующие стратегии шардирования данных:
Подробнее о шардировании данных читайте в документации SPQR
Преимущества шардирования
Шардирование обычно используется в следующих случаях:
- Ожидаются высокая частота запросов к базе данных PostgreSQL и быстрый рост количества данных.
- Приложению не хватает ресурсов, но наращивать вычислительную мощность хостов PostgreSQL-кластера (дисков, памяти и процессоров) уже невозможно.
Шардирование помогает:
-
Преодолевать технические ограничения.
Потребность работать с большими наборами данных может привести к тому, что инфраструктура хранения данных будет функционировать на пределе возможностей оборудования, доступного на рынке (например, дисковая подсистема будет показывать неудовлетворительные метрики по IOPS). Если приложению приходится работать близко к потолку возможностей оборудования, имеет смысл распределить данные по шардам. В этом случае операции чтения будут выполняться параллельно.
-
Повышать отказоустойчивость.
Шардирование позволяет изолировать отказы отдельных хостов или наборов реплик. Без шардирования потеря отдельного хоста приводит к потере доступа ко всему набору данных, которые он содержит. А отказ, например, одного шарда из пяти оставляет доступными 80% данных таблицы.
-
Повышать скорость выполнения запросов.
Скорость выполнения запросов может снижаться из-за конкуренции за ресурсы. Обычно это происходит при росте количества операций чтения или затрат процессорного времени на их обработку. Шарды выполняют запросы к одной и той же таблице параллельно. Это исключает конкуренцию за общие ресурсы (процессор, дисковая подсистема) и сокращает время обработки запросов.
Особенности управления шардированием в Managed Service for Sharded PostgreSQL
За управление шардированием в Managed Service for Sharded PostgreSQL отвечают хосты с ролями ROUTER (маршрутизация запросов пользователейCOORDINATOR (хранение конфигурации шардов
В Managed Service for Sharded PostgreSQL можно использовать шардирование двух типов:
-
Стандартное — экономичный тип шардирования для кластеров, в которых нет особых требований к хостам, управляющим шардированием. В кластер будут добавлены хосты
INFRA, сочетающие в себе ролиROUTERиCOORDINATOR. -
Расширенное — гибкий тип шардирования. В кластер будут добавлены хосты
ROUTERи (опционально)COORDINATOR.
Настройка шардирования выполняется через хосты COORDINATOR или INFRA.
В кластере Managed Service for Sharded PostgreSQL все запросы должны направляться к хостам ROUTER или INFRA. Хосты этих типов нельзя полностью удалить из кластера. Должен оставаться как минимум один хост ROUTER или INFRA.