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

Главное событие


PostgreSQL 13 Beta 2

Релиз беты состоялся. Загрузить можно отсюда, информация для бета-тестеров здесь.

Напоминаем, что в начале апреля мы сделали обзор нового в версии 13: Много ли нового в чёртовой дюжине (спойлер: много). С тех пор по определению радикальных изменений произойти не могло. Некоторые изменения по сравнению с beta 1 всё же есть, о них написано в анонсе. Release notes 13-й версии здесь. А на этой странице расписание грядущих релизов PostgreSQL.

Релизы


pg_probackup 2.4.1

Новое в версии: прежде всего инкрементальное восстановление. Можно использовать повторно валидные неизмененные страницы, которые лежат в целевой директории. Это сильно увеличивает скорость, уменьшает нагрузку на сеть и потребление I/O. Соответственно появилась новая опция для команды restore: -I | --incremental-mode mode (mode может принимать значение checksum и lsn). Документация к этой утилите здесь.

barman 2.11

Пакет облачных утилит пополнился ещё двумя:
barman-cloud-restore и
barman-cloud-wal-restore
Теперь можно восстанавливать инстанс PostgreSQL, используя полный бэкап, созданный командами barman-cloud-wal-archive и barman-cloud-backup.

Этим новшества версии не ограничиваются, вот чейнджлог. Но об этих облачных новшествах есть небольшая статья-руководство в блоге 2ndQuadrant: начиная с установки пакета barman-cli-cloud, в которым теперь собраны все облачные утилиты и настройки, до планов улучшений в грядущей версии.

pgAdmin4 4.23

В новой версии не слишком радикальные изменения: прежде всего появилась поддержка Row Security Policies. Можно добавить название группы серверов в окне Schema Diff, а при сравнении схем теперь можно добавить опцию, позволяющая игнорировать пробелы.

Cypex 1.0

Расшифровывается Cybertec Prototyping Express и претендует на самое передовое средство разработки приложений с доступом к PostgreSQL. Скорость и простота разработки будет достигнута благодаря тому, например, что Cypex умеет предлагать (предсказывать) структуру приложения, исходя из модели данных.

PostgresDAC 3.8

Вышла новая версия набора компонентов прямого доступа к PostgreSQL от Microolap Technologies из Черноголовки. В ней появилась поддержка PostgreSQL 12 и RAD Studio 10.4 Sydney от Embarcadero Technologies. Появилась поддержка RAD Studio 10.4 Tokyo (Delphi and C++ Builder). Загрузить можно отсюда.

pgwatch2 v1.8.0

В новой версии pgwatch2, утилиты для мониторинга Postgres, много изменений. Среди них поддержка метрик PostgreSQL 13, Pgpool-II, TimescaleDB.

Появился мониторинг доступа к объектам (таблицы/представления, схемы, функции, БД) и к системным ролям — прежде всего к ролям суперпользователей, но и к логин-ролям и прочим.
Теперь можно кешировать и разделять (share) на уровне инстанса и глобально метрики, общие для разных БД — WAL, загрузку CPU и др. — чтобы не получать их для каждой базы. Это экономит трафик.

Интервал кеширования настраивается. Новые метрики через базу работают с утилитами бэкапа/восстановления WAL-G и pgBackRest, метрики на PL/Python собирают информацию на уровне OS и отдают как SQL, чтобы можно было, например, визуализировать в Grafana.

Есть обширный чейнджлог.

pgsodium 1.2.0

Это расширение адаптирует функции криптографической библиотеки libsodium к SQL.
Со времён версии 1.1.1, о которой мы писали в прошлом выпуске, появились три уровня доступа, реализованных в соответствующих ролях, для доступа к API:
  • pgsodium_keyiduser может пользоваться только функциями API по идентификатору ключа, а видеть или использовать «сырые» ключи (в типе bytea) не может;
  • pgsodium_keyholder может видеть и использовать ключи и пары ключей, но не может генерировать их или получать из имеющихся (derive);
  • pgsodium_keymaker может делать всё, что душе угодно.

Есть, конечно, и другие изменения. О них здесь.

pg_chameleon 2.0.14

В версии этой утилиты репликации из MySQL в PostgreSQL улучшили поддержку пространственных типов данных. Если в целевой БД установлен PostGIS, то пространственные типы point, geometry, linestring, polygon, multipoint, multilinestring, geometrycollection преобразуются в PostGIS-овский тип geometry и данные реплицируются с использованием стандартного для геоданных формата WKB (Well-Known Binary). Поскольку реализация WKB в MySQL нестандартна, pg_chameleon убирает первые 4 байта из декодированных бинарных данные перед тем, как залить их в PostgreSQL.

