Жизнь продолжается. Продолжаем знакомить вас с самыми интересными новостями PostgreSQL

Главная новость


Feature Freeze
Функциональность 13-й версии PostgreSQL заморожена. Теперь только доработки и исправления багов. Список нового, вопреки многим ожиданиям, довольно обширный. Читайте нашу статью
Много ли нового в «Чёртовой дюжине», где много примеров. Но и в разделе Статьи Postgresso есть ссылки на статьи, посвященные отдельным фичам.

Релизы


Postgres Pro Enterprise 12.2.1

В этой версии совмещены новшества PostgreSQL 12 и особенности ветки Enterprise.
Расширение multimaster: как и в 11.x, и в других версиях Enterprise, рекомендуется использовать в конфигурации 2+1, когда один из узлов рефери. Подробнее в документации. А ещё теперь можно проверить согласованность данных на узлах кластера, используя функцию mtm.check_query().

В CFS теперь можно выбирать алгоритмы сжатия. Поддерживаются zstd (по умолчанию), zlib и pglz, но можно добавить другие алгоритмы.

Ещё одна ударная фича Enterprise — механизм PTRACK, необходимый для эффективной работы нашего приложения pg_probackup, — был основательно переработан и получил новый внешний API. Чтобы резервные копии, уже созданные с PTRACK в pg_probackup, работали в Postgres Pro Enterprise 12.x, нужно обновить pg_probackup до версии 2.2.6 или выше и настроить копирование PTRACK заново.

Важный патч дедупликации индексов B-tree (автор Анастасия Лубенникова, Postgres Professional) в PostgreSQL 13, но его функциональность уже есть в Enterprise 12.2.1. Причем исключение дубликатов можно отключить для создаваемых индексов, воспользовавшись параметром deduplicate_items команды CREATE INDEX. Об этом есть здесь.

Ещё о нескольких новшествах кратко:

  • Встроенный пул был экспериментальной фичей, теперь доработан до штатного режима.
  • Добавлено расширение pgpro_stats, которое не только собирает статистику выполнения SQL-операторов, но и подсчитывает статистику событий ожидания.
  • Для улучшения мониторинга в представление pg_stat_activity добавлено поле wait_state_id.
  • В PostgreSQL 12 сокращен объём записей в WAL, генерируемых при создании индексов GiST, GIN и SP-GiST, в Postgres Pro это учли, но внесли изменения так, чтобы при этом формат индексов не поменялся.
  • Добавлен параметр plan_cache_lru_memsize, ограничивающий объём памяти, которая может быть выделена для подготовленных операторов. По умолчанию это ограничение теперь равно 8 МБ, а если задан и «старый» параметр plan_cache_lru_size, который задает не объем, а количество подготовленных операторов, то действовать будет ограничение, достигаемое первым.

Вышла и Postgres Pro Standard 12.2.1. Поскольку отличия от PostgreSQL в Standard не столь радикальны, как в Postgres Pro Enterprise, то просто отсылаем к чейнджлогу.

pgAdmin 4 version 4.20

В этом релизе добавлены Collation, FTS Configuration, FTS Dictionary, FTS Parser, FTS Template, Domain, Domain Constraints, и Types для Schema Diff.

О релизе читайте здесь, а загрузить можно отсюда.

WAL-G v0.2.15

В новой версии яндексовского бэкапа можно сокращать отставание (lag) реплики командами catchup-push и catchup-fetch, создавая инкрементальный бэкап от заданного LSN с отставшей реплики. Появилась поддержка шифрования Libsodium, повторной попытки (Retryer) для AWS.

repmgr 5.1

Бэкап от 2ndQuadrant обогатился существенными доработками: теперь требование, чтобы пользователь repmgr был суперюзером базы данных убрали отовсюду, откуда возможно. Обычный пользователь базы может копировать свою базу, а пользователь с ролью REPLICATION будет задавать соединения и слоты (если нужно). Но некоторые операции все же требуют опции -S | --superuser. Загружать отсюда.

pgBackRest 2.25

Главная новость этого релиза — LZ4-сжатие. Добавлена полезная опция: --dry-run для команды expire: можно просмотреть какие бэкапы/архивы будут удалены этой командой, ничего не удаляя. Можно ограничить размер бэкапа величиной, сообщенной в начале копирования, полагаясь на проигрывание WAL в случае распухания файла.

check_pgbackrest 1.8

