Жизнь продолжается. А мы продолжаем знакомить вас с самыми интересными новостями 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
IvanVakhrushev
Хорошо, что у Crunchy появился Helm-чарт для деплоя оператора. В своё время из-за отсутствия оного выбор пал на решение от Zalando.
А вообще, вижу что сообщество (в первую очередь админов\DevOps'ов) не готово к Постгресу в Кубере — отпинываются как могут.