Postgresso #10 (59)

939b18ade27025badb6439a9691b5fcb.jpg

PostgreSQL 16.1

-, а также PostgreSQL 15.5, 14.10, 13.13, 12.17 и 11.22 (эта версия последняя, которая будет поддерживаться в линейке 11). Обновление закрывает 3 проблемы безопасности:

  • CVE-2023–5868: показ содержимого памяти в вызовах функций с агрегацией (memory disclosure in aggregate function calls) — может произойти, когда в качестве аргумента передаётся тип unknown;

  • CVE-2023–5869: переписывание буфера от его целочисленного переполнения при модификации массивов (buffer overrun from integer overflow in array modification) — недостаточные проверки переполнения позволяют аутентифицированным пользователям и читать в памяти, и записывать в неё, чтобы исполнить вредоносный код;

  • CVE-2023–5870: роль pg_sygnal_backend может рассылать сигналы некоторым процессам суперпользователей (role pg_cancel_backend can signal certain superuser processes) -, а по документации не должна; роль может, например, посылать сигналы процессу, запускающему логическую репликацию.

Кроме того были ликвидированы баги — 55 штук.

PostgreSQL 17: Часть 2 или Коммитфест 2023–09

Если новости о 16-й версии кому-то уже не вбрасывают адреналин в кровь, то вот очередная статья-обзор Павла Лузанова, небольшое путешествие в будущее (аоб июльском коммитфесте в предыдущей статье этой серии:  2023–07). Павел рассматривает 18 пунктов. Например:

Как всегда много примеров. Есть перевод на английский. А теперь перейдём конференциям, по ним накопилась информация.

Конференции, митапы и круглые столы

HighLoad++ 2023

Пройдёт 27–28 ноября в Сколково. Докладов, связанных с Postgres, не так много, но интересные:

Мифы и реалии архитектуры мультимастера в реляционной СУБД PostgreSQL — Михаил Жилин, Павел Конотопов, Postgres Professional. Там будет не только про multimaster Postgres Pro, но и про различные подходы и технологии, включая EDB Postgres, pgEdge и Bucardo.

Будет и такой вот доклад:

Compute/Storage separation в Greenplum — Андрей Бородин, Yandex Cloud. Речь о Yezzey — открытом расширении GreenplumDB, которое позволяет перенести таблицу в S3, но при этом сохранить нативный формат данных. При таком подходе производительность многих запросов оказывается сходной с производительностью запросов к таблицам на локальных SSD-дисках. Эта технология — очередной шаг в направлении облачной аналитической СУБД для Greenplum, при этом весь код доступен в open source.

Новая тема и новая aaS:

MaaS — мониторинг как сервис — Валентин Лебедев, Анна Журбенко, Газпромбанк.

Будет доклад на совсем неожиданную тему:

Переводчик с языка, на котором нельзя говорить и писать — Александр Капитанов, SberDevices. Тут бы не портить интригу, но Postgresso не тот жанр. Поэтому:

Узнайте, почему русский жестовый язык (РЖЯ) — не просто жесты, а мощный инструмент передачи абстрактных понятий.

На конференции будет выставка, а на ней стенд BiHA — интегрированная в ядро Postgres Pro Enterprise отказоустойчивая технология с минимальным участием администратора. На PGConf.Russia стенд BiHA очень был популярен, посмотрим, как будет здесь; будет представлен и Postgres Pro Shardman — распределенная реляционная СУБД с горизонтальным масштабированием.

Что касается BiHA, то на эту тему был особый митап 31 октября:

PGMeetup: Отказоустойчивый кластер BiHA

Состоялась демонстрация, старший технический консультант Postgres Professional Андрей Забелин рассказал о решении и отвечал на вопросы. Запись доступна на сайте PGMeetup.

PGConf.СПб 2023

Опубликовали записи выступлений на этой конференции. Она состоялась 25 сентября. Видео доступны участникам конференции в личном кабинете.

Среди тем докладов: особенности PostgreSQL, миграция, резервное копирование данных, отказоустойчивость, машинное обучение, b-tree индексы, фенсинг, харденинг, перепланирование запросов, таблицы, учетные записи, фаззинг-исследование, обзор решений AQO 2.0, PPEM, pgCodeKeeper, ВТБ-Дебезиум. Фотоотчет конференции.

PostGIS Day 2023

