Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
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 пунктов. Например:
аудит подключений без аутентификации;
функция pg_promote при неуспешном переключении на реплику;
имена параметров для ряда встроенных функций;
psql: \watch min_rows.
Как всегда много примеров. Есть перевод на английский. А теперь перейдём конференциям, по ним накопилась информация.
Конференции, митапы и круглые столы
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 апреля. Одна из приятных особенностей этого мероприятия: они выкладывают доклады в общий доступ. Например:
Keynote: Big Opportunities in Small Data - Саймон Уилсон (Simon Willison, создатель Datasette и один из создателей Django.
Postgres Without SQL: Natural Language Queries Using ChatGPT-3 & Rust - Йелте Феннема (Jelte Fennema, Microsoft).
Здесь плейлист со всеми 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. Там всё изначально хорошо продумано, логично и эффективно. Сэмюэл тоже ссылается на альтернативы:
Branching - Neon (Open Source) - клонирование по принципу copy-on-write;
Dolt www.dolthub.com (Open Source) - будто бы первая и единственная SQL-СУБД с контролем версий; также там написано, что это ребёнок Git и MySQL, и вовсе не Postgres его папа;
расширение temporal_tables (pgxn.org);
расширение 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 уже основательно протестирован в боевых условиях, а работы через секунды - самая популярная потребность пользователей.
На сегодня всё.