Postgresso №58(9)

a7195184593506e7eb35314040d4ec67.jpg

PostgreSQL 16

Наконец, официально вышел релиз PostgreSQL 16. Мы регулярно писали о новом в бетах и релиз-кандидатах, поэтому подробно говорить об официальном нет, кажется, особой необходимости: с тех пор ничего принципиального не ушло и, тем более, не пришло.

На сайте выделяют главные преимущества релиза, вот некоторые:

  • улучшение производительности: оптимизатор научился распараллеливать FULL и RIGHT JOIN, ускорились оконные функции, появилась балансировка нагрузки;

  • расширение возможностей логической репликации: репликация с физической реплики, распараллеливание, новая роль pg_create_subscription;

  • для разработчиков: новые (вернувшиеся «старые») возможности работы с SQL/JSON, команда \bind в psql для подготовленных запросов, улучшения в правилах сортировки.

  • мониторинг: pg_stat_io, новое поле в pg_stat_all_tables *);

  • доступ и безопасность: появилась возможность задавать дополнительные файлы в include в файлах pg_hba.conf и pg_ident.conf. Для postgresql.conf она уже была давно.

*) Да, так написано в release notes. Если более подробно, то можно обратиться, опять же, к статьям-обзорам Павла Лузанова. В PostgreSQL 16: Часть 3 или Коммитфест 2022–11 говорится об Отслеживании времени последнего сканирования индексов и таблиц (commit:  c0374718), это, очевидно, и имеется в виду. Но было и другое поле: Счетчик новых версий строк, перенесенных на другую страницу при выполнении UPDATE (commit:  ae4fdde1) в Части 5.

Как вы, может быть, заметили, ссылки ведут на русскоязычную документацию к PostgreSQL, которая появилась на сайте Postgres Professional.

Ссылки, связанные с релизом:

Конечно, 16-я версия появилась и появится на разных облачных платформах. Вот на Amazon:

PostgreSQL 16.0 is now available in Amazon RDS Database Preview Environment

Мы регулярно ссылаемся на статьи-обзоры коммитфестов Павла Лузанова (глава отдела образования Postgres Professional), но на этот раз вот его видео по теме:

PostgreSQL 16: обзор релиза с Павлом Лузановым

Дальше подборка некоторых статей по новшествам этой версии.

Active Active in Postgres 16

Брайан Пейс (Brian Pace, Crunchy Data) пишет о новшестве в логической репликации, которое появилось в 16-й версии. Он утверждает, что, несмотря на некоторые усовершенствования с тех пор, как логическая репликация появилась в 10-й версии, применялась она в основном для миграции данных и задач однонаправленной передачи изменений данных (unidirectional change data capture workflows). И только в 16-й появилась возможность для нормальной работы в режиме active-active, то есть записи на любой экземпляр (instance). При этом на каждом должен быть полный актуальный набор данных.

Брайан говорит, что двунаправленная логическая репликация это сложно. Нередко это неэффективно. Он объясняет, предлагая прочувствовать это и читателю, за счёт каких улучшений ситуация изменилась.

Можно, однако, обратиться к первоисточникам.

PostgreSQL and Databases in general: Evolution of Logical Replication

Амит Капила (Amit Kapila, Fujitsu), один из основных коммитеров логической репликации, рассказывает об эволюции логической репликации, начиная с 9.4.

JSON Updates in Postgres 16

рассказывает о 

В статье Кристофера Уинслетв (Christopher Winslett, Crunchy Data) речь вот о чём:

  • В 16-й версии появилась проверкаvalue IS JSON OBJECT;

  • функцииJSON_ARRAY(),  JSON_ARRAYAGG(),  JSON_OBJECT(), and JSON_OBJECTAGG()

Для демонстрации он генерит данные и потом запросы к ним.

Хочется заодно представить и другие статьи автора: он пишет на самые разные темы. Например: Performance Tips for Postgres FDW — о том, что не надо давать много власти Postgres, обычно лучше держать его в собственных ежовых рукавицах. Или High-compression Metrics Storage with Postgres Hyperloglog (HLL) — опять о власти: что, освоив HLL, вы почувствуете себя всемогущим. Это как с Regexp, — говорит Кристофер. Вот в статье он и обучает новичков.