Вышла и новая версия утилиты мониторинга BackRest-а (ее разрабатывает не CrunchyData, как сам pgBackRest, а Dalibo). Появилась опция --list-archives: распечатать список всех заархивированных сегментов WAL.

pgmetrics v1.9

Появился сбор метрик с AWS RDS и Aurora, сбор определений индексов, типов и количества бэкендов, проверка версий и окружения перед вызовом функций. И можно SET ROLE перед началом сбора метрик опцией --role. Релиз на гитхабе.

pg_show_plans

Расширение, которое предлагает испробовать Ханс-Юрген Шёниг (Hans-Jurgen Schonig) из Cybertec, позволяет смотреть одновременно сразу все планы инстанса, активные в данный момент — прямо пока они еще исполняются. Он поясняет их работу в собственном блоге и на сайте компании. И не только он. pg_show_plans даже уже обсудили на Вторниках у Самохвалова (см. наш раздел Вебинары). Кстати, расширение pg_query_state, которое доступно в Postgres Pro Standard/Enterprise, интересная альтернатива. Но к ванильному PostgreSQL придется приложить патч.

Joe 0.6.2/1/0

Каемся: о появлении этой утилиты с интерфейсом чат-бота мы написали по две строчки в прошлом и позапрошлом Postgresso, хотя она достойна большего. Этот DBA-бот, как его называют разработчики из Postgres.ai, представляет собой инструмент для тестирования изменений в базе, не подвергая опасности промышленную базу, но и без долгого копирования в тестовую среду (терабайтные базы копируются за секунды). К тому же этот тестовый ресурс разделяемый: десяток разработчиков могут работать одновременно. Подробности Анатолий Станслер рассказал в докладе на Highload++, советуем посмотреть.
В версиях 0.6.2 и 0.6.1 только багфиксы, но зато в 0.6.0 появились интересные вещи: работа с гипотетическими индексами (с расширением HypoPG). С гипотетическими индексами работают составные команды, начинающиеся на hypo. Например: hypo reset — убить все гипотетические индексы. Новая команда plan отдаёт план, не исполняя запрос.

Pyrseas 0.9.1

Эта версия расширения-утилиты для описания схемы БД на YAML/JSON, сверки схем БД с заданной отличается от предыдущих версий в основном поддержкой PostgreSQL 12. Вот страничка на PGXN.

pgFormatter 4.3

Добавлены две опции, починены баги:

  • -r | --redshift для ключевых слов AWS Redshift;
  • -N | --numbering добавляет к каждой строчке префикс вида /* Statement # n */;
  • поправили форматирование внутри предложения с WITH;
  • поправили форматирование скриптов при работе с psql;
  • кроме того добавлено несколько встроенных функций к списку PostgreSQL-функций.

pg_timeout 0.0.1

И еще одно расширение: с ним можно установить для сессии таймаут бездействия, определив его в двух GUC:

  • pg_timeout.naptime: сколько секунд фоновый процесс спит между проверками бездействия (10 сек. по умолчанию)
  • pg_timeout.idle_session_timeout: сколько секунд сессии разрешено жить в бездействии (60 сек. по умолчанию).

Соответствующие уведомления появятся в логе. Номер релиза говорит за себя.

pg_logqueryid

А это расширение включает логирование идентификаторов запросов в pg_stat_statements, когда включен auto_explain.

Psycopg 2.8.5

Этот Python-коннектор теперь поддерживает платформу AIX.

pg_timetable 2.0

В этот планировщик заданий (scheduler) добавлены возможности управления: можно пометить задания как @reboot, @every или @after.

pgBadger 11.2

