Postgresso #5 (66)

03c16e5aeda4dd64a7b966efe82ed7f4.jpg

PostgreSQL: PostgreSQL 17 Beta 1 Released!

Вышла бета с 188 новшествами. Напомним, что Брюс Момджан недавно подчёркивал важность этого релиза из-за его некоторого уклона в оптимизацию, мол, большое число улучшений в оптимизации, это приятный сюрприз для меня.

В пояснительной записке к релизу тоже начинают с оптимизации. Первым делом рассказывают об изменениях в Vacuum. Там новая внутренняя структура, благодаря которой удалось сэкономить 20% памяти, а также сократить время самой очистки. Последний пункт касается редкой темы: в PostgreSQL 17 улучшена поддержка SIMD-инструкций.

Интересный, важный пункт — управление переключением при логической репликации (failover control for logical replication), важное для отказоустойчивых конфигураций.

В SQL/JSON появилась важнейшая вещь — JSON TABLE, это новый уровень работы с этим форматом. Также появились новые конструкторы и другие функции.

MERGE теперь гибче: появилось предложение WHEN NOT MATCHED BY SOURCE для обработки строк, которые есть в целевой таблице, но не нашлись в исходной. Например, добавить DELETE.

Появилась стандартная роль pg_maintain для того, чтобы под ней можно было выполнять VACUUM,  ANALYZE,  CLUSTER,  REFRESH MATERIALIZED VIEW,  REINDEX и LOCK TABLE.

Окончательный релиз Postgres 17 запланирован на сентябрь/октябрь этого года.

О том, что будет в релизе, мы всегда пишем заранее, поэтому кроме официальных релизных заметок, советуем почитать обзоры коммитфестов Павла Лузанова. Тем более, что только что появился английский перевод части 4: PostgreSQL 17: part 4 or CommitFest 2024–01, перевод Александра Мелешко. Так что теперь полная коллекция:

  • 2023–07 ru/en,

  • 2023–09  ru/en,

  • 2023–11 ru/en,

  • 2024–01 ru/en.

    Русские версии также можно читать на хабре, как и английские в нашем списке.

Что касается беты, то только что вышла вот такая статья:

Exploring PostgreSQL 17: A Developer«s Guide to New Features — Part 1 — PL/pgSQL

В ней Дипак Махто (Deepak Mahto), которого мы нередко цитируем в разделах Миграция, описывает специфическую возможность: по-другому декларировать типы массивов, используя %TYPE и %ROWTYPE. Это упрощает работу и добавляет гибкости.

Конференции, вебинары, митапы и их последствия

PGConf.dev 2024

Конференция прошла 28–31 мая в Ванкувере. В первый день состоялись 2 специализированные встречи.

  • по поводу патчей на Advanced Patch Feedback Session собрались слушать Хейкки Линнакангаса (Heikki Linnakangas), Мишеля Пакье (Michael Paquier) и Роберта Хааса (Robert Haas), без свидетелей — только по приглашениям;

  • Extension Ecosystem Summit с Дэвидом Кристенсеном (David Christensen), Девримом Гендюзом (Devrim Gündüz), Джереми Шнайдером (Jeremy Schneider), Китом Фиске (Keith Fiske) и, конечно, с Дэвидом Уилером (David E. Wheeler, тот самый, который основал PGXN, а теперь с Tembo).

(Между прочим, Роберт Хаас приоткрыл уголочек завесы над Advanced Patch Feedback Session. Одной из тем был переход с многопроцессной модели на многопоточную. Теперь эта тема опять интенсивно обсуждается в рассылке hackers с сабжем [multithreading] «extension compatibility»).

(Между-прочим-2: Tembo уже выложило плейлист с 6 мини-саммитами по расширениям. У Дэвида Уилера будет доклад на эту тему на POSETTE 2024: State of the Postgres Extension Ecosystem.)

А вот что пишет Питер Айзентраут (Peter Eisentraut) об этой конференции в своей забавной статье — How engaging was PGConf.dev really?

«Пора уже прекратить эти конференции. Из-за них вся разработка останавливается» — цитирует шутник Питер шутника Томаша Вондру (Tomas Vondra).