Онлайновая бесплатная однодневная конференция. Пройдёт 16 ноября. Она обычно проходит на следующий день после GIS Day. Мир PostGIS особый, это не просто подмножество постгресового мира. И незнакомых фамилий много. Но есть и знакомые:

Enabling Mobility Data in Multiple Computing Environments — доклад Эстебана Зимани (Esteban Zimanyi,  Université libre de Bruxelles). Я помню его по докладу на PgConf.Russia 2019: MobilityDB: расширение PostgreSQL для управления мобильными данными — там есть кнопки PDF и видео.

Ну и, конечно, Пол Рэмзи:

PostGIS Performance Tips — Paul Ramsey, Crunchy Data

Расскажет о самой распространённой проблеме PostGIS — нерегулярности (irregularity) данных и о способов борьбы с этой проблемой. В том числе и не из гео-мира. Если вы можете сделать предположения о хотя бы каких-то закономерностях параметров запросов, это может помочь очень сильно.

Заодно вот ссылка на статью Пола: Random Geometry Generation with PostGIS.

Риджина Оби появлялось в наших обзорах. Она собирается удивить вот чем:

PostGIS Surprise Extensions — Regina Obe (Paragon Corporation).

Коллективный автор Autonomy Group / Ford Motor представит доклад:

Case Studies in Extending PostGIS Capabilities, где будет, как ни странно, и про пазлы, и про гиперграфы, а также про гиперболоиды и эллипсоиды. Работать с такими объектами помогут расширения, о которых и расскажут.

Конференцию широчайшим образом поддерживает Crunchy Data, они и оповещают мир об этом интересном событии.

PGConf.EU 2023

13-я европейская конференция пройдёт 12–15 декабря в Праге. Опубликовано расписание. Открывать будет Саймон Риггс (Simon Riggs, EDB) докладом The Next 20 Years of PostgreSQL. Билеты можно приобрести на сайте конференции. Можно купить билеты и на обучающие сессии.

Программа интересная, много знакомых имён, интригующих названий докладов. Два выступления у Ильи Космодемьянского (Ilya Kosmodemiansky, Data Egret) — How to become a PostgreSQL DBA in a day и Linux IO internals for PostgreSQL administrators in 2023.

Multi-threaded PostgreSQL? — вопрошает Хейкки Линнакангас (Heikki Linnakangas, Neon). Making your patch more committable — этому посодействует Мелани Плэйгман (Melanie Plageman, Microsoft).

PGDay UK 2023

PGDay UK 2023 это небольшая однодневная конференция. Она прошла 12 сентября в Лондоне. Там было 7 докладов + открывающий и закрывающий Дэйва Пейджа (Dave Page, EDB). Рассказывали, например, о том, что Embeddings, not embedded — Postgres in the age of AI — Алистер Тёрнер (Alastair Turner, VMWare), о BRIN improvements and new opclasses — Томаш Вондра (Tomas Vondra, EDB).

Citus Con 2023

Состоялся ещё 18–19 апреля. Одна из приятных особенностей этого мероприятия: они выкладывают доклады в общий доступ. Например:

Здесь плейлист со всеми 37 докладами. Более того: по докладам есть руководство — чтобы в них ориентироваться.

Кстати, вот New Citus Technical README for distributed PostgreSQL

Эндер Калачи (не знаю, как произносить, он из Турции — Önder Kalaci, Citus Data) сообщает, что стала доступна детальная и глубоко копающая техническая документация (включая механизмы и оптимизацию), показывающая, как Citus сделал из Postgres распределённую базу. Обобщая, замечу: мне кажется, компания хорошо себя ведёт.

FOSDEM PGDay 2024

Магнус Хагандер (Magnus Hagander, Redpill Linpro) сообщил, что FOSDEM PGDay 2024 состоится 2-го февраля. Заявки принимаются. На сайте есть некоторые подробности, но расписания пока нет.

Кстати, на правом поле блога Магнуса есть список конференций, которые он посетил. Только в 2023 это 9 конференций! На некоторых он сделал доклады — все про слона: A look at the Elephants Trunk.

PGConf.dev 2024

Она же PostgreSQL Development Conference 2024. Состоится 28–31 мая в канадском Ванкувере. Заявки на доклады принимаются до 15 января 2024 года. Устроителей интересуют темы: будущие фичи Postgres, недавно закоммиченные новшества, укрепление сообщества. Ждут отклика от новичков-контрибьторов и от почтенных контрибьюторов с многолетней историей. Уровень докладов — технические от среднего до продвинутого. Но будут и доклады о том, как начать контрибьютить в Postgres. Регистрацию ещё не открыли, но появится она здесь. Скоро.

