Postgresso #1 (62)

db26a94012dd82988008a2e1feb1db68.jpg

Умер Никлаус Вирт

1-го января этот мир покинул Великий человек — Никлаус Вирт (Niklaus Emil Wirth). Его создания: Pascal, Algol-W, Euler, Modula-1, 2, Oberon-1, 2.

Но прежде всего Никлаус был главным идеологом программирования сверху вниз, структурного программирования.

Я не нашёл (а вы?) высказываний Никлауса о базах данных и языках запросов. Но понятно, что его работы по алгоритмам как-то влияли и на некоторые технологии баз данных. Вот в этой статье Algorithms and Data Structures, например, он говорит и о видах деревьев, алгоритмах обхода их, и о ключах и хэшах, и о взаимоотношениях между сложными структурами. А вот коротенький диалог об абстракции в языках программирования.

А в этом интервью Никлаус прежде всего очаровательный человек. Который когда-то играл в железную дорогу и мечтал стать машинистом локомотива.

На сайте Уральского Федерального Университета Никлаус Вирт возглавляет список Почётных Докторов (doctor honoris causa) Российской Академии Наук (там у него интересная компания — Рави Шанкар, например (гуру, не путать с великим музыкантом), и с Нурсултаном Назарбаевым).

Его именем назван астероид.

Релизы

Shardman 14.10.2, 14.10.3

Ещё недавно мы писали, что в документации по Postgres на сайте Postgres Professional появился четвёртый столбец — ora2pgpro. А сейчас там 5 столбцов: появился Shardman. Всего пока 2 релиза:

Postgres Pro Shardman 14.10.2 и Postgres Pro Shardman 14.10.3.

В 14.10.3 улучшения и исправления. А в заметках к релизу предыдущего можно узнать, что:

СУБД Shardman основана на PostgreSQL с дополнительными улучшениями, большая часть функциональности которых реализована в расширениях shardman и postgres_fdw. Утилиты управления реализованы в виде службы shardmand и инструмента shardmanctl. Они используют стороннюю службу etcd для хранения глобальной конфигурации кластера и обмена информацией.

Основные возможности:

  • Распределённые ACID транзакции.

  • Распределённый DDL для управления объектами всего кластера, включая сегментированные и глобальные таблицы, последовательности и пользователей.

  • Эффективный мультиплексирующий транспорт для связи между узлами внутри кластера.

И многие другие, смотрите на сайте.

