Postgresso #4 (65)
Джонатан Кац (Jonathan Katz) пишет:
PostgreSQL 17 Beta 1 запланирована на 23 мая. Пожалуйста, продолжайте тяжёлую работу по закрытию недоделанных пунктов (open items), все поправки намечено доделать к 18 мая. Всем спасибо! Это очень здорово, что мы подошли к этому этапу!
Release notes уже есть, Брюс Момджан о них:
В этом релизе пунктов, связанных с новшествами (feature count), будет 188. Большое число улучшений в оптимизации, это приятный сюрприз для меня. Postgres 17 Beta 1 выйдет на днях, а окончательный релиз Postgres 17 запланирован на сентябрь/октябрь этого года.
PostgreSQL 16.3
А также 15.7, 14.12, 13.15 и 12.19. Ветку 12 больше поддерживать не будут.
Исправлена уязвимость CVE-2024–4317: pg_stats_ext
и pg_stats_ext_exprs
теперь видны только владельцу таблицы. Обнаружилось, что отсутствие встроенной авторизации на представления pg_stats_ext и pg_stats_ext_exprs даёт возможность читать статистику, которую создают другие пользователи командой CREATE STATISTICS.
Как подсказал Егор Рогов, уязвимость закрыли, распространив конструкцию WITH (security_barrier) к этим двум представлениям. Об этой конструкции подробно здесь.
Вот что меня приятно удивило: очень большой вклад наших соотечественников в исправления.
Предотвращено освобождение использующихся данных при Memoize (Tender Wang, Andrei Lepikhov — Андрей Лепихов).
Предотвращены взаимные блокировки при удалении временных таблиц-сирот (Mikhail Zhilin — Михаил Жилин).
Добавлены защитные проверки глубины стека для некоторых рекурсивных функций (Egor Chindyaskin — Егор Чиндяскин).
Починили обнаружение идентификаторов старых транзакций в функциях, определяющих статусы XID (Karina Litskevich — Карина Лицкевич).
Предотвращена порча стека исключений в случае, когда FDW делает асинхронные добавления, но не конфигурирует условия ожидания для нод Append в плане (Alexander Pyhalov — Александр Пыхалов).
Гарантия, что результат-строка функции
intoasc()
корректно заканчивается нулём (Oleg Tselebrovskiy — Олег Целебровский).Не показывать в
contrib/amcheck
ошибочные несовпадения из-за путаницы коротких и длинных заголовков (Andrey Borodin — Андрей Бородин, Яндекс.Облако, Михаил Жилин).Избегать использование библиотечных функций из
contrib/xml2
, которые устарели в недавних версиях libxml2 (Dmitry Koval — Дмитрий Коваль).
Если компания нами не указана, то это Postgres Professional.
PostgreSQL Minor version updates announced
Гендир и сооснователь HexaCluster Авинаш Валларапу (Avinash Vallarapu) коротко резюмировал основные изменения в этих версиях.
Сообщество
Мелани Плейгман (Melanie Plageman) и Ришар Гуо (Richard Guo) приняли предложения стать коммитерами PostgreSQL.
До этого Гуо получил статус контрибьютора, а Плейгман главного (major) контрибьютора.
Коммитфесты отжили свой век?
Во всяком случае один из самых уважаемых людей в сообществе поставил вопрос так:
commitfest.postgresql.org is no longer fit for purpose — коммитфесты больше не выполняют свои функции. Так он написал 16 мая в список рассылки pgsql-hackers. Количество откликов огромно — сотни. И плодятся всё новые. Ещё бы: покусился на основы сообщества.
Но что он имел в виду?
Идея коммитфестов и, соответственно, commitfest.postgresql.org была такая: организовать место, где патчи будут зарегистрированы, чтобы было наглядно видно, что нуждается в ревю, таким образом помогая авторам патчей и ревьюерам найти друг друга. Но это, похоже, больше не работает. На этой неделе я потратил изрядно своего времени, бродя по коммитфесту и не охватил даже серьёзного процента патчей. Зато обнаружил, что статус патчей часто более сумбурный (messier), чем просто Needs Review или Waiting on Author, а тех, которые действительно нуждаются в ревю, не так уж много. Например, вот такие случаи:
патчи, которые коммитер поместил, собираясь наверняка делать с ними что-то после коммитфеста (after we branch);
патчи, в которых есть проблемы, которые уже долго никак не разрешатся, а автор или не знает, как их решить, или не торопится решать.
Всего он перечислил 8 случаев, и лишь один из них классический, когда просто нужно ревю. Найти подходящий для ревю патч в этом нагромождении можно лишь случайно, а можно и пропустить действительно нужный. Что же делать?
Я не предлагаю заменить commitfest.postgresql.org на какую-то новую багзиллу (вот такой я старый, да), но поразмыслить стоит.
Ветеран Джо Конвей (Joe Conway) кроме 100% agree добавил ещё и вот что из личного опыта:
За неделю до коммитфеста я на самом деле не знаю, смогу ли найти время в течение этого месяца, но я сделаю так, чтобы мой патч оказался в коммитфесте — на случай, если вдруг удастся выкроить пару дней и поработать над ним. А если он не на коммитфесте, то этими деньками воспользоваться не удастся.
Посыпались признания: Мелани Плейгман (Melanie Plageman), недавно (см. выше) получившая статус главного контрибьютора, тоже откровенничает:
У меня есть несколько патчей, которые числятся waiting on author, но я-то знаю, что там надо кое-что доделать перед ревю, при этом они для меня не слишком приоритетные. Я отправляю их в коммитфест, просто чтобы не потерять.
Чем всё это закончится — непонятно. Увидим. Но точно, что дерево коммитфестов трясут основательно.
Кстати, опубликована английская версия статьи-обзора январского коммитфеста Павла Лузанова, перевод Александра Мелешко. Теперь список со ссылками такой:
ч. 1 2023–07 (en), ч.2 2023–09 (en), ч.3 2023–11 (en), ч.4 2024–01 (en).
А ещё обратите внимание на Postgres Pre-Commitfest Party в нашем разделе Конференции и митапы — это, видимо, тоже реакция на брожение по поводу коммитфестов.
Образование
«IT-Планета 2024»: задачи второго этапа по PostgreSQL
Егор Рогов из нашего отдела образования пишет:
Вдохновившись прошлогодним опытом, мы продолжили начинание и снова проводим конкурс по SQL на международной олимпиаде »IT-Планета».
Конкурс состоит из трех этапов. Заочный теоретический тест собрал почти 3000 человек, из которых на следующий этап мы отобрали примерно 200. Вопросы для этого этапа были подготовлены моим коллегой Евгением Давыдовым.
Далее Егор приводит 5 задачек и 5 решений. Но там ещё для каждой из задач есть интересная рубрика Не делайте так:
Если есть уверенность, что логическое выражение не обращается в
NULL
, не надо громоздить конструкции типаcase when cnt.sleepHeadCnt = cnt.totalHeads then true else false end
. Достаточно написатьcnt.sleepHeadCnt = cnt.totalHeads
. (А если такой уверенности нет, лучше уж сделать этот факт более явным, используяcoalesce
.)В большинстве случаев не стоит вкладывать друг в друга конструкции
WITH
. Преимущество общих табличных выражений над подзапросами как раз в том, что их можно записывать последовательно, уменьшая вложенность и упрощая чтение запроса.Выделять ли заглавными ключевые слова — дело вкуса, но не стоит набирать большими буквами весь запрос. Все-таки двадцать первый век на дворе, восьмибитные кодировки уже давно завезли.
Подсекция «Системы управления базами данных» на Международной студенческой конференции в НГУ
Впервые на Международной студенческой конференции в НГУ (Новосибирский Государственный Университет) прошла подсекция «Системы управления базами данных» при поддержке Postgres Professional. Результаты исследований представили 20 студентов, в составе жюри — специалисты компании. Лучшими докладчиками стали:
Тофиг Алиев — решение для эмуляции сетевых сбоев, которое полностью готово к использованию.
Даниил Давыдов и Алена Винтер — оптимизация журнала предзаписи.
Тимофей Шальнев — управление ресурсами в PostgreSQL.
Владислав Кирилов — автоматизация восстановления резервного сервера Postgres.
Андрей Силицкий — верификация алгоритма консенсуса в высокодоступном кластере Postgres Pro.
Дмитрий Бондарь — причина падения скорости обработки запросов при переключении на реплику.
У многих из этих студентов научными руководителями были сотрудники Postgres Professional новосибирцы Михаил Рутман и Андрей Рудомётов и москвич Борис Пищик.
Техклуб Между скобок
Гриша Скобелев запустил цикл бесед по мотивам книги Егора Рогова PostgreSQL 16 изнутри(между скобок есть и интервью с Егором). Обсуждают самые разные люди, не обязательно спецы именно по PostgreSQL. Автор книги появляется, но в части/главе V вместе с коллегами: гендиром Олегом Бартуновым и разработчиком Владленом Политовым. В части IV появляются Михаил Жилин и Павел Толмачев тоже из Postgres Professional. Павел из нашего отдела образования.
PostgreSQL 16 Internal Часть I. Изоляция и многоверсионность / Александр Пахомов
PostgreSQL 16 Internal Часть II. Буферный кеш и журнал / Костя Евтеев, Михаил Тюрин, Сергей Бурладян
PostgreSQL 16 Internal Часть III. Блокировки / Иван Чувашов
PostgreSQL 16 Internal Часть IV. Выполнение запросов / Михаил Жилин, Павел Толмачев
PostgreSQL 16 Internal Часть V. Типы индексов / Олег Бартунов, Егор Рогов, Владлен Пополитов
Oriole
Oriole joins Supabase
Слухи ходили давно, теперь это официально. Oriole и команда во главе с Александром Коротковым присоединяются к Supabase.
Oriole предлагает нешуточное нововведение: новую архитектуру хранения, подключаемую (pluggable storage) к Postgres через API табличных методов доступа (Table Access Method API).
Одна из целей, которые ставит Supabase, присоединяя Oriole, это развязать хранение и вычисления. Эта новая архитектура хранения оптимизирована под SSD и NVRAM. Как в своё время zheap, Oriole воплощает MVCC не с сохранением версий записей, а по принципу UNDO log.
О подключаемом хранении в блоге Supabase была статья сооснователя и гендира Supabase Пола Копплстоуна (Paul Copplestone): Next steps for Postgres pluggable storage. Из этой статьи мы узнаём, что Supabase начала спонсировать Oriole в 2022.
Но мы также советуем почитать незабываемое интервью Александра Короткова Николаю Самохвалову, данное ещё в декабре 2021: Наболевшие проблемы PostgreSQL. В сети есть презентация в 61 слайд 2021 года Solving PostgreSQL wicked problems.
OrioleDB не работает как чистой воды расширение. В PostgreSQL 14 нужен был патч с 5000 строк кода. Но с тех пор немалая часть вошла в основную ветку, и в PostgreSQL 16 патч уже с 2000 строчек. И Supabase надеется, что в будущем вообще удастся обойтись без патчей — это будет просто расширение.
Neon
Bringing IvorySQL to Neon Autoscaling Platform
Другой проект, за которым мы внимательно следим. Динамика проникновения на рынок впечатляет.
Дэвид Чжан (David Zhang) из канадского отделения китайской компании Highgo показывает, как перенести IvorySQL(гитхаб) на платформу Neon (да, Neon уже рассматривают как платформу). IvorySQL это опенсорсная база данных на основе Postgres, обеспечивающая совместимость с Oracle, поддерживается Highgo. Как пишут на сайте айвори, совместимость там на трёх уровнях: переписывание запросов, их оптимизация и исполнение. Утверждают, что эта sql из слоновой кости понимает оракловый PL/SQL.
Postgres.ai
Мгновенные тонкие клоны баз 1С для разработки и тестов
За движениями проекта Николая Самохвалова тоже стараемся следить, как вы, наверное, заметили. На этот раз неожиданный (для нас, а для Николая?) поворот: на него обратили внимание разработчики на 1С. Сергей Филькин на площадке Инфостарт пишет: есть классное решение от postgres.ai (то есть DBLab Engine).
Сергей ссылается на презентацию Database Lab 2.0 (тогда она так называлась) на незабываемых #RuPostgres-вторниках, ему нравится, как всё задокументировано и легко устанавливается, приводит свой файл настроек DBLab Engine. Одна из важных привлекательных черт для Сергея — ZFS.
PPEM
Состоялся релиз PostgresPro Enterprise Manager версии 1.4.0. Пакеты доступны в публичном gitlab и в репозитории, есть инструкция по установке.
Некоторые изменения:
Добавлена возможность управления объектами БД: схемы, таблицы, индексы, последовательности, функции.
Добавлено обнаружение кластеров физической репликации и отображение состояния кластеров.
Добавлено табличное представление структуры таблиц (слои, TOAST, параметры хранения).
17 мая в 12:00 состоялся вебинар:
PPEM — графический инструмент управления базами данных для корпоративных DBA
Его провели Postgres Professional совместно с Mont Postgres (Mont — это дистрибьютор разнообразного корпоративного ПО). Рассказывал о PPEM Борис Пищиков, потом отвечал на вопросы.
Shardman
Postgres Pro Shardman: горизонтальное масштабирование реляционных СУБД
Появилась статья Дмитрия Урсегова aka fdmitry. Из первых рук, что называется. В статье есть и история создания шардинга в Postgres Professional, почему не пошли по пути Citus и Greenplum, разбор архитектуры. Дмитрий подробно рассказал о важной части шардмана — мультиплексоре, созданном для эффективной работы в этой архитектуре, о концепции и реализации CSN и о том, как они работают в распределённых транзакциях. Потом примеры и дальнейшие планы. Основательная статья.
Миграция
Дипак Махто (Deepak Mahto) опубликовал в своём блоге серию статей о миграции и даже хроники миграции. Привожу просто список в обратном хронологическом порядке:
Orafce 4.10.0
В этой версии пакета, призванного эмулировать (не все) функции и пакеты Oracle, ничего революционного, кажется, не произошло, как и в дюжине предыдущих. Просто напоминаем о существовании.
node-pg-migrate 7.3.2
Во времена версии node-pg-migrate 7.0 произошла смена караула: теперь поддержкой этого инструмента занимается некто Shinigami, проживающий в Гамбурге. Он также автор FakerJS, который генерит правдоподобные имена, адреса — что угодно. И входит в основную команду разработчиков инструмента для фронтенда Vite (произносится вит, т.к. это по-французски быстрый). До этого отвечала за node-pg-migrate компания Salsita Software из Праги — быстро растущий интернациональный коллектив, возглавляемый основателем — Метью Гертнером (Matthew Gertner).
В версии 7.3.2 ничего особенного — исправления, в 7.10.0 появились grant и revoke, а больше всего изменений было, конечно, в 7.0.0 — после смены мейнтейнера.
Миграция на российские IT-решения. Успешный кейс нашей команды
Андрей Толстиков @Atolstikov, представившийся как руководитель направления ИБ, описывает свой опыт. Изначально было:
5000 пользователей. Система была построена на платформе 1С Фреш для ведения финансово-хозяйственной деятельности заказчика и более 600 подведомственных организаций. В её состав входило: около 24 информационных баз общим объемом свыше 26 Тб. Техническая часть включала 105 виртуальных машин на базе Microsoft Hyper-V и операционной системы Windows Server 2012 R2, управление базами данных осуществлялось через MS SQL Server 2014.
Целевая инфраструктура была такая:
кластер из 14 хост-серверов, работающих под управлением «Альт Сервер виртуализации 10». На этих серверах развернуто 193 виртуальные машины с операционной системой «Альт Сервер 10» и 33 СУБД Postgres Pro Enterprise.
Выбрали репликацию через утилиту ibcmd (о ней что-то узнать можно узнать, например, здесь). Всё заработало.
Фройнд не дремлет, а проспали многие
В предыдущем выпуске мы обещали написать о нехорошем приключении ZX Utils и о реакции сообщества Postgres.
Произошедшее уже со всех сторон рассмотрено, чтобы не сказать обмусолено. Но, вкратце. Приятно вспомнить, что обнаружил бекдор и сделал предварительный анализ Андрес Фройнд (Andres Freund, Microsoft), который входит в PostgreSQL Core Team. От таких как он в наибольшей степени зависит развитие Postgres. Забил тревогу он после того, как обнаружил потерю производительности при тестировании. Разобрался, где источник неприятностей, и толково изложил всё в письме в компанию Openwall, занимающуюся безопасностью Linux. На хабре есть перевод письма Андреса Фройнда: Бэкдор в основной версии xz/liblzma, ведущий к компрометации SSH-сервера.
Реакция была быстрой. Письмо от 29 марта, а уже 30-го, например, на securitylab.ru (Positive Technologies) появилась статья 10 из 10: В Linux обнаружен встроенный бэкдор (CVE-2024–3094), а 1 апреля ещё одна: Скрытый бэкдор в Linux: подробности расследования, где ссылаются на более глубокий анализ в статье Разбор логики активации и работы бэкдора в пакете xz на opennet.ru.
Вернёмся к Postgres. Ущерб не был причинён, но жизнь сообществ open source уже не будет прежней. Security lessons from liblzma — ветка, которую стартовал Брюс Момджан. Но сам ньюсмейкер — Андрес — не увидел в той ситуации ничего сверхпоучительного: формирование тарболов в Postgres не основывается на генерации скриптов, которые что-то собирают из того, что есть в репозитории и сложным образом препарируют — именно через них проникла зараза. Сейчас в тарболах то же, что в репо. И изложил ещё некоторые соображения.
Но не всё так гладко, как хотелось бы: Том Лейн (Tom Lane), самый продуктивный разработчик из сообщества, запустил ветку обсуждения с красивым названием: Tarball builds in the new world order — сборки тарболов при Новом Мировом Порядке, где пожаловался на то, что тарболы собираются, но не попадают туда, куда нужно. Но, конечно, проблему в результате решили.
Разумеется, вопросы безопасности поднимались регулярно до этого происшествия с загадочным Цзя Таном, ну, а после безопасники уж расстарались. Security Lab, например, пишет:
IT-профессионалы на мушке: бэкдор MadMxShell прячется в легитимных сетевых инструментах
А вот доклад Брюса в 2022 на PGConf NYC 2022:
Securing PostgreSQL From External Attack.
Конференции и митапы
PGConf.Russia 2024
Ну, ей-то мы посвятили отдельный обзор PGConf.Russia #10 (2024). Сейчас опубликованы записи выступлений — материалы 45 докладов доступны для участников конференции (в личном кабинете сайта). Выложен и фотоотчёт с конференции.
Кстати, на youtube-канале компании можно посмотреть записи выступлений с конференции прошлого года. Также в открытом доступе есть запись научно-популярной лекции доктора физико-математических наук Алексея Семихатова. Сильно. Я-то ухитрился не знать о нём до этого. А знают его, кажется, все.
PGConf.СПб 2024
Пройдёт 1 октября Санкт-Петербурге. Кроме докладов будет демонстрация продуктов на базе Postgres: стенды BiHA, Shardman, PPEM и другие. Будет и сертификация по PostgreSQL. Заявки на доклады можно оформить прямо на сайте. Адрес: отель Санкт-Петербург, Пироговская набережная, дом 5/2. Основная программа с 10:00 до 19:00, вечером — неформальный ужин и обсуждение интересных выступлений. Early Bird — скидка в 30% от финальной стоимости. Участие студентов и преподавателей бесплатное. Открыта регистрация.
Heisenbug 2024 Spring
Конференция тестировщиков и не только проходила 16 апреля онлайн и 22–23 апреля оффлайн — очно. Немножко докладов:
Как мы встраивали fuzzing-тестирование, или Как огрести кучу проблем одним коммитом — Руслан Косых (Ozon Fintech).
Я в первый раз узнал о fuzzing-тестировании всего-то пару месяцев назад из доклада Fuzzing-исследование PostgreSQL. Как мы искали и что мы нашли Николая Шаплова. На этой конференции его не было. Зато здесь был не только фаззинг, но и хаос:
Хаос-тестирование как часть функционального: наш опыт в Яндекс Маркете — Светлана Баканова (Яндекс Маркет).
Оказывается, хаос-тестирование не просто устоявшийся термин, а есть даже классические кейсы использования хаос-тестирования. Но не в этом докладе — тут неклассические.
Привлёк внимание доклад Тестирование умерло Артёма Ерошенко. Но это, конечно, риторика, кликбейт:
Из года в год я слышу одну и ту же фразу: «тестирование умерло». Что скрывать, я и сам это регулярно говорю. При этом тестирование живет и процветает, а его ценность только растет, и это видит каждый тестировщик.
Расскажу о том, почему так происходит, сколько раз на моей памяти уже умирало тестирование, когда тестирование действительно умрет и как на все это повлияет искусственный интеллект.
Артём начинал с автоматизации тестирования в Яндексе, ныне он основатель компании Qameta Software. PDFы презентаций в свободном доступе.
Отечественные PostgreSQL. О решениях на замену Oracle/MS SQL, их возможностях и особенностях
Звучит заманчиво. Список впечатляет:
Мы протестировали в своей лаборатории PostgresPRO, Tantor, Jatoba, ProximaDB, Pangolin, Q.Database и другие отечественные СУБД и хотим поделиться с вами опытом — так приглашает на свой митап знаменитая Инфосистемы Джет, у которой в адресе до сих пор .su.
СУБД Postgres Pro для 1С: новые возможности
Запись вебинара появилась на YouTube. Кроме возможностей специалисты Postgres Professional — руководитель отдела технического консалтинга Марк Ривкин, старший технический консультант Андрей Забелин и руководитель проектов «ИнфоСофт» Антон Дорошкевич — представили новый тип лицензий и сертификатов технической поддержки Postgres Pro Enterprise.
Saint HighLoad++ 2024
Состоится 24–25 июня. Есть предварительное расписание. Пока в анонсах не обнаружил PostgreSQL, но список докладов пока неполный. Зато есть такие доклады:
Реестр российского ПО. Кому он нужен и что учесть в разработке, чтобы туда попасть? — докладывать будут Герман Ященко и Алиса Голенищева из AG-LEGAL
и такой интригующий: Особенности и вызовы реализации технологии создания готовых музыкальных произведений с применением ИИ — Максима Метальникова и Максима Смолякова из SberDevices.
Там будет и некое новшество, которое, если пройдёт эффективно, наверняка станет постоянной практикой, а не эпизодом:
Postgres Pre-Commitfest Party
Это инициатива Андрея Бородина из Яндекс.Облака:
В июле начинается первый коммитфест — процесс рассмотрения разработок от сообщества, которые могут быть приняты в Postgres 18. Внушительное количество разработок уже перенесено из версии 17, что-то ещё добавится до июля.
В преддверии коммитфеста, предлагается встретиться разработчикам патчей и договорится о совместной работе. Приоритизировать какие-то разработки, продвинуть среди потенциальных ревьюеров свой патч, услышать быстрый feedback от сообщества, собравшегося на StHL.
Если вы хотите попробовать найти ревьюера — подготовьте короткий (на 2–3 минуты) рассказ о своём патче. Предлагаю заранее представить свою работу к обсуждению мне в телеграм или как-то ещё.
PGDay Israel 2024
Состоится в Тель Авиве 20 октября. Заявки принимаются по адресу info@pgday.org.il до 30 июня, утверждённых докладчиков оповестят до 31 июля.
Back from PGConf Belgium 2024
Впечатления от конференции изложил бельгиец Стефан Феркот (Stefan Fercot) из Data Egret. Ему понравилось. Эта 4-я по счёту в Бельгии. Вот предыдущие: 2019, 2022, 2023.
PGConf.DE 2024 — Review
А немецкую обозревает Andreas 'ads' Scherbaum. Он рисует блинчики: 65% оценили конференцию на 5 из 5, но на отвечала ли ожиданиям пятёрку дали всё же 45% и столько же дали четвёрку. Всего я насчитал 12 блинчиков. Эта проходила в Мюнхене, но посетить следующую в Мюнхене предпочли бы всего 10%, в вот в Берлине — 20% и в Гамбурге — 17%.
FOSDEM and FOSDEM PGDay 2024 Review
Мероприятие состоялось 16 февраля в Брюселе. Опять обозревает Андреас Шербаум.
Swiss PGDay 2024
Опубликовано расписание. Конференция пройдёт рядом с Цюрихом 27–28 июня.
PGDay Chicago 2024. We did it!
Это эмоциональный отклик организатора — Генриэтты Домбровской (Henrietta 'Hettie' Dombrovskaya). На фото она с участниками, все (их совсем немного) выглядят довольными. Конференция прошла в уютной атмосфере 26 апреля. Два знакомых имени в оргкомитете: Джо Конвей (Joe Conway, Amazon) и Шон Томас (Shaun Thomas, EDB).
На этом пока всё. До следующего выпуска!