Кажется, мы не давали ссылку на вот эту беседу, прошедшую в июне:

The Future of the Postgres Ecosystem Roundtable.

Больше часа обсуждают эту тему выдающиеся представители:

  • Хейки Линнакангас (Heikki Linnakangas, сооснователь Neon);

  • Дени Люсье (Denis Lussier, сооснователь и техдир PGEdge);

  • Кевин Джерниган (Kevin Jernigan, ведущий по продукту в Google Cloud);

  • Рай Уокер (Ry Walker, сооснователь CoreDB);

  • Картик Ранганатан (Karthik Ranganathan, сооснователь и техдир Yugabyte).

Найти IT

Забавное название, маленькое чудо нейминга. Это новосибирский форум для HR-щиков и их объектов поиска. Приходят студенты, им рассказывают про возможности работы в своих компаниях Сбер, Вкантакте, Сколтех и другие. Из СУБДшников участвовали Postgres Professional, рассказали о своих (то есть наших) образовательных программах и стажировках, разыграли 30 слонов и 420 книг «Postgres: первое знакомство». Участие в форуме приняли Дарья Рисухина, Алена Скалкина, Александр Фатин, Денис Фролов и Вадим Лактюшин.

Отечественный софт: путь к технологическому лидерству

На конференции АРПП в Екатеринбурге на закрытой сессии Куда перейти с Microsoft выступил замгендира Postgres Professional Иван Панченко. Он открывал своим докладом Часть I. и рассказал о моделях разработки отечественного софта, роли сообщества в развитии системного ПО, условиях для создания полноценного отечественного вендора ПО. За ним выступали Рустам Рустамов (РЕД СОФТ), Вячеслав Кадомский (НТЦ ИТ РОСА), Дмитрий Елисеев (ГК Applite) и Антон Тен (CommuniGate Systems). Презентации спикеров можно скачать.

Heisenbug

Не знал этого слова. Оказывается, это баг + неопределённость Гейзенберга = ошибка, такая, что то она есть, то её нет. Ну и конференция по тестированию, но это »конференция по тестированию не только для тестировщиков». В этом году она состоялась 10–11 октября онлайн и 15–16 октября офлайн в Санкт-Петербурге.

Видео выложены, но: если у вас есть билет, авторизуйтесь для просмотра видео. Зато PDF доступны всем. Мне известно, что на по теме Postgres 15-го на ней выступил Михаил Жилин, Postgres Professionalс докладом Примеры атипичных сценариев при нагрузочном тестировании PostgreSQLи 16-го Андрей Зубков, Postgres Professional с докладомpg_profile — утилита стратегического мониторинга PostgreSQL. Приходько Иван, Ozon Tech рассказывал о Scenario- vs Hit-Based-подходах, хотя в полном названии обещано Нагрузочном тестировании для котиков. Но в PDF кошачьих фото действительно немало.

Квантовая структура мира: от Нобелевской премии 2022 до переживания реальности внутри квантового компьютера — так назывался доклад Алексея Семихатова из ФИАНа. Много непонятных слов, PDF нет. И Как мы выгрузку из Greenplum в Kafka тестировали — Екатерины Фроловой из Тинькофф (есть PDF). Опубликованы фото.

Олег Бартунов продвигал опенсорс и Postgres в эти дни весьма активно.

Принял участие в круглом столе Podlodka Java Crew: «Сравнение NoSQL и SQL БД на конкретных примерах»: плюсы и минусы SQL/NoSQL, кейсы для каждого из подходов. На Подкасте Linkmeup он рассказывал про Open Source (есть и youtube-версия). Влияние открытого софта на цифровизацию в России, его зависимость от финансирования, пути развития открытого ПО. Команда «Онтико» взяла у него интервью: поговорили о лидерстве в индустрии, развитии сообщества Postgres в России и планах на будущее.

Вебинар «Обзор Postgres Pro: Ваш путь к мощной, гибкой и надежной базе данных»

На совместной встрече с «Первый бит» Марк Ривкин и Андрей Забелин рассказали о возможностях, технических особенностях и функциональностях Postgres Pro.