В популярный анализатор логов Жиля Дароля (Gilles Darold) добавлены:

  • поддержка и автораспознавание формата логов AWS Redshift;
  • поддержка нового формата логов pgbouncer 1.11;
  • поддержка сжатия zstd и lz4;
  • можно запускать утилиту вот так: pgbadger -I -O "/out-dir/data" --noreport /var/log/postgresql*.log или
  • так: pgbadger -I -l "/out-dir/data/LAST_PARSED" -H "/out-dir/reports" /out-dir/data/2020/02/19/*.bin.


PAF v2.3.0

Версия этого очень популярного в России отказоустойчивого решения от ClusterLabs, основанного на Pacemaker+Corosync, отличается прежде всего поддержкой PostgreSQL 12. Она не будет работать с версиями более древними, чем Pacemaker 1.1.13 + corosync 2.x.

pgagroal 0.5.1
Новую версию пулера можно скачать отсюда: исходники, RPM.

Облака


Amazon RDS Now Supports PostgreSQL 12

В анонсе говорится, что вместе с релизом вы получите (в числе прочих) обновленные расширения:
PostGIS 3.0,
PGAudit 1.4,
wal2json 2.1,
PLV8 2.3.14,
Orafce 3.8,
pg_repack 1.4.5,
pg_hint_plan 1.3.5.22a77c,
pglogical 2.3.0.

How to Authenticate Postgres Users Against Amazon AWS Cognito

Не найдя удовлетворительного ответа по аутентификации в Cognito для PostgreSQL, Эрнст-Георг Шмид (Ernst-Georg Schmid) ака ergo сам написал скрипт cognito_PAM.py облегчающий аутентификацию пользователей PostgreSQL и pgbouncer.

Статьи


Начнем со статей на лютую злобу дня. Но эти две статьи интересны отнюдь не только актуальной повесткой, они познавательны в техническом смысле.

Charting the spread of COVID-19 using data

В блоге Timescale по шагам показывают, как составлять запросы для построения карт распространения вируса. Данные автор брал с гитхаба Университета Джона Хопкинса, заливал в TimescaleDB, а для визуализации на карте использовал Grafana.

Intersecting GPS-Tracks to identify infected individuals

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

Create and Visualize Machine Learning Models Using 2UDA

2ndQuadrant (эта компания необыкновенно активна в эти непростые времена: вебинары и статьи прибывают потоком) в этой статье предлагает испробовать свой набор приложений для аналитики, где есть в том числе и пакет машинного обучения. 2UDA интегрируется в среду Orange и обменивается данными с PostgreSQL вплоть до последней его версии — 12.2. На этот раз учат работе со Случайным Лесом. В предыдущих статьях серии учили SVM (он же Метод Опорных Векторов) и искать ближайших соседей (KNN).

А вот их же серия о разработке PostgreSQL для Windows: части 3 2 1.

Comparing MongoDB vs Postgres over JOINs

Надо бы начать не с названия статьи, а с авторов: Майкл Стоунбрейкер (Michael Stonebraker, тот самый) и Альваро Эрнандес (Alvaro Hernandez). Альваро, впрочем, тоже «тот самый» — он неоднократно выступал на конференциях в Москве: вот, например, его доклад о StackGres на PGConf.Russia 2020. Ну а тема сравнения NoSQL с Postgres пока не потеряла актуальности.

10 Things I Hate About Postgres

Очередная холодная фаза контрастного душа Postgres vs Другие СУБД. Некоторые высказывания Рика Брэнсона (Rick Branson) весьма жестки. Например: масштабируемость процессов всё лучше и лучше с каждым мажорным релизом. Но в конце концов есть жесткий предел производительности, обусловленный архитектурой Postgres в сравнении с тем же MySQL с его один тред на соединение.

Parallel Query Inside Function

Абдул Йади (Abdul Yadi) анализирует происходящее внутри функций SQL и PL/pgSQL. Он обнаружил, что параллельное исполнение запроса, работающее в SQL запросах без функций, отключено при исполнении функций SQL и PL/pgSQL. И показывает уловку, как включить параллелизм и в PL/pgSQL.

Monitoring the query planner

Жульен Руо (Julien Rouhaud) пишет в своем Домике Жужу о мониторинге Планировщика.

Waiting for PostgreSQL 13 – Allow pg_stat_statements to track planning statistics
Хуберт «Депеш» Любашевский пишет об этом патче, и о том, как тестировал его на pgbench и о том, как можно нарваться на долгое планирование запроса (план не используется повторно). Кстати, в нашем обзоре тоже есть примеры с pg_stat_statements.

PostgreSQL Person of the Week: Michael Paquier

Мишель Пакье (он родился и учился во Франции, а последнее работает в Японии), многим хорошо знакомый по рассылке hackers, начинал работать еще с версией 8.3. На вопрос о любимом расширении отвечает: pg_stat_statement! (восклицательный знак его), а из фич последних версий выбирает TableAM.

А вот выбор персоной недели Айларии Баттисон (Ilaria Battiston) был непредсказуем: она 22-летняя студентка-итальянка, изучающая Data Engineering в Техническом Университете Мюнхена. Чем она заслужила титул — читайте.

Пишем в PostgreSQL на субсветовой: 1 host, 1 day, 1TB

Кирилл Боровиков ака Kilor (компания «Тензор») пишет о том, как можно сделать более эффективной запись в БД, правильно организовав потоки данных. Спойлер: начинают с секционирования. Эту тему автор трогал и в предыдущей статье, но тогда в теории, а теперь на собственном опыте.

PostgreSQL's 'Related Projects'

Андреас Шербаум (Andreas Scherbaum) напоминает, что на postgresql.org появилась новая страничка о проектах, имеющих отношение к PostgreSQL, такие как pgweb, pglister, PostgreSQL Build Farm и других.

A Beginners Guide to Basic Indexing in Postgres

Действительно для начинающих. Для продолживших, напомним, есть серия статей Егора Рогова erogov об индексах (впрочем, у нас есть и малютка, она же Первое знакомство, где, конечно, можно прочитать и об индексах).

Useful Queries for Postgres Index Maintenance

Ибрар Ахмед (Ibrar Ahmed) из Percona в недлинной статье дает основы слежки за работой индексов при помощи типичных запросов к таблицам каталога.

Здоровье индексов в PostgreSQL глазами Java-разработчика

Иван Вахрушев (Яндекс) написал библиотеку pg-index-health, а в этой статье он и рассказывает, как использовать его скрипты [UPD: автор актуализировал ссылки в статье]. Иван признается, что устроил великую чистку, воодушевившись докладом Олега Бартунова и Александра Короткова. Все нужные SQL-скрипты можно найти по ссылкам в статье и в репозитории.

Образование на дому


«Вспомнить всё» или #сидимдома с пользой

На этой странице сейчас собраны ссылки на все курсы отдела образования Postgres Professional.
Но курсы можно смотреть и как плейлисты Youtube.

Вебинары и митапы


Postgres-вторники
Их проводят Николай Самохвалов (Postgres.ai) и Илья Космодемьянский (DataEgret).

#16: c участием Максима Богука и Викторв Егорова (оба DataEgret). Обсуждалось: как добиться того, чтобы приложение исправно работало даже при неожиданном скачке нагрузки в 5 раз.

#15. Обсуждалось темы: PostgreSQL is the Linux of databases; ещё раз о GiST; несколько отличных улучшений в PostgreSQL 13 — у pg_stat_statements и EXPLAIN; Macro-analysis: Planning stats in pg_stat_statements; Micro-analysis: WAL stats in EXPLAIN; pg_show_plans от Cybertec.
#14: Ошибки разработчиков при работе с Postgres. Гость: Павел Биссе.

#13: Пример работы с JSON в Postgres (+CTE, LATERAL, интервалы, GiST-индекс).

2ndQuadrantовские ближайшие вебинары

Date/Timestamp types in PostgreSQL

22 апреля, Эндрю Данстэн (Andrew Dunstan).

KNN Indexing in PostgreSQL

29 апреля, Кирк Ройбал (Kirk Roybal).

Регистрация и список на страничке их вебинаров.

Конференции


PGCon 2020

Пройдет 26-29 мая в режиме онлайн.

Из материалов прошедших конференций, например:

Easy And Correct High Availability Postgres with Kubernetes

Postgres Open выкладывает видео с конференций Postgres Open, которые проводит (проводило и, надеемся, будет проводить после деизоляции) комьюнити в США. В этом докладе с Postgres Open 2019 Стивен Паусти (Steven Pousty) из Crunchy Data рассказывает о высокодоступном PostgreSQL от распаковки контейнеров до практических действий.

PGConf.Russia

Имейте в виду, что бОльшая часть видео, не говоря о слайдах, доступна на сайте конференции.

Highload++

Доклады, видимо, удобней смотреть на youtube-канале конференции.

Новости этики


The Code of Conduct Committee 2019 Annual Report

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

Slave — всё

Напоминаем, что окончательно упразднены рабы по всей документации Postgres: Slave стал Standby в репликации. В секционировании master стал root, а slaveleaf.



Подписывайтесь на канал postgresso!

Идеи и пожелания присылайте на почту: news_channel@postgrespro.ru
Предыдущие выпуски: #19, #18, #17, #16, #15, #14, #13, #12, #11 (спец), #10, #9, #8, #7, #6, #5, #4, #3, #2, #1