Компания Postgres Professional выпустила обновление Postgres Pro Shardman (версия 17.6.1 на базе Postgres Pro Enterprise 17.6). Этот релиз фокусируется на трёх направлениях: унификации безопасности данных (RLS), оптимизации планировщика для OLTP-нагрузок и усилении защиты сетевого периметра кластера.

Для DBA и архитекторов, строящих распределённые системы, ключевыми нововведениями стали поддержка Row-Level Security на уровне всего кластера, новые режимы изоляции транзакций и возможность полного шифрования трафика без сторонних инструментов.

1. Ускорение планирования одношардовых запросов (Fast Path)

В распределённых СУБД накладные расходы на построение плана выполнения запроса могут быть существенными.

В версии 17.6.1 внедрена оптимизация Fast Path. Суть механизма заключается в раннем анализе входящего запроса. Если система определяет, что запрос обращается к данным, расположенным строго в одной секции, она пропускает стандартные тяжеловесные этапы распределённого планирования.

Вместо этого запрос напрямую перенаправляется на соответствующий узел данных.

Это даёт:

  • существенное снижение задержек (latency) для простых запросов;

  • снижение нагрузки на CPU координатора за счет исключения лишних вычислений плана;

  • повышение пропускной способности кластера в OLTP-сценариях, где преобладают точечные операции чтения и записи.

2. Безопасность данных: распределённый RLS

Долгое время Row-Level Security (RLS) оставался прерогативой монолитных инсталляций. В новом релизе Shardman реализована полная поддержка RLS для глобальных и сегментированных таблиц.

Теперь политики безопасности применяются прозрачно для всего кластера. Это критически важно для мультитенантных приложений (SaaS, банкинг, госсектор), где данные физически разнесены по узлам кластера, но требуют централизованного и гранулярного управления доступом к конкретным записям (независимо от их расположения).

Пример использования
Синтаксис остается стандартным для PostgreSQL, но теперь он работает в контексте распределённой базы: 

-- Включаем RLS на сегментированной таблице
ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;

-- Создаем политику: менеджер видит только свои счета
CREATE POLICY account_managers ON accounts 
    TO managers
    USING (manager = current_user);

При выполнении SELECT * FROM accounts на любом узле кластера Shardman автоматически применит фильтр ко всем шардам, участвующим в выборке.

3. Согласованность: CSN и новые режимы READ COMMITTED

Для корректной работы распределённых транзакций Shardman использует CSN (Commit Sequence Number) — глобальный счётчик последовательности фиксации транзакций.

В обновлении добавлены два режима уровня изоляции READ COMMITTED:

  1. С поддержкой CSN-снимков. Гарантирует строгую согласованность чтения во всём кластере, предотвращая аномалии «грязного чтения» и рассинхронизации времени на узлах.

  2. Без CSN-снимков. Классическое поведение.

Управление осуществляется параметром enable_csn_snapshot_for_read_committed. Это даёт администраторам гибкость в выборе баланса между строгостью изоляции и производительностью.

4. Администрирование и эксплуатация (shardmanctl)

Утилита управления кластером shardmanctl и демон shardmand получили ряд улучшений для Ops-инженеров:

  • Rolling Restart. Команда shardmanctl restart rolling позволяет перезагружать узлы кластера по очереди с минимальным временем простоя, корректно учитывая состояние лидеров и реплик.

  • Улучшенный бэкап. Исправлена проблема, когда при создании резервной копии (shardmanctl probackup backup) лидер мог переключиться в режим Read-Only. Теперь утилита корректно ожидает готовности узлов.

  • Парольные политики. Введены параметры shardman.extended_password_policies, позволяющие исключать системных пользователей (роботов) из политик блокировки и репликации событий авторизации, а также разрешать им доступ к резервным серверам (Standby). Это предотвращает ситуации, когда блокировка технической учётной записи на одном узле парализует работу кластера.

5. Комплексная безопасность и шифрование

Одно из самых значимых изменений релиза — кардинальный пересмотр подхода к защите сетевого взаимодействия. Ранее для защиты трафика между узлами распределённого кластера администраторам часто приходилось настраивать внешние средства (VPN, stunnel, SSH-туннели), что усложняло архитектуру и эксплуатацию.

Начиная с версии 17.6.1 шифрование доступно для всех интерфейсов

  1. Межшардовое взаимодействие. Весь транспортный трафик между узлами данных теперь может быть зашифрован на уровне СУБД.

  2. Управляющий канал BiHA. Механизм высокой доступности (Built-in High Availability) получил поддержку защищённого режима работы.

  3. Внешние интерфейсы. HTTP-интерфейсы управления и мониторинга также поддерживают SSL.

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

Обновление доступно для пользователей Postgres Pro Shardman. Перед обновлением рекомендуется ознакомиться с полным списком изменений в Release Notes, так как присутствуют изменения в поведении параметров конфигурации (например, shardman.sync_schema теперь доступен только суперпользователям).