Как анализировать диагностические отчёты pgpro_pwr — новый обучающий ролик. Все обучающие ролики от Postgres Professional здесь.

Время, деньги

В крохотной заметке Наблюдаем за пользователем — два типа timestamp автор, NNikolay, пишет: давным-давно, один специалист по базам данных (из тех, бородатых и уже седых) сказал мне, что метки времени (timestamp) — это самая сложная тема в базах данных.

Самая/не самая, но непростая точно. Можно даже сказать, что это не чисто технический вопрос, а почти выбор философии. И возникают пикантные вопросы, вроде а как быть с событиями в будущем.

Темпоральные типы в PostgreSQL и их использование

Автор, Иван Фролков (aka @plumqqz, Postgres Professional) пишет:

Мне много раз приходилось сталкиваться с тем, что из-за разницы часовых поясов не сходились отчёты за месяц или даже за сутки. Подобные проблемы возникают из-за неаккуратной обработки даты и времени, которой можно избежать.

Иван рассказывает не только о TIMESTAMP, TIMESTAMPTZ и функциях для работы с ними, но и немного о unixtime. И ещё даёт советы как Java-разработчик. Уже появились интересные комментарии, их будет, видимо, немало. Поскольку я знаю Ивана как опытного разработчика с огромной практикой, то прислушаться стоит.

На эту тему пишут немало, в том числе на хабре, а 9-го ноября появилась статья, названная решительно и недемократично:

Почему вам стоит отказаться от использования timestamp в PostgreSQL

Статус статьи в песочнице, но разнонаправленные комментарии моментально перевалили за 100. Зацепили и Oracle, и Java. И даже обсуждается крудошлёпствос участием крудошлёпа. Автор статьи некто dmserebr — видимо Дмитрий Серебрянников/Серебряков, это его первая статься на хабре стартовала таким бурным образом.

Working with Money in Postgres

Элизабет Кристенсен (Elizabeth Christensen, Crunchy Data) начинает статью с отсылкой к временнЫм типам:

вот было бы здорово, если в Postgres с деньгами всё было как со временем (это ссылка на статью Элизабет Working with Time in Postgres): сохранил в базе каноническую версию, а работать будет по всему миру. Увы. Это другое.

Есть ссылка на соответствующий tutorial, где можно общаться с сервером Postgres через браузер.

А вот не деньги, не время, но ветвящиеся версии — в стиле Git:

Versioning data in Postgres? Testing a git like approach

Сэмюэл Бодин (Samuel Bodin, Specfy) показывает, как самому построить такую ветвящуюся структуру поверх Postgres. Рассказывает о 4 способах реализации DELETE. Заодно о том, как хранятся версии в Git:

Если ты переписал файл 999 раз, то в объектном хранилище будут лежать 999 этого файла — поэтому так долго происходит клонирование репозиториев.

В статье много картинок, пояснений — что и зачем, перечисляет плюсы и минусы, альтернативные способы решения поставленной задаче. А задача была — сделать удобную платформу — Specfy для разработчиков.

При этом Сэмюэл признаётся, что альтернативные решения особенно не изучал. На ум первым приходит Postgres.ai. Там всё изначально хорошо продумано, логично и эффективно. Сэмюэл тоже ссылается на альтернативы:

  1. Branching — Neon (Open Source) — клонирование по принципу copy-on-write;

  2. Dolt www.dolthub.com (Open Source) — будто бы первая и единственная SQL-СУБД с контролем версий; также там написано, что это ребёнок Git и MySQL, и вовсе не Postgres его папа;

  3. расширение temporal_tables (pgxn.org);

  4. расширение linz/postgresql-tableversion.

На Postgres Weekly советуют обратить внимание и на такие временнЫе таблицы в качестве альтернативы: nearform/temporal_tables.

Кстати о бессерверных. Полку прибыло:

Nile Database

Её создатели пишут: это бессерверный Postgres для SaaS. И что это первая такая база, реализующая мультиарендность (multi-tenant), что и нужно для SaaS.

JSON (B)

JSON Updates in Postgres 16

Кристофер Уинслет (Christopher Winslett, Crunchy Data)

Есть полезные примеры применения предиката IS JSON, функций json_array(), json_arrayagg(), json_object() и json_objectagg(). Демонстрирует он на сгенерённых данных не слишком замысловатой конструкции. Но достаточно, чтобы проявить довольно тонкие эффекты.