Питер подсчитывает (средствами Postgres, конечно) перерывы в коммитах за время конференций. И приходит к выводу, что во время PGConf.dev случился самый длинный перерыв за 20 лет! В 2015 был перерыв перед pgconf.eu, перерывы в 2014 и в конце 2008 не коррелируют с конференциями, зато в мае 2008 пауза как раз пересеклась с PGCon того года.

Ну, а Роберт Приподнявший Завесу пишет в своём блоге о прошедшей конференции восторженно: в двух первых фразах три раза повторяется слово great. Но дальше Роберт не то, чтобы открывает кусочек, а прямо таки откидывает полог, давая ссылку на такой вот документ.

К этой же теме можно отнести и такую статью (сегодня Роберт Хаас прям герой номера): Hacking on PostgreSQL is Really Hard.

«Многие согласятся с этим утверждениям, но по разным причинам. Одни, может, пожалуются на тип дискурса в почтовых рассылках, другие сетуют, что ревьюеров патчей днём с огнём, третьи — что чувствуют себя заложниками капризных коммитеров. Но сегодня я не об этом: хочу сосредоточиться исключительно на технической стороне.»

Чтобы никого не смутить, Роберт берёт пример из собственного опыта: о патчах по инкрементальному бэкапу. Их в результате было под 20, и с ними он (и не только он) возился чуть ли не год. И с этой темы он сворачивает опять в ту же сторону: очень трудно вырваться из узкого круга коммитеров — ведь это люди с огромным опытом, заменить их трудно. Замкнутый круг.

Но мы забыли об остальных участниках и остальной программе. Совсем коротко:

на второй день среди прочих выступала Алёна Рыбакина, подготовившая доклад вместе Андреем Лепиховым (оба Postgres Professional), Adaptive Query Optimization In PostgreSQL. Есть PDF этого доклада.

Андрей Бородин из Яндекса представил доклад Tricks From In-Memeory Databases. Вот слайды.

Новый жанр: прекоммитфест

Отголоски той же темы — если не кризиса, то некоторой тревожности. На Saint HighLoad++ 2024 запланирован воркшоп Postgres Pre-Commitfest Party. Это была инициатива Андрея Бородина (Yandex Cloud) как путь разрешения проблем с коммитфестами, которые мы относительно подробно описали в предыдущем выпуске. Андрей предложил обсуждать грядущие патчи сначала вне инфраструктуры коммитфестов. Организаторам Highload++ понравилась идея, а в Postgres Professional поддержали, и теперь помогут советами Олег Бартунов (Major Contributor) и Фёдор Сигаев (Major Contributor и FreeBSD Contributor), люди опытные.

Главная проблема, которую имеющаяся инфраструктура коммитфестов решает не всегда эффективно, это нахождение ревьюера, который проверит патч и поспособствует его продвижению в сообществе. Вот как раз Прекоммитфест и поможет в этом, надо только подать заявку. Речь идёт о патчах в 18-ю (!) версию Postgres. Организаторы пишут:

Внушительное количество разработок уже перенесено из версии 17, что-то ещё добавится до июля. В преддверии коммитфеста, предлагается встретиться разработчикам патчей и договорится о совместной работе. Приоритизировать какие-то разработки, продвинуть среди потенциальных ревьюеров свой патч, услышать быстрый feedback от сообщества, собравшегося на StHL. Если вы хотите попробовать найти ревьюера — подготовьте короткий (на 2–3 минуты) рассказ о своём патче.

Ну, а в основной части конференции будут, например, такие доклады:

Балансировка нагрузки шардированного PostgreSQL не своими руками -, а при помощи SPQR, инструмента для шардирования PostgreSQL. Денис Волков, Yandex Cloud.

Кэширование пользовательских данных в СХД: реализация протокола синхронизации кэшей в Active-Active-кластере — мультимастер, но «железный». Михаил Мотыленок, YADRO.

Меньше кода, больше результата: применяем SQLC для работы с БД — работа на Go с PostgreSQL. Евгений Конечный, Uzum Tezkor (узбекский стартап).

