Разработчики представили крупное обновление СУБД (системы управления базами данных) PostgreSQL. В свежей 14-й версии упростили доступ к информации в JSON-формате и добавили поддержку несмежных диапазонов, улучшили производительность и работу с распределенными данными.
Улучшения для JSON
JSON – популярный структурированный текстовый формат обмена данными, который был разработан Дугласом Крокфордом для использования в JavaScript-приложениях. Разработчики оценили простоту и понятность описания информации с помощью JSON и стали задействовать его в самых разных приложениях – от веб-сервисов до высоконагруженных корпоративных систем.
В PostgreSQL поддержку JSON добавили еще в версии 9.2. Но в свежем релизе с форматом можно работать через подписки. Запросы формата:
SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release'];
используют примерно тот же синтаксис, который обычно применяется для извлечения информации из JSON. А платформу индексирования в PostgreSQL 14 можно расширить на другие вложенные структуры данных.
Поддержка несмежных диапазонов
Диапазоны как особый тип данных также появились в PostgreSQL 9.2. В 14 версии добавили мультидиапазоны – упорядоченные списки диапазонов, которые не пересекаются.
Мультидиапазоны помогут разработчикам создавать более простые запросы для работы со сложными последовательностями данных. С числами, датами и временем уже можно работать как с мультидиапазонами. Другие типы данных также можно расширить для использования такого формата.
Повышение производительности
По словам разработчиков, новая версия PostgreSQL работает гораздо продуктивнее предшественниц. В отдельных тестах удалось добиться двукратного ускорения обработки данных. Кроме того, оптимизация управления данными в бинарных деревьях привела к уменьшению раздувания индексов в таблицах, где они часто обновляются.
Свежий релиз поддерживает конвейерную обработку запросов к базе данных. Это потенциально улучшит производительность приложений при соединениях с высокой задержкой и рабочих нагрузок с множеством мелких операций записи (INSERT / UPDATE / DELETE). Так как конвейерная обработка запросов – по сути, клиентская функция, ее можно использовать с любой современной базой данных PostgreSQL с клиентом версии 14 или драйвером, созданным с версией 14 интерфейса libpq.
Распределенные базы данных также должны выиграть от перехода на PostgreSQL 14. В новой версии при использовании логической репликации может передавать подписчикам выполняющиеся транзакции, и если они достаточно крупные, вы получите выигрыш в скорости. Наконец, появился вакуумный «аварийный режим»: он предотвратит зацикливание идентификатора транзакции.
Параллелизм запросов можно использовать в сторонних оболочках (wrappers). Пока эта возможность реализована в postgres_fdw, которая взаимодействует с другими базами данных PostgreSQL, но в будущем войдет в число основных компонентов системы. К слову, с postgres_fdw теперь можно проводить массовую вставку данных в сторонние таблицы и импортировать целые разделы с помощью директивы IMPORT FOREIGN SCHEMA.
В PostgreSQL 14 появилась расширенная статистика для выражений. А сохраненные процедуры, которые позволяют управлять транзакциями в блоке кода, теперь умеют возвращать данные через OUT-параметры.