Postgresso 12 (61)

d6e13f22408bbf940a5b3c2d04a8cf13.jpg

В эти предновогодние дни перегружать вас техническими деталями не будем. И даже не всё в этом выпуске будет вертеться вокруг СУБД и SQL. Начнём, впрочем, с такой вот серьёзной новости:

Postgres Pro Enterprise 16.1.1

В этом релизе очень много нового. Разработчики говорят: в нём, пожалуй, самые значимые изменения лет за 5.

  • BiHA (Build-in High Availability): много говорили про »биху», много где демонстрировали на конференциях и вебинарах. И вот она в релизе. Встроенный отказоустойчивый кластер с физической репликацией, с синхронной и асинхронной репликацией узлов, с встроенным, аварийным переключением (built-in failover) и многим другим.

  • Администратор без доступа к данным — Администратор БД или даже Администратор СУБД не смогут ни модифицировать, ни читать конфиденциальные данные. Всемогущего суперпользователя postgres больше нет — разделение властей.

  • Приоритизация ресурсов (pgpro_rp) — возможность создавать планы управления ресурсами и переключаться между ними, настраивая для сеансов приоритеты использования процессора и операций ввода/вывода.

  • Системные пакеты-аналоги Oracle — существенно упрощают миграцию.

  • Появился новый составной тип — bfile. Он поддерживается расширением pgpro_bfile. Это нужно для доступа к внешнему файлу или S3 в технике, подобной оракловой.

  • Модуль aqo 2.0 сильно отличается от предшественников. Обновили sr_plan и pg_hint_plan.

  • То же можно сказать о pg_probackup 2.7.0 Enterprise и, соответственно, PTRACK Enterprise (и раньше в Pro Standard/Enterprise был один и тот же pg_probackup и PTRACK).

HR-задачки

Моя любимая задача для собеседований по программированию / My favorite coding question to give candidates (and why) — a coding interview question, from the viewpoint of an Google/Amazon/Microsoft interviewer

В блоге RUVDS.com перевод статьи Карлоса Аргуельеса (Carlos Arguelles). Карлос представляется так: за 25 лет работы в техгигантах (Big Tech) я провёл больше тысячи интервью (800 в Amazon в качестве Bar Raiser[то есть дающий финальное «добро»], пару сотен в Microsoft и около сотни в Google, где сейчас работаю.

Вообще-то, здесь он говорит, что не надо преувеличивать значение интервью по программированию, обычно важней угадать лидерские качества. Но в этой статье даёт вполне конкретный пример. Если лень читать статью, то вот эта задачка:

Каждый раз, когда кто-то заходит на сайт, мы делаем запись в журнал, отмечая Timestamp,  PageId и CustomerId. К концу дня у нас формируется большой файл со множеством подобных записей, и для каждого нового дня заводится новый такой файл.

Располагая двумя файлами журнала (для дня 1 и дня 2), мы хотим сгенерировать список «лояльных клиентов», отвечающих следующим критериям: (а) они посещали сайт в первый и второй день, (b) они посетили не менее двух уникальных страниц.

Моя любимая задачка по программированию для кодинг-интервью / My Simple Coding Interview Question

Вил Вен (Wil Wen), другой HR-щик из Google, провёл там в два раза больше интервью. Приводит и разбирает довольно любопытный пример, который интересен не столько сам по себе, сколько интересны способы извлечения из него сведений о претенденте. У перевода под 300 комментариев — ещё бы, эта тема очень волнует. Ну и даёт возможность поумничать :) К оригиналу при этом всего-то 2 комментария, зато в одном из них студент Пенсильванского Университета предлагает, пожалуй, более осмысленную формулировку задачи. В предыдущей статье 170 у перевода против 51 у оригинала, который просмотрели 5 тысяч.

Предновогодний Коммитфест

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

На этот раз в статье-обзоре Павла Лузанова аж 21 пункт.

Появилась возможность создавать триггеры на события ON LOGIN и REINDEX — то есть на подключение к базе данных и при переиндексировании.