PGConf.СПб 2024

Пройдет 1 октября. Регистрация открыта, приём докладов тоже. Докладчикам компенсируют трансфер и пребывание в городе во время конференции.

В честь грядущего события устроители делятся записями выступлений с PGConf.СПб 2023, доступными ранее только через личный кабинет. Начали вот с этого:

Фенсинг в облаках и не только… — это доклад Игоря Косенкова (Postgres Professional). Сейчас появились плейлисты: 1-й день и 2-й.

Олимпиады, состязания

XV Международная олимпиада в сфере информационных технологий «IT⁠-⁠Планета 2024»

Так почему-то называется большое видео, которое начинается с доклада Егора Рогова, директора по разработке образовательных программ в Postgres Professional. Сам доклад Егора называется так:

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

Вы удивитесь, но да, должны :) Не пугайтесь заявленной продолжительности ролика (без десяти минут три часа): Егор говорит минут 25, потом доклад Игоря Сычёва из Сбертеха, далее доклад по 1С и в конце этого огромного видео большой доклад по образовательному программно-аппаратному комплексу Рудирон от Аквариуса.

Название доклада взято из статьи Back to Basics Джоэла Спольски (Joel Spolsky), известного как автор Trello, сооснователь Fog Creek и Stack Overflow. Но Егор опирается даже больше на другую его статью — о Законе дырявых абстракций, The Law of Leaky Abstractions, тоже в его блоге Joel on Software. Все нетривиальные абстракции дырявы, соглашается Егор с Джоэлом. Провалиться в такую дыру можно из-за проблем в производительности, например. Много и других примеров.

Егор имеет самое прямое отношение и к теме всего видео. Вот его недавняя статья:

«IT-Планета 2024»: задачи второго этапа по PostgreSQL

1-й этап — заочный теоретический тест по PostgreSQL, из почти 3000 человек отобрали примерно 200. Вопросы для этого этапа были подготовлены Евгением Давыдовым.

2-й этап — также заочный. Здесь участникам было предложено подумать над пятью задачами Егора Рогова. Их он и разбирает в этой статье.

Финал (3-й этап) Олимпиады проходил очно в Архангельске. Вот победители, номинаций очень много. В дисциплине PostgreSQL это:

  1. Александра Сухотина (Санкт-Петербургский политехнический университет Петра Великого),

  2. Ян Сенин (Белорусский Государственный Университет) и

  3. Ву Нам Хоай (опять СПб Политех).

Разбор 3-го этапа появится в ближайшее время.

UPD: Задачи третьего этапа по PostgreSQL

Не задачи, а задача — поправляет сам себя Егор. Она была всего одна, но большая. Требовалось написать SQL-запрос, играющий в крестики-нолики «пять в ряд».

Не совсем такие, в которые мы все когда-то играли — не на «бесконечной» доске, то есть листке клетчатой бумаги. В задаче поле 19×19. Решение должно состоять из одного SQL-запроса.

Организаторы предоставили соискателям веб-приложение, которое соорудил Илья Баштанов, в нём необходимо регистрировать свои запросы. Приложение упрощало отладку, позволяя пробовать и визуализировать произвольное количество вариантов. Базовый алгоритм для подобных игр называется минимаксом, он легко гуглится, а у участников был полный доступ к интернету.

Далее идёт разбор алгоритма, который набросал сам Егор. С ним почти совпал алгоритм победительницы — Александры Сухотиной.

Вот для сравнения разбор прошлогодних задач второго этапа олимпиады «IT-Планеты» по PostgreSQL и Задачи третьего этапа.

И бег

Фестиваль Спорта и ИТ

Фестиваль, который организует RUNIT, проходит с 2018 года:»для нас бег и ИТ — это неразделимые вещи, в основе того и другого — движение к цели. Спорт учит нас принимать быстрые и правильные решения и играть вдолгую».

Медали сотрудника отдела Образования Postgres Professional Павла Толмачёва

Медали сотрудника отдела Образования Postgres Professional Павла Толмачёва

Образование

Путеводитель по базам данных