Major Features: Postgres 16

Брюс Момджан (Bruce Momjian, EDB) выложил слайды, поясняющие:

  1. Логическую репликацию с реплик.

  2. Циклы в логической репликации.

  3. Управление членством в роли (Role membership control).

  4. Индексы и date_trunc ().

  5. Запись статистики последних сканирований.

  6. Мониторинг ввода/вывода.

  7. Использование векторных операций процессора.

  8. libpq и балансировку нагрузки, аутентификацию.

Grouping digits in SQL

Питер Айзентраут (Peter Eisentraut) пишет о чёрточках в длинных числах (как в 1_000_000). Но дело тут не в чёрточках. Тут целая история, начавшаяся в 2020-м. Питер увидел, что эти чёрточки протащили в своё сообщество разработчики Go. И он решил, что пора это внедрить и в SQL. В результате это уже присутствует в стандарте SQL и работает PostgreSQL.

psql \watch improvements

Лука Феррари (Luca Ferrari) — адвокат открытого кода и человеческое существо, как известно, пишет об интересных новых возможностях команды \watch.

pg_stat_io and PostgreSQL 16 performance

Ханс-Юрген Шёниг (Hans-Jürgen Schönig, Cybertec) рассказывает: что входит в новое представление pg_stat_io, какой толк от каждого из 18 его полей, что можно выяснить, спросив у него с backend_type = 'autovacuum worker' и backend_type = 'client backend'.

Postgres 16: The exciting and the unnoticed

Этот автор у нас ещё не появлялся. Самай Шарма (Samay Sharma, технический директор Tembo, которая у нас тоже не появлялась). Он следует списку в release notes, но даёт и ссылку на статью:

PostgreSQL 16 brings Load Balancing Support in libpq (psql) — о впечатлившей его балансировке нагрузки. И отдаёт должное не только автору — Йелте Феннма (Jelte Fennema, Citus, MS), но и ревьюерам Александру Алексееву (Aleksander Alekseev, Timescale), Майклу Бэнку (Michael Banck, NeApp), и Андрею Бородину (Andrey Borodin, Яндекс). Есть и ссылка на дискуссию по теме.

Конференции

PGConf.СПб 2023

Конференция собрала более 350 человек. Я на конференции не был, поэтому исхожу из новости на сайте Postgres Professonal и программы конференции.

Postgres Professional представила три стенда с собственными разработками: BiHA (Built-In High Availability), которая обеспечивает встроенную отказоустойчивость Postgres Pro Enterprise; Shardman — распределённую реляционную СУБД, и, впервые — Replan, новое решение для перепланирования запросов. Отдельный стенд представила группа компаний «ФОРС» (партнёр конференции), предлагающая полный комплекс услуг по поддержке PostgreSQL.

Были и доклады на эту тему, плюс о ещё некоторых недавних разработках Postgres Professional:

Новый адаптивный оптимизатор запросов — AQO 2.0 — доклад Бориса Пищика и Александра Котина про технику адаптивной оптимизации запросов, ключевые возможности новой версии расширения AQO и стабилизацию планов при помощи SR_PLAN. + 10-минутное демо.

Обзор планируемых новых возможностей СУБД Postgres Pro — Марк Ривкин рассказал: в версии 15 более 40 важных доработок, которых нет в PostgreSQL. А сейчас ведется разработка еще более 20 механизмов, как в самой СУБД, так и в дополнительных продуктах — BiHA, DBaaS, pg_probackup, и т. д.

Докладчики из других компаний рассказывали, например, о Миграции крупных баз данных из Oracle в PostgreSQL при помощи oracle_fdw — Владимир Хаймин, ПАО ВТБ. Он сказал, что многие отмечают крайне низкую производительность Ora2Pg, особенно если речь идет о базах размером от 1 Терабайта и выше. Можно значительно ускорить миграцию БД, используя oracle_fdw отдельно, либо в сочетании с Ora2Pg.

ML in SQL — Александр Календарёв, DataGile. Объяснил, в чем заключается машинное обучение, показал примеры использования машинного обучения у ведущих игроков рынка, продемонстрировал прототип, как это может выноядеть в PostgreSQL.

PGConf NYC 2023