3 патча анализа статистики: pg_stat_statements: отслеживание времени появления оператора и сброс min/max статистики; pg_stat_checkpointer: статистика процесса контрольной точки и pg_stats: статистика столбцов диапазонных типов.

Планировщику тоже достались 3 патча: исключение лишних соединений таблицы самой с собой; статистика материализованных CTE и доступ к таблице с несколькими условиями.

psql: отображение привилегий по умолчанию — Павел посвятил этому 2 с половиной экрана примеров — целая небольшая статья.

А вот эти 2 пункта отдают дань совместимости с SQL: Новая функция xmltext и Поддержка AT LOCAL.

Предыдущие статьи серии:  2023–07,  2023–09.

Новая книга

Мониторинг PostgreSQL — книга Алексея Лесовского, опубликована на сайте postgrespro.ru. На этот раз помогало издательство Бумба. В печатном виде книга должна появиться где-то к февралю. Картинки будут цветными, а формат — чуть больше, чем обычно, чтобы вместить графики и примеры кода.

Timescale подглядывает

в хорошем смысле: A Sneak Peek Into the State of PostgreSQL 2023

Появился отчёт Timescale по результатам их (почти) ежегодного опроса. Как всегда с красивой инфографикой.

Вышло 4 таких отчёта: в 2019, 2021, 2022, 2023 (2020 пропустили из-за ковида). На этой странице файлы со всеми четырьмя отчётами.

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

Из отчёта можно узнать, что 44% тех, кто имел дело с Postgres 15 и более лет, хотя бы раз становились контрибьюторами; что 67.8% никогда не посещали мероприятия сообщества даже виртуально; что 36.9% уже используют ИИ, но по-разному относятся к pgvector; что в пятёрку популярных языков разработки пробрался Go.

А вот список 10 самых популярных расширений этого года (вторая цифра — место в 2022):
1/1. postgis,
2/2. timescaledb,
3/3. pg_stat_statements,
4/7. uuid-ossp,
5/4. pgcrypto,
6/5. pg_trgm,
7/9. postgres_fdw,
8. pg_repack (новый, ушёл hstore),
9/8. pg_cron,
10/6. Citus.


В языках в пятёрке появился Go:
SQL 48.2%
Python 39%
JavaScript or TypeScript 24.5%
Java 20%
Go 17.3%

Языки: новые и суперстар

Будущее программирования: языки, зарплата и перспективы в 2024 году

В блоге Ланита Александр Николайчук как Artezio_team (руководит PR в Artezio) опрашивает представителей нескольких компаний:

  • Александр Тырышкин (AliExpress CIS),

  • Максим Сидоров (SberDevices),

  • Алексей Шарыпов (Playrix),

  • Илья Стешков (OZON),

  • Андрей Карсаков (Nau Engine),

  • Петр Туголуков (Xsolla),

  • Антон Мартынов (SimbirSoft).

Разговор был вовсе не о базах данных, но интересно же, что там на уме о разработчиков приложений. Много о новых языках. Я, например, мало чего слышал о Flutter/Dart. Но чаще всего звучат Go и Kotlin. Есть и статья по мотивам 1.5-часовой дискуссии, которую проводило Artezio:  Программируй эффективно: как выбрать язык программирования под свои задачи?

Kotlite и Kotgres: генераторы SQL и JDBC кода на Kotlin для Sqlite и Postgresql

Макс Фарсиков в своей первой статье на хабре пишет в том числе о Kotgres — своей разработке для связывания Kotlin с PostgreSQL. Как минимум название красивое. Что-то на эту тему можно почерпнуть и из комментариев к этой статье.
Но вот что: PL/Kotlin никто, похоже не озадачился.

А вот plgo существует. Сейчас его поддерживает Владо Мадьяр (Vlado Magyar). Но не обновлялось расширение уже год. Сравните с другим прогрессивным языком:

plrust: A Rust procedural language handler for PostgreSQL

Тут всё свежее, поддерживается Technology Concepts & Design, Inc.