Издательство ДМК Пресс. Автор — Владимир Комаров — ИТ-специалист широкого профиля: программист, администратор баз данных, архитектор данных и инфраструктуры, преподаватель и немного евангелист.

Подготовкой книги к печати занимался Отдел Образования Postgres Professional. Так что очень рекомендуем.

Книга рассказывает об архитектурных принципах, на которых базируются все современные системы управления базами данных, а также об алгоритмах и структурах данных, которые в них используются. Особое внимание уделено сравнению реализаций одних и тех же подходов в близких по функциональности платформах.

Эту книгу следует прочесть всем, кого не устраивает уровень подготовки на трехмесячных курсах типа «войти в айти». Практическим знаниям она даст прочный фундамент в виде понимания общих закономерностей. Книга написана для архитекторов информационных систем и ведущих разработчиков. Иными словами, для элиты и для тех, кто хочет ей стать.

Оглавление книги:

  • Часть I. Классификация баз данных

  • Часть II. Доступ к данным

  • Часть III. Архитектура СУБД

  • Часть IV. Распределенные базы данных

  • Часть V. Восстановление при сбоях

  • Часть VI. Эксплуатация баз данных

  • Часть VII. Безопасность баз данных

4e92d887960324cb13389d27356468a0.jpg

Можно скачать книгу в формате PDF.

Антипаттерны SQL. Как избежать ловушек при работе с базами данных

В книге Издательского дома «Питер» речь о SQL, не Postgres. Больше на примерах из MySQL 8.0, но в тексте также упоминаются другие популярные РСУБД. В примерах кода используется Python 3.9+ или Ruby 2.7+. Это перевод книги Билла Карвина (Bill Karwin). Просто информируем, ещё не читали.

Небольшой эпизод из жизни образователей

Моим коллегам в Отделе образования Postgres Professional регулярно приходят вопросы. Что-то непонятно в учебных материалах, иногда находят опечатки/ошибки/неточности — все мы люди. Возник, например, такой вопрос по курсу DBA2:

Если на табличной странице осталось очень небольшое свободное место (например 2 байта) — такая информация тоже будет отображена в карте свободного пространства?  Или есть какой-то предел и в карте свободного пространства отображается свободное место только больше определенного размера?

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

PostgreSQL. Устройство карты свободного пространства

Это статья Михаила Гилёва @o4ina на 24 минуты чтения, как считает хабр. В ней обсуждаются вопросы:

  • Что такое категории FSM страницы.

  • Как устроено дерево категорий на листовой FSM странице.

  • Как устроены нелистовые FSM страницы и дерево FSM страниц.

  • С чего начинается поиск свободного пространства в древовидной структуре FSM.

  • Как устроен алгоритм поиска нужной категории.

  • Как устроен алгоритм обновления категорий.

  • Какие есть особенности работы FSM слоя для индексов.

  • При каких обстоятельствах FSM страницы блокируются.

  • При каких обстоятельствах необходимо восстанавливать FSM страницы.

  • Когда FSM используется при вставке новых версий строк.

Безопасность

Protecting Personally Identifiable Information in PostgreSQL: A Critical Requirement for Financial Organizations

Статья пера Умейра Шахида (Umair Shahid, Stormatics). Он делит задачи безопасности на безопасность перемещающихся данных — там обычно TLS (Transport Layer Security, безопасность транспортного уровня) и безопасность хранящихся данных. Здесь уже есть выбор:

И дальше объясняет, как это осуществить с имеющимся инструментарием Postgres. Например, используя модуль pgcrypto, который как раз даёт возможность выбирать столбцы для шифрования. А для TDE рекомендует почитать рекламный проспект EDB.

Имеется ещё как бы Book от Crunchy Data:

Data Encryption in Postgres: A Guidebook

Это никакой не бук, конечно, а такого же жанра сводка основных общих принципов. Но широта охвата немного другая. Грег Ноукс (Greg Nokes) по каждому пункту даёт за и против, тоже разбивая на шифровку лежачих (at-rest encryption methods) данных и передаваемых (шифрование на лету — on the fly). Но в этой статье пишет о лежачих и начинает с ОС.

