Компания 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 теперь доступен только суперпользователям).