HeadlinesBriefing favicon HeadlinesBriefing.com

PostgreSQL 19: новые функции и графы свойств

Hacker News •
×

PostgreSQL 19 в настоящее время находится в бета-версии, с ожидаемой общей доступностью в сентябре или октябре 2026 года. Эта статья служит практическим дополнением к официальным примечаниям к выпуску, превращая выбранные записи в исполняемые примеры, чтобы пользователи могли увидеть, как на самом деле работают новые функции. Эти функции основаны на официальных примечаниях к выпуску и исходном коде PostgreSQL под лицензией PostgreSQL. Перед изучением новых функций важно отметить, что это не исчерпывающий список; для полноты следует обратиться к официальным примечаниям к выпуску. Все примеры были выполнены на PostgreSQL 19 бета 3 (выпущенном 2026-08-13), и вывод отражает то, что этот сервер действительно напечатал.

Запросы к графам свойств являются главной функцией этого выпуска. PostgreSQL 19 реализует SQL/PGQ, часть графа свойств из SQL:2023. Пользователи могут объявить граф свойств над существующими таблицами и запрашивать его с помощью сопоставления шаблонов вместо ручного написания соединений. Две обычные таблицы можно настроить как вершины и ребра, что позволяет выполнять сопоставление шаблонов с помощью GRAPH_TABLE, где направленные ребра сопоставляются с использованием синтаксиса -[...]->. Преимущество заключается в возможности многократных переходов; связывание двух ребер позволяет получить друзей друзей без самосоединения, а пустой () означает «некая вершина, имя которой мне не важно». Одним из важных ограничений является отсутствие поддержки путей переменной длины; квантификаторы вида -[IS follows]->{1,3} разбираются, но отклоняются, требуя явного указания каждого перехода. Запрос GRAPH_TABLE переписывается в обычный реляционный запрос, что означает, что планировщик, статистика и выбор индексов, уже известные пользователю, по-прежнему применяются.

Временные обновления и удаления вводят новую конструкцию FOR PORTION OF в операторы UPDATE и DELETE. Эта конструкция позволяет указывать допустимый временной период для операции, обеспечивая более точное управление данными в битемпоральных таблицах. Эта функция интегрируется с системно-версионированными таблицами, чтобы гарантировать, что обновления и удаления затрагивают только строки в указанном временном диапазоне, что повышает целостность данных для приложений, требующих исторического отслеживания.

Выпуск также улучшает работу с JSON и запросами. Новые операторы и функции улучшают обработку типов данных JSON, позволяя выполнять более эффективный запрос и манипулирование. Эти улучшения уменьшают необходимость в сложных подзапросах или внешней обработке при работе с полуструктурированными данными, обеспечивая лучшую производительность и более простой синтаксис для распространенных операций с JSON.

Ключевые сущности: Компании: PostgreSQL | Люди: Peter Eisentraut, Ashutosh Bapat