26 сентября PostgreSQL Global Development Group объявила о выходе новой мажорной версии PostgreSQL — самой популярной в мире СУБД с открытым исходным кодом, на базе которой основано большинство российских систем управления базами данных.
PostgreSQL 17 включила большое количество новых фич и улучшений, повышающих производительность, отказоустойчивость и безопасность работы. Среди авторов новых фич — более 30 россиян, разработчиков из команды Postgres Professional. Компания с 2015 года отправляет патчи в открытую PostgreSQL и, по данным исследования EDB, занимает 1 место в России и входит в топ-5 международного рейтинга контрибьюторов, обходя Microsoft, Fujitsu, Apple, Google и других.
Среди ключевых обновлений 17 версии: новая система управления памятью для VACUUM; поддержка стандарта SQL/JSON; улучшения производительности запросов; поддержка инкрементального бэкапа pg_basebackup; улучшения в логической репликации.
Подробнее об изменениях в PostgreSQL 17:
- Возможность создавать инкрементальные копии, сохраняющие только изменения, сделанные относительно другой резервной копии.
- Обновление команды COPY… FROM. Команда научилась игнорировать ошибки, связанные с неправильным форматом значений отдельных столбцов.
- Структура памяти и интерфейс работы с идентификаторами строк на основе сжатого префиксного дерева (radix tree).
- Объединение WAL-записей об очистке и заморозке страницы.
- Для каждого кеша SLRU появился соответствующий параметр конфигурации (с суффиксом _buffers в названии), что позволяет тонко настраивать систему под специфическую нагрузку.
- Параметр sslnegotiation для клиентских приложений, работающих через libpq. Благодаря параметру клиент и сервер могут обойтись без предварительного согласования использования TLS.
- Поддержка стандарта SQL/JSON.
- Встроенный провайдер локалей для C.UTF8.
- Новая привилегия MAINTAIN и предопределенная роль pg_maintain.
- Новые параметры для команды EXPLAIN: SERIALIZE, MEMORY.
- Возможность создавать триггер события на подключение к базе данных.
- Новое представление сборщика статистики pg_stat_checkpointer.
- Новые возможности появились в команде MERGE:
- В качестве целевого отношения теперь можно использовать обновляемое представление.
- Условие WHEN NOT MATCHED BY SOURCE для обработки строк целевого отношения, которых нет в источнике.
- Поддержка предложения RETURNING. Функция merge_action поможет понять, какие строки были добавлены, изменены.
- Также внесены изменения в работу логической репликации:
- Синхронизация логических слотов репликации между мастером и репликой.
- Перенос слотов репликации при обновлении сервера публикации.
- Быстрое создание логической реплики из физической.
Новые версии Postgres Pro на базе новейшей 17 версии компания выпустит уже в этом году.
«Мы постоянно работаем над тем, чтобы сокращать разрыв между выходами релизов PostgreSQL и Postgres Pro. Раньше мы проводили большое сравнение слияний изменений раз в год, когда выходила новая версия Open Source. Это был довольно сложный процесс, поскольку изменений было много, а часть из них в некоторых случаях даже могла противоречить друг другу. Поэтому несколько лет назад команда перешла к практике непрерывного слияния изменений. Делаем это постоянно, практически ежедневно, как только изменения принимаются в открытой версии. Благодаря такому подходу мы свели техническое отставание к минимуму: выпускаем обновленную версию Postgres Pro Standard через считанные дни после выхода PostgreSQL, а Postgres Pro Enterprise — спустя несколько недель», — комментирует сооснователь и заместитель генерального директора Postgres Professional Иван Панченко.