Если параметр keep_existing_schema установлен в yes, то теперь хамелеон пересоздает индексы и первичные ключи в процессе init_replica. Когда реплика приходит к согласованному состоянию, пересоздаются и внешние ключи.

Crunchy PostgreSQL Operator 4.4.0

Это утилита развертывания и управления PostgreSQL-кластеров в среде Kubernetes (не путать с разработкой DBaaS Zalando Postgres Operator for Kubernetes, о которую мы упоминали в Postgresso 22). Она работает в связке с Crunchy Container Suite.

В новой версии поддерживается PostGIS 3.0. В PostGIS-контейнерах доступен pgRouting. Поддерживается pgBackRest 2.27, pgBouncer 1.14. PostgreSQL Operator протестирован с Kubernetes 1.15 — 1.18, OpenShift 3.11+, OpenShift 4.4+, Google Kubernetes Engine (GKE) и VMware Enterprise PKS 1.3+.

Возможно создание кластера из репозитория pgBackRest. Флаги при создании см. в Major Features релиза. Доделывается понемногу RBAC (Role-Based Access Control). Внимание! Параметр сверки DYNAMIC_RBAC переименован в RECONCILE_RBAC. TLS Authentication (аутентификация на транспортном уровне). А ещё для PostgreSQL Operator теперь есть кубернетовский Helm Chart.

ORC Foreign Data Wrapper 1.0.0

Это FDW для файлов формата Apache ORC — первый релиз, который поддерживает формат файлов ORC 0.12. В этой версии FDW пока не поддерживаются DML-операции. Файлы ORC доступны только для чтения. Можно импортировать схемы из любой директории, содержащей файлы с расширением .orc.

Статьи


Заметка Брюса Момджана объясняет: json и jsonb не просто типы данных, они сами могут содержать в себе много типов.
SELECT x, jsonb_typeof(x), pg_typeof(x) FROM test;
   x    | jsonb_typeof | pg_typeof
--------+--------------+-----------
 "abc"  | string       | jsonb
 5      | number       | jsonb
 true   | boolean      | jsonb
 null   | null         | jsonb
 (null) | (null)       | jsonb

Далее следует несколько интересных примеров с операторами #>> и другими.

AQO — адаптивная оптимизация запросов в PostgreSQL

Новый автор корпоративного хабра Postgres Professional — Павел Толмачёв — пишет о модуле (расширении) aqo, которое поставляется с Postgres Pro Enterprise (может использоваться и с PostgreSQL). В обстоятельной статье есть и об установке aqo, и о принципах работы, и о том, почему планировщик может выбирать неоптимальный план, о том, к чему приводит использование зависимых (коррелированных) условий. Ну и главное: о способах влияния на работу планировщика, о том, когда aqo успешно подсказывает планировщику кардинальность грядущего результата. Дока о модуле здесь, а сам он на гитхабе компании.

PgBouncer on Kubernetes and how to achieve minimal latency. Experiments with connection poolers on Kubernetes for Postgres Operator

Дмитрий Долгов, Zalando, предлагает разобраться с поддержкой пулинга соединений, появившейся в Postgres Operator 1.5 (мы писали о новшествах в этой версии в Postgresso 21). Чтобы разобраться с масштабируемостью, Дмитрий измерял на pgbench производительность инстанса PostgreSQL:
c одним инстансом PgBouncer на одном физическом ядре;
с двумя инстансами PgBouncer в своих гипертредах, но на одном физическом ядре;
с двумя инстансами PgBouncer на двух ядрах, но с возможным влиянием процессов в других гипертредах.
Анализ результатов обнаруживает не вполне ожидаемые не вполне приятные эффекты. Вывод: следует аккуратно конфигурировать использование CPU.

PostgreSQL Antipatterns: анализируем блокировки — SELF JOIN vs WINDOW

В блоге компании Тензор Кирилл Боровиков aka Kilor пишет о том, как анализировать собранные из логов и уже загруженные в базу записи о блокировках still waiting for ExclusiveLock и acquired ExclusiveLock. И о подводных и надводных камнях, о том, как сильно упростить себе задачу, используя оконные функции. Это продолжение DBA: в погоне за пролетающими блокировками, где как раз рассказывалось, как распарсить записи в логах и загрузить в базу.

Foreign data wrappers: PostgreSQL's secret weapon?

В статье на сайте Splitgraph демонстрируются возможности FDW на примере использования расширения multicorn, которое даёт возможность писать расширения FDW на Python и интегрировать PostgreSQL с инструментами Splitgraph.

Postgres Tips: How to convert 2 Billion Rows to Bigint with Citus