За:

  • Прозрачно для приложений и базы.

  • Упрощает поддержку, так как приложимо ко всему слою хранения.

  • Делегирует шифровку/дешифровку ОС.

  • Минимально сказывается на производительности.

  • Широко известные и понятные технологии.

    Против:

  • Менее гранулярное управление для конкретных баз и таблиц.

  • По умолчанию бэкапы не шифруются.

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

Это один из 4 методов, вот все 4:

  1. На уровне ОС.

  2. Шифровка на уровне устройства хранения.

  3. TDE (у Грега почему-то расшифровывается как Transparent Disk Encryption, видимо, опечатка).

  4. Шифрование на уровне приложения.

После этого Грег формулирует некоторые рекомендации общего характера.

Crunchy Data and Center for Internet Security Announce Benchmark Update for PostgreSQL 16

В Crunchy Data всегда немало усилий уделяли безопасности. CIS Center for Internet Security (CIS) — некоммерческая структура, занимающаяся безопасностью в разных сферах ИТ. CIS-бенчмарки — важная составляющая их деятельности. Это бесплатный софт, оценивающий системы с точки зрения безопасности. Таких бенчмарков у них пара дюжин. Среди них, конечно, и для PostgreSQL (для оракловых продуктов — 5, IBM-овских — 6). Новый бенчмарк — продукт взаимодействия компании Crunchy Data и CIS.

PGMeetup: Разработки Postgres Pro для повышения безопасности и защиты данных

На митапе выступил старший технический консультант Postgres Professional Андрей Гусаков. По таймкодам можно посмотреть:

HR в персонах недели

Неожиданно — я не припомню подобного — персоной недели (Postgres Person of the Week) стал не разработчик, а рекрутер Филлип Маркс (Philip Marks).

Миграция

Code Conversion Chronicles — Trigger Order of processing in Oracle to PostgreSQL Migration

Дипак Махто добавил ещё одну статью к своей коллекции хроник миграции с Oracle. Таким образом список из предыдущего выпуска принимает такой вид:

The Ultimate Multi-Database Data Comparison Tool

pgCompare — опенсорсная утилита, разработанная в Crunchy Data для упрощения и совершенствования сравнения в базах PostgreSQL, Oracle, MySQL и MS SQL. О ней рассказывает Брайан Пейс (Brian Pace).

An assistant to copy data from a remote server

Флоран Жардэн (Florent Jardin) в своём блоге пишет: во время недавней PG-сессии, организованной Dalibo, я вёл воркшоп на французском о том, как мигрировать на PostgreSQL, используя FDW. Это был повод представить публике расширение db_migrator (идея была взята из data2pg Dalibo) о котором я уже писал в статье On the road to freedom with db_migrator.

Но по ходу воркшопа я обнаружил, что копирование мигратором поддерживается не полностью. При помощи низкоуровневой функции можно переносить таблицу за таблицей, разбросав перенос по разным процессам, но есть немало ситуаций, когда придётся написать немало SQL-запросов. Поработав над этим несколько месяцев, я изготовил на PL/pgSQL Ассистента, упрощающего эти действия.

DBMate 2.16

Эту утилиту миграции сделал Адриан МакНил (Adrian Macneil), она работает из командной строки, с ней можно работать из разных языков и фреймворков. Автор предлагает сравнительную таблицу с другими инструментами.

pgRoll 0.6 (и не только)

Эта утилита миграции претендует на то, что и схема исходная, и схема целевая будут продолжать параллельно работать — даже если при миграции обнаружатся фатальные проблемы. При миграции создаются представления, сами таблицы до поры до времени не затрагиваются. Ещё заявлена обратимость изменений. Здесь некоторые пояснения. В версии 0.6 добавилось полдюжины улучшений. Утилита опенсорсная.