Ещё он рассказывает о довольно многочисленных появившихся ключевых словах и ещё некоторых функциях с «добавками», например: json_object_agg_unique_strict() / jsonb_object_agg_unique_strict().

pg_jsonschema 0.2: JSON Schema Validation Extension

Это расширение для валидирования JSON-структур. Оно работает благодаря тому, что структуру можно заранее определить через JSON Schema. А дальше можно запустить расширение pg_jsonschema для валидации документов.

PostgreSQL Antipatterns: ходим по JSON-граблям

Кирилл Боровиков из Тензора, он же kilor, пишет о том, как нехорошо, когда много раз читают из CTE и о многих других нехороших вещах, которых он нашёл в нехорошем запросе. Но насколько он типичен? Это вызывает вопросы.

В комментариях Кирилл ссылается и на другую свою статью — по поводу некоторых уловок. Называется она сладко: «Ленивый сахар» PostgreSQL.

Вообще он пишет на совсем разные темы. Какое-то время назад он писал на тему:

SQL HowTo: ближайший общий предок в дереве (LCA)

Там для начала Кирилл показывает, как нехитрым способом обойти ветви в поисках наименьшего общего предка (Lowest (Least) Common Ancestor). Но даже в нехитром, конечно, не обойтись без WITH RECURSIVE. В качестве более изысканного способа он демонстрирует возможности появившейся в PostgreSQL 14 конструкции SEARCH … FIRST BY … SET … В комментариях есть полезная конструктивная критика.

На российском рынке

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

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

Ещё статьи и видео

Иерархическая база данных

База иерархическая, а СУБД вовсе не иерархическая — это пока что Oracle 11g, а будет, видимо, Postgres. Но об этом позже: это 1-я часть, будет ещё 2. Про реализацию иерархической задумки автора на Postgres должно быть в 3-й части.

В основе идеологии построения ИС лежит направленный граф понятий (сущностей) предметной области — говорит автор, Торус 1-й. Статья странноватая, но тема многих заинтересовала.

Для реализации модели данных в процедурный язык (APL) введен тип данных COV (category, object, value) (категория, объект, значение). Значение данного типа содержит номер категории и номер объекта, а также может содержать значение одного из атрибутов объекта. <...> Соответственно, в язык запросов (AQL), который имеет значительное сходство с SQL введены лексемы для «навигации» по дереву объектов.

Postgres System Columns Explained

25-минутное видео с заныриванием в столбцы ctid, xmin и xmax. О том, как эти системные столбцы могут помочь понять поведение транзакций. Рассказывает и набирает SQL-запросы в терминале Хусейн Нассер (Hussein Nasser).

Automated index bloat management: How pg_index_watch keeps PostgreSQL indexes lean

Макс Богук (Max Boguk, Data Egret) пишет об инструменте pg_index_watch, который автоматически перестраивает распухшие индексы a-la автовакуум, после превышения некоторого порога. И рассказывает, что это за порог, откуда взялся.

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

pglift 1.0

Что бы ни делали в Dalibo, лучше быть в курсе: компания наваяла немало полезного. На днях они объявили фреймворк pglift 1.0 для развёртывания и управления многочисленными кластерами PostgreSQL. Версия 1.0 готова к работе в промышленном окружении и использованию однородным способом (uniform manner). Поясняют они эти два курсивных слова так:

Промышленные в том смысле, что ядро Postgres нуждается во внешних сервисах для бэкапа, мониторинга и обеспечения отказоустойчивости. А однородные в том смысле, что пользователи обычно хотят развернуть свои базы без особых хлопот, и чтобы они работали надёжно.

pg_cron 1.6.2

Собственно в этой версии ничего особенного не произошло. А вот в этой статье рассказывается о новом в этом популярном планировщике (в смысле — шедулере):

Making PostgreSQL tick: New features in pg_cron

Марко Слот (Marco Slot, Microsoft) сообщает, что в версии 1.6 добавили поддержку PostgreSQL 16, но это не самое интересное. Самое появилось ещё в 1.5 и это возможность задавать задания каждые несколько секунд. Было непросто потому, что если с такой частотой проявится какая-то ошибка, это может привести к весьма серьёзным последствиям. Но сейчас pg_cron уже основательно протестирован в боевых условиях, а работы через секунды — самая популярная потребность пользователей.

На сегодня всё.

© Habrahabr.ru