Но на сайте есть и другие места, где можно найти полезную информацию. В основном меню есть раздел Продукты. Там тоже есть Shardman. В этом разделе тексты демократичней, больше наглядных схем, особенно когда это касается архитектуры. Среди продуктов есть ещё и — PPEM (Postgres Pro Enterprise Manager. Недавно вышла новая [! но более ранняя нигде не выложена, о них ничего не известно внешним людям. UPD: всё же есть, но надо раскапывать, а не tags] версия:

Postgres Pro Enterpise Manager 1.3.0 [! в новости не 1.3.0, а 1.3, но в других местах явно прописано, что там 3 цифры, и в репозитории написано 1.3.0]

  • поддержка PGPRO_PWR;

  • экран с информацией о ролях экземпляра;

  • группы пользователей РРЕМ;

  • поддержка LDAP;

  • принудительное завершение сессии или запроса;

  • планирование регламентных задач.

Инструкция здесь, а пакеты с 1.3.1 для разных ОС здесь.

Greenmask 0.1.0, 0.1.1, 0.1.2

Зелёная маска не только инструмент обфускации, но и годится для резервного копирования. Версия 0.1.0 объявлена готовой для промышленного применения. В 0.1.1 добавлены ещё трансформеры, умеющие генерить случайные значения для, например, таких данных:

  • геоданные, например: RandomLatitude и RandomLongitude;

  • временные, например: RandomUnixTime и RandomMonthName;

  • контакты, в том числе RandomEmail и RandomPhoneNumber;

  • сетевые адреса, в том числе RandomIPv4 и RandomIPv6.

(В анонсе на PostgreSQL.org эти новшества почему-то приписаны версии 0.1.0). В версии 0.1.2 исправления и улучшения.

Разработкой занимается, видимо, интернациональный коллектив: контрибьютором 0.1.2 значится Джефф Сазерлэнд (Jeff Sutherland, США — @jeffsutherland-bluesky), версии 0.1.1 — Дмитрий Никитин (Dmitry Nikitin, Кипр — @gracingpro), 0.1.0 — Владимир Тарбаев (Vladimir Tarbaev, Москва — @tarbaev-vl), а бету представлял основатель — Вадим Войтенко (Vadim Voitenko @wwoytenko. Он же и автор некоторых форков, например PostgreSQL metric exporter for Prometheus. Документация здесь, релизы на гитхабе здесь, писать письма в поддержку — сюда.

Barman 3.10.0

Бармен расшифровывается как BackupAndRecovery-мен — опенсорсный инструмент, основанный на возможностях Point-In-Time Recovery классического PostgreSQL, он позволяет удалённо управляться с каталогом копий и следить за фазами копирования нескольких удалённых серверов. Поддерживается EDB.

В версии 3.10.0 появилась новая команда, новая опция конфигурации и даже новая модель конфигурации. И ещё теперь можно ограничивать полосу при копировании с AWS S3 или Azure Blob Storage параметром --max-bandwidth.

ANXS — Fairly full featured Ansible role for Postgresql

Появилась роль, работающая с Ansible 2.4 и выше, которая устанавливает и конфигурирует Postgres 12 и выше вместе с расширениями. Она умеет ещё и устанавливать базы данных, и пользователей. Только что добавлена поддержка Postgres 16.

pg_savior

Постгрес-Спаситель. Простая и гениальная идея: запретить удаление без фильтра WHERE — чтобы отсечь совсем нелепые случайности, заканчивающиеся потерей данных. Но не только. Есть ещё некоторые полезные возможности.

Badass Elephant и реестры расширений

Оказывается, Тембо — имя лихого слоника из игры Tembo the Badass Elephant. Этим же именем решили назвать компанию, развивающую свою облачный Postgres для разработчиков — основатель и гендир Рай Уокер (Ry Walker) объявил о доступности Tembo Cloud.

Идея такая: сервисы Postgres на все руки: Postgres + Stacks. Эти «стэки» самые разные, заточенные под разнообразные задачи: векторный, поисковый, временные ряды и так далее. Реализовать это помогают аж 194 расширений.

Соответственно, в начале января взяли на работу Дэвида Уилера (David E. Wheeler) — основателя PGXN (PostgreSQL Extension Network). Кроме того он давно контрибьютор PostgreSQL, подаривший сообществу, например, CITEXT2 — нечувствительный к регистру тип данных; тестовую инфраструктуру pgTAP; систему управления изменениями Sqitch. У Дэвида есть свой сайт, который почему-то называется Just a Theory. Там, в блоге он раскрыл свои задачи в качестве тембонавта:

I’m a Postgres Extensions Tembonaut

  • Организовать канонический индекс расширений для сообщества — задача, которую PGXN только ещё предстоит решить.

  • Улучшить стандарты метаданных, чтобы запустить новые паттерны, такие как автоматическое пакетирование (binary packaging).

  • Совместно работать с сообществом Postgres, вырабатывая стандарты документации, чтобы подталкивать разработчиков к написанию удобной документации по расширениям.

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

В статье PGXN Challenges проблемы рассмотрены подробней. В том числе пожелание переписать на Go или Rust то, что в PGXN и клиенте написано на Perl и Ruby.

И результат присутствия Уилера вот он: пошли одно за другим расширения на PGXN от Tembo:

vectorize 0.9.0: The simplest way to do vector search on Postgres,

pg_later 0.0.14: Run queries now and get results later,

pgmq 1.1.1: A lightweight message queue like AWS SQS or RSMQ, but on Postgres.

О расширениях в Tembo пишут и другие. Адам Хендель (Adam Hendel) в статье

How we built our customer data warehouse all on Postgres

помогает с установкой clerk_fdw,  prometheus_fdw, postgres_fdw, pg_cron и pg_partman.

Introducing prometheus_fdw: Seamless Monitoring in Postgres

Это разработка Tembo, которая может заинтересовать тех, кто занимается мониторингом или разрабатывает для него инструменты. Очень часто всевозможные данные, полученные мониторинговыми агентами, визуализируют при помощи Prometheus. Обычно данные Prometheus существуют сами по себе, вне Postgres. Через FDW они становятся доступны, их можно будет анализировать средствами SQL, строить временные ряды, чем и занимаются в Tembo. Работу с prometheus_fdw демонстрируют в 4-минутном видео: Bring your Prometheus data into Postgres in 3 minutes.

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

Trunk

Это опенсорсный установщик пакетов и реестр расширений PostgreSQL. Они охватили около 200 расширений — не поражает воображение, но это пока. Как минимум есть удобный классификатор: можно выбрать одну из 15 категорий, скажем Поиск или Аудит/Логирование.

А есть ещё и dbdev, и pgxman.

Или просто списки расширений. Один из них называется так:

1000+ PostgreSQL EXTENSIONs

Тут 7 категорий + категория «вне категорий». И ¾ расширений попадают именно в неё. Далее по населённости — FDW. Расставлены звёздочки зрительских симпатий. Между прочим, 42 расширения из списка живут на гитхабе Postgres Professional.

Пятнецы, GPT, UUID-ы

Эта пятнеца необычная. Не потому, что какой-то особенная тема — тема как тема: UUID. А из-за ответа Павло Голуба (Pavlo Golub, Cybertec). Он ответил не сам, а взял интервью на эту тему у бота, которого зовут Postgres.AI Bot:

Postgres.AI bot interview for PGSQL Phriday #015

Героя Пятнецы #15 Николай Самохвалов представил публике совсем недавно:

Postgres.AI Bot. Towards LLM OS for Postgres

Он, бот, весьма продвинутый: в его жилах течёт кровь GPT-4 Turbo. А скормили ему 110 тыс. текстов, включая документацию, статьи и блоги по теме и — самое интересное — код разных версий PostgreSQL, PgBouncer, Patroni, pgvector и других.

Более того: бот не просто болтает, он сам ставит эксперименты, проверяет свои выводы:

  1. открыть по сессии на тонкий клон Postgres.AI DBLab Engine, чтобы проверить синтаксис SQL-запросов и поведение планировщика и исполнителя PostgreSQL и

  2. запустить pgbench на виртуальных машинах в Google Cloud, чтобы изучить поведение Postgres под различными нагрузками; для каждой итерации автоматически собираются более 70 артефактов и используются ботом для анализа и визуализации результатов экспериментов;

  3. в будущем довести число экспериментов до миллиона.

Более того: создатели бота воодушевились идеей LLM OS, которую высказал в видео Анджей Карпати (Andrej Karpathy — смотреть с 42:15): Intro to Large Language Models — то есть всё это только начало. Николай рассказывает, что беседы с его ботом уже натолкнули его (точнее: их) на новые исследования.

Вообще-то, кто только не прикручивает GPT к Postgres. Например:

gptsql

Чат-интерфейс PostgreSQL. Подсоединённый к GPT, он понимает синтаксис Postgres и транслирует вопросы на английском языке в SQL. Ещё он умеет угадывать структуру и значение таблиц. Использует модель Open AI, работая через Assistant API.

По сравнению с многочисленными другими такими интерфейсами (обычно архитектуры RAG), это самый быстрый и простой способ взаимодействия с данными — утверждают создатели.

Они предлагают демо, где на обычном человеческом языке расспрашивают базу данных IMDB. Там видно, как Assistant, увидев ошибки в SQL, сам их исправляет.

А Сергей Пронин (Sergey Pronin) из Percona даже написал инструкцию по сборке GPT-помощника: Create an AI Expert With Open Source Tools and pgvector.

pgvector-эпизод на Postgres FM

Майкл Кристофайдес (Michael Christofides, на этот раз Николай Самохвалов не участвует) пригласил обсудить pgvector Джонатана Каца (Jonathan Katz), который, кроме того, что главный разработчик продукта в (principle product manager) в AWS, разработчик и контрибьютор pgvector, ещё и участник управляющего совета PostgreSQL — Core Team.

В беседе упоминается TOAST — и это правильно: большие вектора с огромным числом измерений могут попасть в TOAST. Позволим себе: в этом контексте интересно было бы упомянуть интересные наработки Никиты Малахова и Олега Бартунова, предлагающие новый подход к работе с TOAST: создавать методы для работы с разными типами внутри TOAST, подключённые к Pluggable Storage API. Олег и Никита проделывали это для JSON (B) (Жарим TOAST в PostgreSQL), но ведь вектора не даром прочат в новые джейсоны.

В подкасте упоминаются полезные материалы:

Если же вернуться к теме пятнец #15, то началось всё с Летиции Авро (Lætitia Avrot), которой выпало задавать вопросы. Вот она и предложила тему — UUID. И даже набросала список из 8 пунктов, раскрытия которых ждёт от ответчиков.

Сама Летиция в итоге написала текст, отвечая на вопрос: Что лучше подходит для первичного ключа? UUID, CUID, или TSID?

Павло рекомендовал статьи своих коллег по Cybertec на тему UUID:

Unexpected downsides of UUID keys in PostgreSQL Антса Аасмы (Ants Aasma) и

Auto-generated primary keys: UUID, serial or identity column? Лауренца Альбы (Laurenz Albe).

А мы напомним о докладе Ивана Фролкова на PGConf.Russia: UUID v7 & v8 — зачем и когда(видео доступно из личного кабинета участника).

PG-футурология

Thoughts on PostgreSQL in 2024

В своём блоге Джонатан Кац немного попредсказывал. Говорит, что хотел совсем чуть-чуть, но увлёкся — действительно получилась статья и немаленькая. Стоит почитать всю, но протранслирую сюда некоторые фрагменты.

Логическая репликация как важнейшая составляющая HA (высокой доступности)

На PGCon 2023 Developer Meeting, я [Дж. Кац] предложил тему: Какие вызовы для пользователей PostgreSQL самые серьёзные? Мы с Амитом Капилой (Amit Kapila), который многое сделал для логической репликации, развили эту тему в презентации и в видео The journey towards active replication in PostgreSQL.

В PostgreSQL 16 основная часть кирпичиков для active-active [назовём это условно мультимастером], сине-зелёного развёртывания [blue-green deployment] и нулевого времени простоя при мажорных апгрейдах уже есть — если не в ядре, то в расширениях (каминг-аут: я [Дж. Кац] работаю над одним из таких расширений — pgactive на основе BDR). Читайте в Using pgactive: Active-active Replication Extension for PostgreSQL on Amazon RDS for PostgreSQL.

Неблокируемые изменения схемы

ALTER TABLE берёт блокировкуACCESS EXCLUSIVE,в это время запись в таблицу невозможна. База формально доступна, но для многих пользователей это значит примерно то же, что недоступна, особенно, если это главная, огромная таблица приложения. Это стало особенно актуально после того, как в других СУБД научились решать эту проблему. Напоминаю, что тем в статье много.

My PostgreSQL wishlist

Райан Гилл (Ryan Guill) предложил довольно обширный список вполне конкретных фич, которых не хватает ему лично, и просит писать в комментариях, чего не хватает другим — он готов этот список подновлять. Пока там только 1 комментарий.

В списке сразу несколько пунктов по JSON (B), есть и такие пункты как управление порядком столбцов по умолчанию. Или такой:

Асинхронный запрос

В стародавние времена, в бытность DB2 на AS/400 я мог отослать запрос в пакетном режиме (batch), то есть мог задать запрос, задать схему и таблицу, где будет храниться результат, после чего выдать этому заданию не очень большой приоритет и преспокойно заниматься другими запросами. В те времена запросы могли иногда обрабатываться часами или днями. Сейчас такое время исполнения редко встретишь (разве что на складах данных), но ситуации, когда хочется отправить запрос, но не держать соединение открытым в ожидании результата, всё ещё актуальны. И чтобы у меня была при этом возможность узнать статус того задания.

Не глянуть ли автору статьи хотя бы на вот это произведение Tembo — pg_later 0.0.12: Run queries now and get results later?

Конференции

Флагманы цифровизации — 2024

Организовало конференцию (точнее, конгресс) издательство-ветеран — Открытые системы. . Полностью название звучит так: «Флагманы цифровизации — 2024»: Отрасли. Инструменты. Кейсы. Прошла в январе. На ней выступали представители ключевых организаций и больших компаний: Минэнерго и Минцифры, Ростелеком и СИБУР, Российский фонд развития информационных технологий, «Аэрофлот», Газпром ID, «Московская Биржа», МТС-Банк, ГМК «Норильский Никель», «Росэнергоатом», «Северсталь», «Самолет», TenChat, X5 и другие. Руководитель программного комитета конгресса — Ирина Шеян.

PGConf.Russia 2024

Пройдёт 8–9 апреля опять в бизнес-центре «Рэдиссон Славянская», Площадь Европы, д. 2. Можно подать заявку, можно зарегистрироваться.

pgDay Paris 2024

Конференция пройдёт 14 марта. Она должна охватить темы от Кодда до сообщества и от логического декодирования до LSM-деревьев. Программу уже можно изучать.

Конференцию откроет доклад Elephant in a nutshell — Navigating the Postgres community 101 — Валерии Каплан (Valeria Kaplan, Data Egret). Будут ещё PostgreSQL without permanent local data storage — Матиаса ван де Меента (Matthias van de Meent, Neon), Calculating the future: how to model PostgreSQL performance — Дмитрий 'erthalion' Долгов (Dmitry Dolgov, с 2022 Rad Hat), пугающее PostgreSQL worst practices — Ильи Космодемьянского (Ilya Kosmodemiansky) и другие доклады.

POSETTE

Так теперь называется Citus Con Виртуальная конференция состоится 11–13 июня. Есть расписание появления расписаний и прочих промежуточных событий:

  • 19 января — принимаются заявки (CFP),

  • 7 апреля  — не принимаются заявки,

  • 17 апреля — уведомляются докладчики,

  • 1 мая — появится программа,

  • 2 мая — приветствия (Virtual Speaker Meet & Greet),

  • 13–17 & 20–24 июня  — предварительная запись докладов,

  • 11–13 июня  — сама конференци

PostgreSQL: PGConf.BE 2024: Call for Papers & Sponsors

PGConf.be 2024 пройдёт 7 мая, 4-й раз в Хаасроде, Лёвен. Программа пока не объявлена, регистрация тоже, а заявки уже можно подавать — до 25 марта.

Swiss PGDay 2024

Швейцарские PG-дни должны состояться 27–28 июня в Рапперсвиле, недалеко от Цюриха. Два потока, основная масса докладов на английском, но есть и на немецком. Заявки на доклады принимаются до 8 апреля, программу опубликуют к концу апреля.

Контринтуитивные NULL-ы

Эта тема вообще интересная: тонкие материи.

Крис Трейверс (Chris Travers), который приезжал даже на прошлогодний PGConf.Russia, давеча проводил вебинар под эгидой Vettabase:

Everything You Probably Never Wanted to Know about NULLs in PostgreSQL

Он пишет: главная проблема в том, что, вопреки популярному заблуждению, NULL-ы вовсе не чётко определённая математическая концепция. Из-за этого реализуется их совсем контринтуитивное поведение, и даже опытные разработчики попадают впросак.

Кстати, в блогах этой консалтинговой компании есть и сравнительной анализ поведения NULL в разных СУБД: NULL comparisons in MariaDB, PostgreSQL, and SQLite — статья директора Vettabase Федерико Раццоли (Federico Razzoli, живёт в Шотландии). Он более всего погружён в MariaDB (издал книжку в О'Рейли Mastering MariaDB). А на PostgreSQL там специализируется Майкл Абоаджи (Michael Aboagye). Например, сравнивает Postgres с AlloyDB: AlloyDB versus PostgreSQL: a performance review.

NULL-значения в PostgreSQL: правила и исключения

Алексей Борщев (@aborschev, Postgres Professional) сделал в своё время один из самых интересных и обстоятельных докладов на PGConf.Russia 2022 — о нюансах логики NULL:

  • Что такое NULL?

  • Как он обрабатывается различными функциями?

  • Как хранится в БД?

  • Индексирование NULL.

Там есть совсем удивительные вещи: промежуток от минус бесконечности до плюс бесконечности входит в промежуток от NULL до NULL, а обратное — неверно. Выходит, что NULL здесь даже несколько больше, чем бесконечность.

Вот его презентация, видео доступно из личного кабинета участника.

Ещё статьи

Postgres Postmaster File Explained

Наверняка вам попадался файл postmaster.pid в директории данных. Он создаётся при старте Postgres и убивается при штатном шатдауне. Что значат цифирки в нём?

An Overview of Distributed PostgreSQL Architectures

Эту статью написал Марко Слот (Marco Slot). Он успел поработать в Citus Data, потом, соответственно, в Microsoft, а теперь он в Crunchy Data. И во всех этих местах он занимался распределёнными архитектурами. Он представляется как founding engineer в Citus. Есть его слайды Distributed PostgreSQL с конференции PostgreSQL Conference Europe 2023.

Марко рассматривает такой набор архитектур и их представителей:

  • Сетевое хранилище на уровне блоков (Network-attached block storage, напр. EBS).

  • Реплики для чтения (Read replicas).

  • СУБД, оптимизированные под облачное хранение (DBMS-optimized cloud storage, напр. Aurora).

  • Мультимастер (мой вольный перевод active-active, напр. BDR).

  • Прозрачное шардирование (Transparent Sharding напр. Citus)

  • Распределённые SQL-хранилища key-value (Distributed key-value stores with SQL, напр. Yugabyte).

Образование

Напоминаем: вышла новая книга: Мониторинг PostgreSQL Алексея Лесовского, скачать книгу можно в формате PDF. Книга охватывает разные стороны мониторинга, в ней есть справочные материалы об имеющемся инструментарии, практические приемы его использования и способы интерпретации полученных данных.

PostgreSQL 14 Internals 1-я в списке The Best of Postgres Weekly in 2023

В январе на Postgres Weekly решили (раньше это был Дэвид Феттер (David Fetter), но кто сейчас — уверенности нет) опубликовать The Best of Postgres Weekly in 2023. И возглавила список книжка Егора Рогова PostgreSQL 14 Internals (перевод Людмилы Мантровой). Дэвид (или не Дэвид) признаётся: странновато, что книга о 14-й версии стала самой популярной ссылкой в 2023, но дорабатывалась долго и остаётся в высшей степени релевантной и к более свежим версиям Postgres. Она докапывается до самых глубин, на её 600+ страницах много диаграмм, примеров кода, позволяющих разобраться в специальных вопросах, будь то блокировки, индексы или исполнение запросов.

Возможности Postgres Pro Enterprise 13

На youtube опубликованы видео учебного курса «PGPRO. Возможности Postgres Pro» по версии 13. Обновления других курсов на 16-ю версию будут появляться в этом году.

PostgreSQL Query Optimization. The Ultimate Guide to Building Efficient Queries

Опубликована книга Генриэтты 'Хетти' Домбровской (Henrietta Dombrovskaya), Бориса Новикова (Boris Novikov) и Анны Бейликовой (Anna Bailliekova). Это второе издание. Книга доступна на Apress и на Amazon. Первое издание уже переведено на русский и издано ДМК-Пресс. Обратите внимание, что читатели оценили книгу в 10 звёзд из 10.

Tuning Autovacuum for best Postgres performance

Да, вакууму посвятили целую книжку, пусть электронную. Автор коллективный — pganalyze.

Learn PostgreSQL

Второе издание книги Луки Феррари (Luca Ferrari) и Энрико Пероцци (Enrico Pirozzi) представили на шоу Дага Ортица (Doug Ortiz) Tech Bits. Есть подкаст на YouTube.

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

© Habrahabr.ru