Postgres Pro Enterprise 16: самое масштабное обновление СУБД для повышенной надежности, безопасности и масштабируемости
Компания Postgres Professional объявила о выходе Postgres Pro Enterprise 16.1.1 — главного ежегодного релиза флагманской редакции СУБД Postgres Pro для высоконагруженных систем.
Релиз включает все возможности предыдущей мажорной версии СУБД Postgres Pro Enterprise 15 и выпущенной осенью PostgreSQL 16, а также большой ряд новых разработок. Все они призваны значительно повысить безопасность, масштабируемость и надежность СУБД.
Среди ключевых функций СУБД Postgres Pro Enterprise 16.1.1:
BiHA
Впервые в широкое пользование вышла стабильная версия BiHA (Built-in High Availability) — встроенной системы управления отказоустойчивым кластером Postgres Pro Enterprise. В отличие от традиционных систем обеспечения высокой доступности PostgreSQL, BiHA интегрирована непосредственно в ядро Postgres Pro Enterprise, не требует добавления в инфраструктуру дополнительных узлов, проста в настройке и соответствует всем современным требованиям информационной безопасности.
Управляя физической репликацией Postgres Pro, BiHA автоматически настраивает все необходимые параметры, что значительно упрощает работу администратора. Специальные процессы BiHA осуществляют непрерывный мониторинг состояния узлов кластера, а все участники кластера взаимодействуют по управляющему каналу, что позволяет оперативно принимать решения об исключении неисправного узла или запуске операции выбора нового лидера.
Администратор без доступа к данным
Роль Администратор без доступа к данным создана по запросу клиентов, которым нужно обеспечивать повышенный уровень безопасности, но без настройки мандатного доступа. Она позволит защититься от злоумышленников, имеющих права Администратора БД или даже Администратора СУБД, не давая им ни модифицировать, ни читать конфиденциальные данные. Функция была реализована с помощью модели отказа от использования роли суперпользователя в регулярном обслуживании сервера, с распределением его полномочий между другими ролями. По сравнению с моделью с ограничением прав суперпользователя, наше решение гораздо надёжнее перекрывает все возможные сценарии несанкционированного доступа к конфиденциальной информации.
Приоритизация ресурсов
Начиная с версии Enterprise 16.1.1 у администраторов появляется новый инструмент повышения эффективности использования СУБД с большим количеством пользователей — возможность создавать планы управления ресурсами и переключаться между ними, настраивая для сеансов приоритеты использования процессора и операций ввода/вывода. Пользователи объединяются в статические или динамические группы и приоритеты присваиваются группам. Группы с приоритетами объединяются в планы приоритизации использования ресурсов. При избытке ресурсов все пользователи получают максимальный объем ресурсов.
Системные пакеты-аналоги Oracle
В классическом Postgres не существует понятия «пакетов» — используемых в Oracle наборов функций и процедур. Чтобы упростить миграцию кода с языка PL/SQL, в Postgres Pro Enterprise 15 была добавлена функциональность, работающая по аналогии с пакетами Oracle. С технической точки зрения поддержка пакетов представляет собой расширение синтаксиса языка PL/pgSQL и небольшие дополнения в ядре СУБД, благодаря которым реализуется функциональный аналог пакетов Oracle и вводится ряд дополнительных команд для работы с ними. Пакеты не только группируют функции, процедуры, переменные, но и имеют область инициализации, глобальные переменные, типы, курсоры, поддерживают синтаксис вызова процедур/функций пакета из кода PL/pgSQL.
В 16 версию Enterprise по запросу клиентов добавлены следующие системные пакеты:
— UTL_SMTP — для автоматической рассылки электронных писем из хранимых процедур;
— UTL_MAIL — высокоуровневая обертка над реализацией SMTP-протокола;
— UTL_HTTP — для интеграции хранимых процедур с внешними источниками;
— DBMS_APPLICATION_INFO — для инструментирования состояния сессии и статуса выполнения длительных операций (портирован также и в 15 версию).
Все вышеперечисленное позволяет при миграции не тратить время и ресурсы на создание соответствующей функциональности «с нуля», а воспользоваться готовыми системными пакетами из СУБД Postgres Pro Enterprise.
Адаптивный оптимизатор запросов AQO 2.0
Адаптивный оптимизатор запросов AQO 2.0 позволяет планировщику Postgres Pro выбирать наиболее эффективный план, создаваемый на основе статистики планирования и выполнения запросов. Идея адаптивной оптимизации была предложена для решения одной из основных проблем реляционных СУБД, которые используют стоимостную модель для планирования и выполнения SQL-запроса: ошибки вычисления стоимостей, возникающие вследствие образования зависимостей в данных (корреляций и сдвигов) или устаревшей статистики, приводят к выбору ошибочных планов выполнения запросов и значительным задержкам при выполнении таких вычислений, без возможности как-то повлиять на их исправление. Адаптивный оптимизатор решает указанную проблему тем, что в автоматическом режиме во время выполнения запроса собирает статистики планирования и выполнения и, используя методы машинного обучения, на этапе последующего выполнения заменяет ошибочную оценку стоимости операции на корректную, что позволяет планировщику Postgres Pro выбрать более эффективный план.
AQO версии 2.0 работает в двух режимах: Basic и Advanced. При активации режима Basic оптимизатор начинает работать без необходимости внесения дополнительных настроек. При этом используется новый метод сбора статистик по операциям без изоляции по запросам, что позволяет оптимизировать даже те запросы, которые не встречались во время обучения. Режим Advanced позволяет осуществить точечную настройку, например, сбор статистик по операциям в рамках одного запроса.
Обновлённое расширение sr_plan (расшифровывается как save and reuse plan — «сохрани и переиспользуй план») с функцией автозахвата
Раcширение sr_plan в комбинации с AQO версии 2.0 реализуют первую в мире Postgres интеллектуальную систему исправления и стабилизации проблемных планов запросов «на лету». Включенный в режиме автозахвата sr_plan позволяет «поймать» скорректированные с помощью AQO 2.0 планы и применить их для использования с любыми параметрами проблемных запросов с мгновенным эффектом и экономией на времени планирования. Но также sr_plan эффективен и как самостоятельный инструмент.
Среди прочих усовершенствований:
- Поддержка внешних файлов в виде отдельного типа BFile. Реализует ссылку на внешний файл размером до 4 Гб и методы работы с ним. Наличие технологии BFile в СУБД Postgres Pro позволяет сократить трудозатраты на миграцию с Oracle. Использование этого типа данных также будет возможно через системный пакет DBMS_LOB, выпуск которого планируется в первой половине 2024 года. Postgres Pro BFile можно использовать не только при миграции с СУБД Oracle, но и в новых проектах. Эта функциональность востребована у многих клиентов. Вынос файлов из БД позволяет уменьшить ее размер (обезжирить), упростить администрирование БД и ускорить работу с LOB.
- Приложение pg_probackup обновлено до версии 2.7.0 Enterprise, в которой улучшена производительность и добавлены новые возможности, в том числе:
- слияние инкрементальных резервных копий сделано совместимым с cистемой объектного хранения S3 и выполняется теперь без создания временных локальных файлов;
- оптимизирована работа с памятью при работе с большими базами данных: теперь для восстановления БД из нескольких тысяч таблиц и 100 инкрементальных копий требуется почти в три раза меньше памяти.
Помимо вышеупомянутых новшеств, Postgres Pro Enterprise 16.1.1 включает все новые возможности СУБД Postgres Pro Standard 16, в том числе новые предопределённые роли:
- pg_create_tablespace, позволяющая выполнять команду CREATE TABLESPACE без прав суперпользователя.
- pg_manage_profiles, позволяющая выполнять команды CREATE PROFILE, ALTER PROFILE и DROP PROFILE без прав суперпользователя.
Эта функциональность добавлена в рамках выполнения требований безопасности ФСТЭК по защите от действий суперпользователя.
Также релиз наследует реализованную в PostgreSQL 16 поддержку двунаправленной логической репликации таблиц, которая позволяет синхронизировать изменения в двух таблицах на разных серверах. Добавленные в PostgreSQL 16 возможности репликации позволяют создавать конфигурации с несколькими активными серверами (режим «active-active»), на которых одновременно можно выполнять операции INSERT, UPDATE, DELETE.
Полный список обновлений можно увидеть в замечаниях к выпуску.