Но что, если вы сами собрались подключить некоторый полезный язык как процедурный в PostgreSQL? Как это сделать, рассказывает Марк Вон (Mark Wong, тогда ещё 2nd Quadrant, теперь EDB) на примере языка Julia:

Creating a PostgreSQL procedural language

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

А один из комментаторов напоминает, что учебный пример на эту тему уже был, но мало кто его уже помнит:  PL/LOLCODE. Напоминает автор примера — Джошуа Толли (Joshua Tolley) aka eggyknap.

А вообще тем, кого интересует эта тема, я б посоветовал почитать и статью Ивана Панченко — она не об экзотических процедурных языках Postgres, но многое проясняет: PostgreSQL: Серверное программирование на «человеческом» языке (PL/Perl, PL/Python, PL/v8)

Python лёгкий. Go простой. Простой != лёгкий / Python is Easy. Go is Simple. Simple!= Easy

Автор оригинала — Преслав Рачев (Preslav Rachev). Опять уже не удивляемся, что у оригинальной статьи 1 комментарий, у перевода на хабре — 43. В этой заметке не только «философские» соображения, но есть пример реализации на Python / Go простенькой задачи. Кроме этих двух упоминается — для контраста — и Rust.

А теперь обещанный superstar. Это COBOL:

Все деньги мира зависят от древнейшего языка программирования. Созданное на нем ПО ежедневно управляет триллионами долларов

Такие длинные заголовки сочиняют в CNews. Большая часть статьи предсказуема, но есть интересные подробности. Например, о создании сообщества коболистов. Финал статьи (как и кобола) тоже предсказуем, но подробности интересные:

IBM разработала программный инструмент на основе ИИ, который в автоматическом режиме переводит код COBOL на Java.

Проект IBM получил название Watsonx Code Assistant. По словам Скайлы Лумис (Skyla Loomis), вице-президента IBM по программному обеспечению IBM Z, сервис позволяет транслировать 80–90% COBOL-кода в Java. Оставшееся должен делать программист в ручном режиме, но IBM работает над усовершенствованием Watsonx Code Assistant.

Кстати о COBOL и legacy:

PostgreSQL on s390x

Постгрес на мейнфреймах — экзотика, но не экзотика-экзотика. В реальной жизни мне недавно попадалось обсуждение такого вопроса.

Кристоф Берг (Christoph Berg, Cybertec) напоминает, что для IBM-овского железа уже есть Debian-ы amd64 (Intel/AMD x86_64), ppc64el (IBM POWER) и arm64 (Arm aarch64). Мейнфреймовую программную инфраструктуру (build machine) для сборки версии сначала выложил Маристский Колледж, в начале этого года процесс запустили, но потом её пришлось допиливать сообществу. Чем автор при поддержке своей компании и занимался.

Неоны

Vercel Postgres is now generally available for Hobby and Pro users

Облачная платформа Vercel предлагает побетатестировать их разработку за умеренные деньги. [ (made its Vercel Postgres offering generally available)] А под платформой — Neon: многие разработчики предпочитают хранить реляционные данные в PostgreSQL, мы же, в партнёрстве с Neon предлагаем вам Vercel Postgres — первую бессерверную СУБД в облаке для фронтэнд-разработчиков — можно прочитать здесь.

Это, похоже, становится нередким явлением. Вот тут тур по js-ORM, а Postgres под ними тоже Neon (1:12 на видео):

I tried 8 different Postgres ORMs

ИИ

На грани ИИ: пример поиска и обработки векторов в PostgreSQL + pgvector

Это статья Игоря Сухорукова, который чаще пишет о PostGIS и OpenStreetMap. И здесь тоже можно увидеть красивые картинки с узнаваемыми контурами Москвы реки, Бульварным и прочими кольцами. Неудивительно:  данными для примера служат гистограммы числа объектов детской инфраструктуры в окрестностях жилых домов в Москве.