Эту статью от Citus (то есть Microsoft) жёстко раскритиковали на Постгрес-Вторнике-25 (см. ниже в разделе Вебинары и митапы), но, может, вам будет интересно составить собственное мнение.

Recreating YikYak with Postgres

Фактически в статье речь идёт не о сети YikYak, а о расширениях cube и earthdistance. Это немного неожиданно: думалось, что речь пойдёт о PostGIS. В статье используются: функции earth_box и ll_to_earth, оператор Contains?, то есть @>, индекс GiST. Ищут не n ближайших соседей, а сколько объектов в заданной окружности. Статья простенькая, но тема earthdistance встречается не часто.

Partitioning a large table without a long-running lock

Эндрю Данстан (Andrew Dunstan) пишет о том, как секционировать большую таблицу и не уснуть в процессе. Для демонстрации Эндрю создает табличку с 10 млн строк и разбивает её на 4 секции по диапазонам. При этом используется промежуточное представление как UNION строк в несекционированной и в секционированной таблицах. Перловый скрипт перетаскивает строки в новую таблицу порциями. Такую программу можно прервать в любой момент, что удобно.

Облака


Postgres Professional и Mail.ru Cloud Solutions запускают Postgres Pro Cloud

Эта совместная разработка, облачный сервис управляемой базы данных будет предоставляться по модели Database-as-a-Service. Установка, настройка и поддержка СУБД осуществляется на стороне провайдера. Mail.ru Cloud Solutions и Postgres Pro помогают с миграцией и консультируют по построению масштабируемой и отказоустойчивой структуры хранения данных, а также по настройке взаимодействия с On Premises-системами, процессами ETL и Streaming, построению Data Warehouse и Data Lake.

Managed Databases now supports PostgreSQL 12

DigitalOcean прибавил к своей коллекции БД PostgreSQL 12. Есть средства бесшовного автоматического апгрейда с мажорных версий PostgreSQL 11 на мажорные 12 без остановки работы промышленной базы.

В DigitalOcean обращают внимание потенциальных пользователей на такие новшества 12-й версии как SQL/JSONpath, оптимизацию CTE (запросов с WITH) и генерируемых столбцов.

Персоны



Персоной недели в июне побывал уроженец Севастополя Олексий (Alex) Клюкин, работавший над Patroni и Postgres Operator в Zalando. Теперь работает в Adjust.com над инфраструктурой PostgreSQL.

С тех пор в этом качестве выступило немало и знаменитых людей, и не слишком известных в сообществе (правда они нередко уж слишком лаконичны):
Умайр Шахид (Umair Shahid)
Стейси Хейслер (Stacey Haysler)
Кохеи Кайгаи (Kohei Kaigai)
Эндрю Данстан (Andrew Dunstan)
Саймон Риггс (Simon Riggs)
Томас Вондра (Tomas Vondra)

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


Постгрес-вторники (#RuPostgres)

В-27: Разговор про коррупцию и антикоррупционные меры в PG, опыт Яндекс.Облака, DataEgret, Postgres.ai. В гостях — эксперты Яндекс.Облака Андрей Бородин и Дмитрий Сарафанников.

В-26: Аналитика в Postgres. Снова (см. В-24) про шардинг. Миграции БД. JOIN в Монге.
Кое-что про то, как делать изменения под нагрузкой, имея в виду:
Database Migration Style Guide – GitLab
Partitioning a large table without a long-running lock
PostgreSQL at Scale: Database Schema Changes Without Downtime

В-25:
В-25: Быстрая диагностика проблем Postgres с Алексеем Лесовским. pgCenter.
pgCenter – с чего всё началось, как развивалось. Возможности; демо; ограничения (statement_timeout и прочее) pgCenter.

В-24:
Транзакции, новые распределённые СУБД (YDB и др.), FDW, шардинг.
В гостях: Стас Кельвич (сейчас Яндекс, до этого — Postgres Professional).
YDB, Google Spanner, CockroachDB – каковы различия.
Согласование в распределённых транзакциях и зачем атомные часы.

Вот файл с информацией о вторниках, в него можно дописывать свои предложения.

Конференции


PGConf.EU 2020
Отменена. Переносится на 2021.

PGDay Ukraine
Должна состояться во Львове 5-го сентября.

pgDay Israel 2020
Намечена на 10-е сентября в Тель-Авиве.

PGDay Austria
Ожидается в замке Шёнбрунн (около Вены) 8-го сентября.



Предыдущие выпуски: #22
#21, #20, #19, #18, #17, #16, #15, #14, #13, #12, #11 (спец), #10, #9, #8, #7, #6, #5, #4, #3, #2, #1