Разрабатывает и поддерживает её компания Xata. Она на многое претендует. Например, на бессерверный Postgres и даже утверждает, что это единственная платформа бессерверного Postgres (даже обидно за Neon). Мол, построенная поверх PostgreSQL, Xata обеспечивает механизмы полнотекстового и векторного поиска. Поиск действительно довольно гибкий: можно искать не только в отдельных таблицах, но и в заданных столбцах, которым можно присваивать веса, есть нечёткий поиск. К отдельным записям можно приаттачивать файлы, расширены возможности агрегации, схему можно легко ветвить. Есть интеграция с ChatGPT через API. Внутри, видимо, в основном REST, на пользовательском уровне поддерживаются TypeScript, Python и взаимодействие через JSON.

Вот здесь сравнивают Xata с Neon. Xata сильно опережает по поддерживаемым платформам. Большие планы, немалые инвестиции. На фотографии человек 30 сотрудников.

Мультимастер — true и не только

Мифы и реалии мультимастера в архитектуре СУБД PostgreSQL

На канале True Tech — доклад на MTC True Tech Day 2024 Павла Конотопова и Михаила Жилина (оба Postgres Professional) о том, что такое «Честный Мультимастер» и существует ли он на самом деле, какие реализации у него есть и как его можно применять. В финале,  — говорят докладчики, — сместим фокус на производительность «Мультимастера». Ведь если СУБД работает медленней черепахи, то это уже не база данных, а черепаха :)

Тема важная для компании и просто интересная. На PGConf.Russia 2023 был доклад Андрея Рудомётова, разработчика Postgres Professional: Привет, встроенный мультимастер? Сравнение двунаправленной репликации в ваниле и Postgres Pro Multimaster, где Андрей тоже об этом: в первых обзорах за внешнее сходство получающегося кластера с мультимастером Postgres Pro фичу окрестили «встроенным мультимастером» — разберемся, насколько они похожи на самом деле, и посмотрим, что там внутри.

Выражена эта тема и в текстовом виде: на хабре есть трёхчастная статья, целое исследование Конотопова и Жилина по мотивам их доклада на HighLoad++ 2023: Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL. Части1, 2 и 3.

misc

Unleashing PostgreSQL Performance: Exploring the Power of pg_profile

Индийский стартап с приятным названием OpenSource DB в своём блоге вспомнил о мощном диагностическом средстве — pg_profile Андрея Зубкова. Коротенькая заметка, ничего сенсационного, но сам факт обращения к этому, как выразился автор, Венкат Ахил (Venkat Akhil) game-changing инструменту, примечателен. Он установил новейшую версию — 4.6, где Grafana. Вообще в блоге они пишут на разные темы, связанные с Postgres: производительность, тестирование, мультимастер (active-active).

Administering a Patroni Managed PostgreSQL Cluster

Робер Бернье (Robert Bernier, Percona) показывает, как запустить и конфигурировать Spilo — то есть HA PostgreSQL-кластер на Patroni в docker-контейнере, его предлагает Zalando. В нём: на одном узле HAPROXY, на трёх — ETCD, один из 3 узлов ведущий, 2 реплики, на всех PostgreSQL. Меняет параметры, перестартовывает, проверяет отслеживание репликой изменений.

Optimizing Performance in PostgreSQL: Join Column and ANY Filters

Дипак описал интересный случай неэффективной работы планировщика с ANY и IN, а Лукас Фиттл (Lukas Fittl) из pgananlyze заинтересовался и разобрал тему у себя — Postgres Planner Quirks: JOIN Equivalence Classes and IN/ANY filters (видео-версия) — в очередном выпуске огромной серии PG-пятиминуток.

При соединении таблиц фильтр с выражением ANY (ARRAY[1,2,3]) не прикладывался должным образом к обеим таблицам, а если написать IN (1,2,3), то он преобразовывается к тому же ANY (ARRAY[1,2,3]) с тем же результатом. В конце концов Дипак перехитрил оптимизатор, добавив некоторую «лишнюю» строчку.

Лукас забирается под капот поглубже, вспоминает о параметризованном индексном сканировании (Parameterized Index Scans), классах эквивалентности (Equivalence Classes) и о соответствующих фильтрах, привлекает опыт Тома Лейна (Tom Lane) и Томаша Вондры (Tomas Vondra), сталкивавшихся с подобными вопросами. На сцену приглашаются конструкции с USING и ORDER BY. Приёмом, аналогичным уловке Дипака, Лукас добивается ускорения запроса в 2000 раз.