Прошла 3–5 октября. Организатор — United States PostgreSQL Association (PgUS). Программа довольно разнообразная. Попались на глаза такие доклады:

  • Highly Complex Database Migration From DB2 To Postgres On AWS, Нимай Аграуал (Nemi Agrawal) — не сложная, а очень сложная миграция!

  • A Journey To 7000 Instances, Энтони Наусин (Anthony Nowocien, Société Générale) — в Сосьете Женераль был массовый переход на Postgres, что вылилось даже в свой Postgres-as-a-Service.

  • Use Cases For Multi-Master Distributed Postgres, Филлип Меррик (Phillip Merrick, pgEdge) — асинхронная логическая репликация в многорегиональной и даже многооблачной среде, демо разворачивания распределённой pgEdge.

  • Quantum Safe Postgres, Тим Стюард (Tim Steward, Fujitsu) — квантовое шифрование и Postgres. Кстати, на эту тему сейчас вообще много пишут с разных углов зрения — больше о квантовой дешифровке, чем о шифровании.

Интересное дополнение: на конференции работает программа поддержки разнообразия:

PostgresUS Diversity Scholarship to attend PGConf NYC

Программа непосредственно адресуется к женщинам, но можно подавать заявки, если вы принадлежите к мало представленным и/или маргинализированным группам в ИТ, в том числе в сообществах открытого кода. Приветствуются относящие себя к LGBT, женщины, цветные, с ограниченными возможностями, ветераны и/или студенты.

Selecting Conferences

Брюс Момджан выписал критерии, по которым он решает участвовать/не участвовать:

  • Если для работодателя это представляет стратегический интерес.

  • Плотность людей из сообщества, которым важно моё присутствие, велика.

  • Если мероприятие не очень известное, и моё участие поможет его популярности.

  • Непостгресовое мероприятие, где нужны заметные Postgres-спикеры.

  • Близко к дому или к месту проведения другого мероприятия.

Заодно можно почитать такую любопытную заметку Брюса: Leadership Abuse. И ещё: Брюс обращает внимание на то, что Postgres теперь Oracle Supports Postgres — доступен в облаках Oracle.

Российский рынок СУБД

Куда движется российский рынок СУБД? Тренды и прогнозы

На ComNews Марк Ривкин (руководитель отдела технического консалтинга Postgres Professional) делает аккуратные прогнозы: здесь нет продакт плейсмента, деталей тоже нет — такой жанр. Из 10 пунктов Марк делает акцент на универсальности:

В сложившихся условиях гибридных нагрузок пользователи будут вынуждены выбирать между множеством нишевых решений и универсальными конвергентными СУБД. Руководствуясь соображениями стоимости, безопасности и наличием экспертов на рынке, крупному бизнесу, вероятнее всего, будет выгоднее второе. Нишевые решения будут применяться только там, где это максимально оправдано.

Компания Postgres Professional подтвердила совместимость Кибер Бэкапа 16 и СУБД Postgres Pro

На сайте Киберпротекта сообщают, что получили сертификаты, подтверждающие технологическую совместимость СРК Кибер Бэкап 16 с Postgres Pro Standard и Postgres Pro Enterprise версий 13, 14 и 15 в рамках «Программы подтверждения совместимости Postgres Professional». В 16-й версии СРК добавлена поддержка планов резервного копирования Postgres Pro, включая настройку их параметров.

Векторы

How We Made PostgreSQL a Better Vector Database

Мы — это Timescale. Речь о собственном Timescale Vector, который, впрочем, на базе всё того же pgvector. К нему добавили алгоритм DiskANN. Очень хотелось на неспециализированной СУБД сделать поиск быстрей, чем на векторных СУБД.

Целый коллектив авторов (Автар (sic!) Севратан — Avthar Sewrathan, Матвей Арье — Matvey Arye, Семюэл Джикои — Samuel Gichohi, Махидхар Пи Ви — Maheedhar PV) утверждает, что получилось: их решение на 243% быстрей, чем у чисто векторной Weaviate. И на 39.39% и 363.48% быстрей, чем у PostgreSQL с индексами HNSW у pgvector и pg_embedding (Neon), соответственно. Тестировали на датасете с 1 млн эмбеддингов OpenAI.