Цель статьи: показать, как хранить, кластеризовать векторы и искать по ним в базе данных. Кластеризуются они здесь алгоритмом DBSCAN (основанная на плотности пространственная кластеризация для приложений с шумами). В докере устанавливается расширение pgvector, в табличке с 30-ю тысячами записей появляется столбец со скромным типом 11-мерный vector. Но это же демонстрационный пример. Сама кластеризация на Java.

Accelerate HNSW indexing and searching with pgvector on Amazon Aurora PostgreSQL-compatible edition and Amazon RDS for PostgreSQL

Джонатан Кац (Jonathan Katz) протестировал pgvector 0.5.1 на Amazon RDS, сравнивая его с 0.5.0. Заявлено, что в 0.5.1 улучшена работа HNSW, что Джонатан и успешно демонстрирует.

Introducing the azure_ai extension to Azure Database for PostgreSQL

На Azure 0.5.1 тоже доступна. Но тут ещё и специальное расширение azure_ai для работы с Azure OpenAI. Оно же даёт доступ к сервисам Azure AI Language — обычный вызов функции из SQL.

Баг Баунти — с чем её едят

БагБаунти с АстраЛинус или то, что нужно знать о защищённости защищённой ОС

Не понял: Линус опечатка или авторская ирония. Илья Матвейчиков, у которого, как он пишет, богатый опыт ковыряния ядра, решил свой опыт слегка монетизировать, поучаствовав в конкурсе, который объявила Группа Астра: найдите уязвимость в ОС и получите за это деньги (это и есть баг-баунти). Дальше следует история, полная приключений. Не перескажешь, читайте, если корыстно или бескорыстно интересуетесь.

Среди 150 комментариев есть и от собственно AstraLinux_Group — спокойный, сдержанный и многообещающий:

Уважаемые хабровчане, мы очень внимательно относимся к задачам устранения уязвимостей и выражаем благодарность всем участникам нашей программы багбаунти. <...> Развернутый технический анализ ситуации в настоящее время готовим, и он будет опубликован позднее. Ждем ваших новых отчетов, спасибо!

Хэппи-энд

Praise, Criticism, and Dialogue

Великий и совсем не ужасный контрибьютер Роберт Хаас (Robert Haas) призывает пишущих в мейлинг-лист hackers быть добрей друг к другу. Он заметил, что отношение положительных и отрицательных реакций на его патчи когда он был начинающим постгресистом и сейчас изменилось в худшую сторону. Одно из объяснений: если пишет опытный, известный разработчик, то, когда всё хорошо, все молчат, чего, мол, просто так сотрясать воздух, а вот если что не так — откликаются критикой. Поскольку отрицательные отзывы сократить нельзя — они обычно по делу, то можно поработать над этой дробью, внося положительные эмоции. Идею поддержали два Андреаса: Шербаум (Andreas Scherbaum) и Кречмер (Andreas Kretschmer).

Updates on trademark actions against the PostgreSQL community

Милые бранятся только тешатся. Бранились из-за торговых марок милый Альваро Эрнандес (Álvaro Hernández Tortosa) & Fundación PostgreSQL с милым Советом Старейшин — Core Team. Мы за этой историей следили с 2021 потому, что это не о сутяжничестве, и не о рейдерах тем более.

Альваро более 20 лет занимается Postgres, разработчик JDBC-драйвера и многого другого, выступал на PG.Day и PGConf.Russia. В 2021 он призвал к радикальным изменениям в руководящих структурах проекта, прежде всего ему не нравилась непрозрачность решений Core Team. Тогда же предложил разобраться с правовой основой торговых марок, да ещё и озаботился гендерным и расовым балансом. И получил не слишком широкую поддержку сообщества. В этом деле много любопытных подробностей, даже к Postgres-конференции на Ибице это имеет отношение. У нас об этом больше всего в Postgresso 34 и в Postgresso №7 (56), там же можно найти ссылки на документы тех времён.

Дело прошлое, к счастью. Fundación PostgreSQL уступила все торговые марки PostgreSQL Community Association (Канада), которая и занимается постгресовыми правовыми вопросами.

Ну что же, до встречи в 2024!

© Habrahabr.ru