Обзор открытых свободных инструментов для создания резервных копий СУБД PostgreSQL

Это статья хорошо известного автора-практика: Михаила Шурутова, @shurutov.Он не один раз выступал на PGConf.Russia, вёл мастер-классы. Но, как ни странно, на хабре это его 1-я публикация. И она интересная.

Михаил приводит таблицу, где расставляет галочки (есть/нет) для 5 таких инструментов:

  • barman — этот продукт представляет собой интерфейс к двум режимам создания РК с помощью встроенных в (поставляемых с) СУБД возможностей создания РК.

    1. старый (до версии 9.0 физические РК на горячую создавались только таким способом):  pg_backup_start ( label text [, fast boolean] ) && <копирование файлов инстанса> && pg_backup_stop (до 14-й версии включительно:  pg_start_backup … pg_stop_backup)

    2. новый (с версии 9.0):  pg_basebackup

  • pg_probackup — ВНИМАНИЕ!  в обзоре рассматривается только открытая свободная версия, доступная с гитхаба! Postgres Pro Backup Enterprise в обзоре не участвует.

  • pgbackrest

  • wal-g

Михаил не стесняется признавать и исправлять неточности, в статье аж 4 апдейта. Как минимум эта статья неплохая стартовая точка для дальнейшего обсуждения.

ИИ

The 150x pgvector speedup: a year-in-review

Лучший, наверное, специалист по pg_vector, Джонатан Кац (Jonathan Katz), пишет, что хотел сделать обзор за год, но впечатлился выходом целых трёх тестов производительности векторных баз (Postgres там векторная с учётом расширения pgvector). Но условия проведения тестов ему не понравились, нашёл некорректности. Решил потестировать сам, напоминая, что важнейший параметр это recall.

Для тестирования он использовал фреймворк ANN Benchmark, но для этого пришлось залезть в код pgvector. Изменения есть в статье. Он гонял версии от 0.4.1 (её уже даже нет на гитхабе) до 0.7.0 (с тех пор вышла ещё 0.7.1) с IVFFlat и с HNSW. Где возможно он использовал распараллеливание и SIMD-инструкции.

Ну, а в конце те самые 150 раз. Но оказывается, что это 150-кратное ускорение построения индекса в версии 0.7.0 по сравнению с 0.5.0. В статье масса технических подробностей. В самом конце благодарит за огромный вклад Эндрю Кейна (Andrew Kane), а также (за не огромные, но) вклады Хейкки Линнакангаса (Heikki Linnakangas), Натана Боссарта (Nathan Bossart),  Павла Борисова (Pavel Borisov) и Арду Айтекина (Arda Aytekin).

Что же, тогда слово Павлу Борисову (ныне в Supabase):

What’s new in pgvector v0.7.0

Вообще таких радикальных изменений, как появление нового типа индексов (HNSW в 0.5.0), в этой версии нет, но всё же достойны внимания:

  • векторы float16 (до этого поддерживались только 32-битные);

  • разреженные векторы (sparse vectors, экономия места для векторов с многими нулями);

  • бинарная квантизация (bit vectors).

Новые алгоритмы расстояния и функции расстояния:

Helping PostgreSQL professionals with AI-assisted performance recommendations

Франческо Тизьё (Francesco Tisiot, Aiven) вызвался помочь. И Postgres-профи, и своей компании: он рекомендует Aiven AI Database Optimizer. Этот софт даёт рекомендации по индексам и по переписыванию SQL-запросов. Пока что для ранних пташек она бесплатна.

Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

Антон Околелов @varanio, отрекомендовавшийся как Go-тимлид, ведущий канала crossjoin, предлагает в блоге компании Karuna небольшое практическое руководство. Пользоваться библиотекой Саши Баранова.

pgvector-remote