Статья большая, с подробностями, много схем, с деталями реализации.

Но, оказывается, в мире есть ещё и Lantern:

Open-source vector similarity search for Postgres

Просят любить и жаловать.

Новости OrioleDB

OrioleDB beta

Александр Коротков объявил об окончании альфа-тестирования, которое длилось более года. За это время выловили и вылечили более 200 багов. Теперь — бета, OrioleDB в фазе финального тестирования. И предложил сам самые интересные типы нагрузок:  высокий темп транзакций, большой объём обновлений,  большой объём операций in-memory, узкие места при блокировках и другие экстремальные случаи.

Новое по сравнению с альфой:

  • поддержка параллельного сканирования и параллельного построения индексов,

  • многочисленные починки параллелизации на уровне строк и триггеров,

  • поправки в undo log, системных деревьях и в механизме транзакций.

Small Datum: Trying out OrioleDB

И пробуют. Марк Каллаган (Mark Callaghan), который представился как тестировщик (по бенчмаркам) и специалист по MySQL, установил себе бету OriolDB. Видимо, напишет ещё, опубликует графики. Он параллельно тестирует и классический (ванильный) Postgres. Вот его тесты производительности версий PostgreSQL 11–16:

Postgres versions 11, 12, 13, 14, 15, and 16 vs sysbench with a medium server

10 диаграмм производительности. Как производились измерения, описано здесь.

Некоторые релизы

pg_cirrus1.0

Автоматизированный инструмент для быстрого создания высокодоступного кластера из 3 нод. Его разработали в недавно появившейся усилиями — Умейра Шахида (Umair Shahid) — компании Stormatics. pg_cirrus умеет балансировать нагрузку, есть автопереключение (Auto Failover).

check_pgactivity 2.7

check_pgactivity — это плагин Nagios. В версии есть некоторые изменения.

PostgreSQL: pg_qualstats 2.1.0

На гитхабе пишут так: PoWA: pg_qualstats: A PostgreSQL extension for collecting statistics about predicates, helping find what indices are missing. PoWA — известная команда, много людей пользуются PoWA — PostgreSQL Workload Analyzer) и другими утилитами этого проекта, отвечает за который Dalibo:

  • PoWA-archivist — расширение, собирает статистику;

  • PoWA-collector — демон, собирает метрики производительности с удалённых инстансов PostgreSQL, складывает на выделенный для этого сервер;

  • PoWA-web — GUI проекта;

  • Stat extensions — источники данных, например довольно популярный pg_stat_kcache.

pg_qualstats попадает в последний пункт. Это расширение собирает статистику по предикатам в предложенияхWHEREи JOIN. Очень полезное. В новой версии есть изменения, читайте. И скачивайте.

pg_builder 2.3.0, pg_wrapper 2.3.0 и pg_gateway 0.1.0

Новое в этих версиях — поддержка Postgres 16. В том числе, например, SQL/JSON. Этим семейством программ занимается Печальный Дух — Андрей Борзов.

pgtt v3.0

Анонс приписан к острову Мадагаскару, но за ним хорошо знакомый и сверхпродуктивный Жиль Дароль (Gilles Darold). pgtt — это расширение для воспроизведения в Postgres оракловых Global Temporary Tables (напомним, что Жиль — автор Ora2Pg). Загрузить свежую версию можно отсюда, документация здесь.

Кстати, вышла Ora2Pg 24.1.

E-Maj 4.3.0.

Это расширение для тонкой настройки логирования и путешествий во времени. Новая версия поддерживает Postgres 11–16.

dbMigration .NET 16.4

Инструмент для лёгкой и интуитивной миграции и синхронизации с нескольких баз данных. Кроме, естественно, поддержки Postgres 16, в версии несколько новых возможностей.

pg_tle 1.1.1

TLE расшифровывается как Trusted Language Extensions. Это проект с открытым кодом, который поддерживается AWS. pg_tle помогает разработчикам сочинять хранимые процедуры на разных доверенных языках, то есть так, что они не имеют доступа к файловой системе, а работают через SQL API. Примеры на SQL, PL/pgSQL, JavaScript, Perl.

На этом сегодня закончим.

© Habrahabr.ru