Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
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.
Ссылки, связанные с релизом:
Скачать.
Release Notes.
Материалы для прессы и переводы.
Безопасность.
Принципы нумерации версий (Versioning Policy).
@postgresql.
Дайте денег.
Конечно, 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()
, andJSON_OBJECTAGG()
Для демонстрации он генерит данные и потом запросы к ним.
Хочется заодно представить и другие статьи автора: он пишет на самые разные темы. Например: Performance Tips for Postgres FDW - о том, что не надо давать много власти Postgres, обычно лучше держать его в собственных ежовых рукавицах. Или High-compression Metrics Storage with Postgres Hyperloglog (HLL) - опять о власти: что, освоив HLL, вы почувствуете себя всемогущим. Это как с Regexp, - говорит Кристофер. Вот в статье он и обучает новичков.
Major Features: Postgres 16
Брюс Момджан (Bruce Momjian, EDB) выложил слайды, поясняющие:
Логическую репликацию с реплик.
Циклы в логической репликации.
Управление членством в роли (Role membership control).
Индексы и date_trunc().
Запись статистики последних сканирований.
Мониторинг ввода/вывода.
Использование векторных операций процессора.
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.
Автостопом по базам данных - Владимир Комаров (Сбер) - выиграл 1-е место в голосовании участников. Вообще-то он написал книгу Путеводитель по базам данных.
Кстати, о книгах. Книгу Алексея Лесовского (теперь сотрудника Postgres Professional) Мониторинг PostgreSQL мы планируем издать в этом году. Вот что он говорит о своей книге:
Эта книга создана для администраторов баз данных, системных администраторов, специалистов по надежности и тех, кто просто интересуется администрированием PostgreSQL. Книга призвана осветить все тонкости темы мониторинга. В блогах можно найти множество публикаций, но большинство из них детально рассматривает лишь отдельные аспекты.
Эта книга всесторонне охватывает мониторинг PostgreSQL, помогая читателю разобраться в большом разнообразии средств, встроенных в СУБД. Цель практически любого мониторинга — это выявление аномалий, предупреждение аварийных ситуаций и прогнозирование того, как система будет работать в будущем. Используя мониторинг, можно лучше понять, как работает система и дальше с помощью корректировки конфигурации и оптимизации рабочей нагрузки добиться увеличения производительности. Поэтому любой, кто интересуется оптимизацией производительности, обязательно извлечет из этой книги полезную информацию и не только сделает для себя какие-то выводы, но и, возможно, наметит план изменений в администрируемых системах и получит реальный результат.
Чтобы автору Путеводителя по базам данных не было обидно, процитируем и его:
Эта книга - о базах данных. «Но позвольте, - скажет искушенный читатель, - о них написана добрая тысяча книг. Зачем нужна тысяча первая?» Тут уместно будет вспомнить притчу о слепых мудрецах, споривших о том, что такое слон. Мудрец, державший слона за хвост, сказал, что слон похож на веревку. Мудрец, обнимавший слоновью ногу, утверждал, что слон похож на дерево. А мудрец, которому достался бивень, был уверен, что слон похож на копье. Есть множество книг, описывающих слона как веревку, дерево или копье. Есть книги, детально описывающие анатомию слона... то есть, внутреннее устройство баз данных. Есть книги по моделированию данных, по администрированию и настройке конкретных платформ. Но нет книги о базах данных вообще или, если вернуться к аналогии с мудрецами, нет книги, дающей исчерпывающий ответ на вопрос «что же такое слон?» Эта книга нужна, чтобы дать практическим навыкам прочный фундамент в виде понимания базовых принципов и структур. Она предназначена для всех, кто считает себя специалистом в области информационных технологий, прежде всего - для архитекторов информационных систем. С точки зрения программистов, меняющих место работы раз в год, архитекторы - это некие мудрецы в башнях из слоновой кости, изрекающие прописные истины или наоборот, грезящие о несбыточном. Однако если заглянуть в будущее чуть дальше, чем на год, то окажется, что «прописные истины» прописаны далеко не везде, а несбыточное неожиданно сбывается. В этой книге есть место и прописным истинам, и парадоксальным на первый взгляд утверждениям, которые заставят читателя задуматься и, возможно, пересмотреть отношение к некоторым «истинам». Вероятно, книга также изменит ваши представления о несбыточном и «сбыточном».
Также прошли в России:
PG Boot Camp Russia
Прошло 5-го октября.
Мероприятие, направленное на приобретение практических навыков при работе с СУБД PostgreSQL. Программа мероприятия рассчитана как на начинающих специалистов, так и на опытных разработчиков, желающих углубить свои знания ядра и экосистемы PostgreSQL и применить их на практике. Площадка позволит участникам получить актуальную информацию по внедрению СУБД PostgreSQL в ИТ-инфраструктуру организаций и эффективному ее использованию, а также принять участие в практических мастер-классах от ведущих экспертов в своей области.
Стачка 2023
10-я международная IT-конференция "Стачка" прошла 15-16 сентября в Ульяновске. Вот сайт конференции.
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% быстрей, чем у PostgreSQL с индексами HNSW. И быстрей на 363.48%, чем у 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_cirrus 1.0
Автоматизированный инструмент для быстрого создания высокодоступного кластера из 3 нод. Его разработали в недавно появившейся усилиями - Умейра Шахида (Umair Shahid) - компании Stormatics. pg_cirrus умеет балансировать нагрузку, есть автопереключение (Auto Failover).
HOWTO.
Код.
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.
На этом сегодня закончим.