ХабрПостыНовостиМегапосты?

Релиз Postgres Pro Shardman 18.3.2: катастрофоустойчивость DRS и высокопроизводительная маршрутизация на стороне клиента

Компания Postgres Professional объявляет о выходе новой версии распределённой СУБД Postgres Pro Shardman 18.3.2. Основной фокус релиза — обеспечение непрерывности бизнеса в географически распределённых кластерах, радикальное ускорение высоконагруженных OLTP-операций и качественное улучшение опыта администрирования (UX).

Решение DRS: катастрофоустойчивость на уровне регионов

Механизм георезервирования существовал в Shardman начиная с 14-й версии, однако ранее был доступен лишь отдельным клиентам. В версии 18 DRS становится полноценной функцией, открытой для всех пользователей, с расширенными возможностями многорегиональной топологии.

Принцип работы: в основном ЦОД функционирует продуктивный кластер, в резервном — его реплика в режиме standby. Кластер в автоматическом режиме создает точки восстановления, которые асинхронно реплицируются на резервный ЦОД по каждой ноде отдельно. При сбое система восстанавливается в резервном ЦОД на указанную точку. 

Ключевые характеристики DRS:

Реплика, конечно же, может быть слабее по серверным мощностям, но должна быть той же топологии, что и исходный кластер. 

Маршрутизация на стороне клиента (Shard Selection)

Для систем с нагрузкой от 30 млн транзакций в сутки время, затрачиваемое на межсерверные взаимодействия и расчёты внутри БД, становится критическим. В новом релизе оптимизирован механизм определения местонахождения данных.

Оптимизирована функция get_partition_for_value(), которая на больших объёмах могла занимать значительное время. 

Оптимизация производительности запросов

В 18.3.2 значительно переработан планировщик и транспортный слой Shardman, что особенно заметно на CPU-ограниченных окружениях.

Стандартизация модели объектов

Мы стандартизировали работу с объектами данных внутри Shardman, сделав ее более единообразной. Это ключевое архитектурное изменение мажорного релиза.

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

В Shardman 18 вводится четкая иерархия:

Таким образом, мы, фактически, разводим объекты по схемам. Схемы поддерживаются двух видов - распределенные, и локальные. Распределенные схемы могут содержать в себе привязанные локальные объекты, жизненный цикл которых контролируется распределенной системой. Локальные схемы ничем не ограничены, но не могут содержать в себе распределенные объекты. 

Таким образом, зная, из какой схемы объект, становится понятна концепция его поведения, и модель взаимодействия с другими объектами на уровне DDL. При этом, в выполнении запросов (например, одновременно к распределенным, и локальным объектам) пользователи никак не ограничены. 

Отказоустойчивость при потере шарда

Добавлена работы с частичной деградацией. Если один из шардов выходит из строя, система не блокируется целиком:

Улучшение shardmanctl и архитектуры

Мы продолжаем упрощать эксплуатацию Shardman, делая её более простой для администраторов и разработчиков:

Борьба с Table Bloating 

Для стабильной работы под интенсивной нагрузкой (чтение/запись/обновление) в состав Shardman интегрирован патч, который помогает облегчить проблему «распухания» таблиц (bloating). Тесты на высоконагруженных таблицах показали, что даже при непрерывной многодневной нагрузке объём таблицы увеличивается не более чем в два раза — это значительно стабильнее стандартных механизмов очистки.

Поддержка pg_probackup 3

В Shardman 18.3.2 интегрирована поддержка pg_probackup 3 — полностью переработанного инструмента резервного копирования с новой архитектурой и API-интерфейсами (библиотеки на C, C++ и Go).

Как обновиться

Новая версия уже доступна в репозиториях Postgres Professional. Перед обновлением рекомендуем ознакомиться с обновлённой документацией:

https://postgrespro.ru/docs/shardman/18/index

@slonik_pg
17.04.2026 19:15 UTC
Первоисточник

Комментарии

@rabotash
17.04.2026 17:14 UTC
0

Shadman?