Эту штуку придумали в Georgia Tech. В статье сначала сравниваются плюсы и минусы pgvector в Postgres и векторной СУБД Pinecone. А затем предлагают новую парадигму: удалённое индексирование с pgvector-remote. Можно хранить метаданные в Postgres, а сами эмбеннинги в Pinecone (в сосновой шишке). Пока работает только связка Postgres-Pinecone, но в планах и другие векторные: Milvus и его собратья.

Operationalizing Vector Databases on Postgres

Tembo предлагает бесплатно поэкспериментировать с их стеком на Tembo Cloud или запустить векторную базу локально в docker. В этой короткой статейке говорится о расширении pg_vectorize,, но в руководстве к VectorDB приводится весь стек, где есть и pgvector. Вот этот стек:

  • pg_stat_statements;

  • pg_vectorize в качестве простого интерфейса для генерации эмбеддингов из текста, хранения их в Postgres, чтобы потом искать близкие векторы, используя pgvector;

  • pgvector — поиск сходных векторов, можно хранить эмбеддинги, создавать индексы;

  • pgmq используется расширением pg_vectorize для очередей работ и отделения вычислений эмбеддингов от исходных данных;

  • pg_cron используется pg_vectorize для регулярных обновлений эмбеддингов;

  • можно установить дополнительные расширения из Trunk.

А что делается у баз-соседей?

Experimenting with Vector Databases: Chromadb, Pinecone, Weaviate and Pgvector

Исключительно для контекста: как с этим дела у коллег по СУБД-цеху? Статья написана Вишной Сиваном (Vishnu Sivan) осенью прошлого года, но в ней расписано по шагам, как инсталлировать, соединяться с этими базами, создавать индексы. Используются простенькие примеры с Python.

Large Language Models Meet Teradata Vantage

Четан Хирапара (Chetan Hirapara) из Teradata пишет о том, как построить рекомендационный сервис, используя внутреннюю функцию базы TD_VectorDistance для косинусной близости (cosine similarity) в Teradata Vantage, а для эмбеддингов -FlagEmbeddingот Hugging Face. Кусочки кода на Python. На выходе красивые диаграммы.

А вот что делается в мире Snowflake — одной из самых быстроразвивающихся СУБД с идеологией … эээ … которая всё больше размывается.

В 2020 директор Снежинки Фрэнк Слутман (Frank Slootman) признался: мы, мол, хотели создать облачную РСУБД — WH с вертикальным хранением, чтобы данные хорошо обрабатывались в архитектуре MPP, но получилось нечто большее. Ну, а сейчас в их релизах и блогах не днём с огнём не найдёшь упоминания SQL — всё данные-данные-данные.

И вот Фрэнк уже не командует, с февраля 2024 компанию возглавляет Сридхар Рамасвами (Sridhar Ramaswamy), который руководил купленным Снежинкой стартапом Neeva, специализировавшимся на поиске с ИИ. Соответственно, в компании повернули в эту сторону не только маркетинг, но и разработку. Например, появился Universal Search — с ИИ, конечно, но кроме того он умеет искать по всем ресурсам компании: по базам и файлам, в том числе в апачевского формата таблицах Iseberg. Удивительно было бы, если б Снежинка не поддержала Айсберг. Но поддержка его появилась совсем недавно — как Polaris Catalog, о чём давеча объявили на Snowflake Data Cloud Summit 2024. И тут же, и там же: компания Immuta объявила о Granular Data Policy Support for Snowflake Iceberg Tables. Эксперты отрасли порадовались: хайп-хайпом, а о самих данных не забывают.

Mistral AI Unveils Codestral, Its First GenAI Model For Developers

Модели французской компании Mistral, которой всего-то год, популярны прежде всего потому, что они open source. Они не рекордсмены, но Mixtral 8×7B успешно состязалась с GPT-3.5.

А 29 мая появилась Codestral 22B, которая ориентирована на кодирование и, как говорят, превосходит умом конкурентов, например Llama3 70B компании Meta. Поддерживает 80 языков программирования, многие фреймворки. Можно её использовать и для обучения языкам. Она запрещена для коммерческих целей, нельзя её использовать даже просто сотрудникам компании, если компания коммерческая.

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

© Habrahabr.ru