Дайджест новостей из мира PostgreSQL. Выпуск №15 +22




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

Новости


Главное событие месяца — это, конечно, Feature Freeze. Мартовский коммитфест закрыт. Основной облик версии PostgreSQL 12 определился. Дальше будут доработки и исправления, но не изменения в функциональности. О наиболее важных фичах 12 версии в ближайшее время мы сделаем отдельную публикацию.

Уязвима ли «уязвимость»


Под загадочным кодом CVE-2019-9193 скрывается политически важная для сообщества причина беспокойства. Речь о конструкции COPY… PROGRAM, появившейся еще в 9.3, которая дает возможность исполнять в запросе файлы ОС и писать в стандартный ввод или читать из стандартного вывода программы.

When a vulnerability is not a vulnerability

Однако, классик PostgreSQL Магнус Хагандер (Magnus Hagander) разъясняет в своем блоге:
Эта «уязвимость» эквивалентна тому факту, что в типичной Unix-системе вы можете залогиниться рутом и создавать или редактировать файлы, и исполнять команды как root. <...> Будучи суперюзером, можно запускать файлы в ОС отнюдь не только при помощи COPY… PROGRAM." <...> Итак, уязвимости в PostgreSQL нет, зато однозначно есть уязвимые инсталляции PostgreSQL.

Релизы


pgAdmin4 V4.5

В этой версии совсем мало изменений. Среди них поддержка адаптера для Python psycopg2 v2.8 (о нем ниже) и поддержка ESLinter. Загрузить можно с этой страницы.
До этого в версии pgAdmin4 4.4 (вышедшей после предыдущего обзора) было исправлено 35 багов. Среди нового в 4.4:

  • история запросов в Query Tool доступна из разных сессий;
  • поддержка колонок IDENTITY;
  • документы можно строить в формате ePub
  • для каталога хранения данных используется в качестве базового полный email, а не только его левая часть.

Подробности на странице PgAdmin.
До этого в версии 4.3 были добавлены в том числе кнопки Commit и Rollback в Query Tool; появилась возможность запускать в контейнерах несколько версий утилит PostgreSQL. О других 5 новых возможностях той версии можно узнать на странице PgAdmin.

repods

Появилась облачная платформа repods на базе PostgreSQL. Основное назначение — аналитика. Интересная визуализация схем БД и прочего.

pg_activity 1.5.0

В этой версии средства мониторинга появилось новое:

  • сводка активных соединений;
  • имя приложения;
  • можно сохранять список активных запросов в файл CSV;
  • поддержка PGSERVICE;
  • при потере соединения пытается снова соединиться с PostgreSQL-кластером.

Скачать можно и с github, и с pyri.

Barman 2.7

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

При работе в режиме гео-избыточности раньше падал cron при обрыве сети в процессе синхронизации. Соответственно следующие задания не выполнялись. Также исправлен баг в работе ввода-вывода в UTF-8. Подробности и файлы для скачивания на сайте sourceforge.

Pgpool-II

Вышла версия 4.0.4, а с нею и 3.7.9, 3.6.16, 3.5.20 и 3.4.23. Из новшеств: можно задать клиентский список шифров — ssl_ciphers. Таким образом в Pgpool-II поддержана соответствующая возможность PostgreSQL. Про релиз здесь, а RPMы можно скачать отсюда. В разделе «статьи» мы упоминаем две публикации ветерана PostgreSQL Тацуо Ишии (Tatsuo Ishii) о новшествах будущего релиза — Pgpool-II 4.1.

padnag 1.2.4

В новой версии этого инструмента синхронизации ролей PostgreSQL с пользователями и группами Active Directory появилось в том числе:

  • Ubuntu 1604 вместо Ubuntu 1804 LTS;
  • переход на AWS CodeCommit и CodeBuild;
  • автоматическое тестирование на правильную интеграцию с Windows 2012R2;
  • больше нет тестирования версий PostgreSQL до 9.4.
Подробности есть здесь.

temboard 3.0

В средстве удаленного мониторинга PostgreSQL от Dalibo Labs появился плагин Maintenance, который следит за базами данных, схемами, таблицами и индексами. Помогает обнаружить распухание базы и эффективно управлять VACUUM, ANALYZE или REINDEX.

psycopg 2.8

Эта версия PostgreSQL-адаптера для Python (полностью реализующего интерфейс Python DB API 2.0) — примечательное событие: предыдущая версия вышла аж 2 года назад. В этой версии в числе прочего появился

  • мэпинг ошибок PostgreSQL на исключения Python;
  • некоторые улучшения обогащают информацию о статусе соединения и результатах запроса;
  • улучшено асинхронное взаимодействие и параллелизм;
  • отказ от поддержки устаревших версий Python (2.6, 3.2, 3.3) позволил существенно переработать код.

pg2arrow

Утилита, которая отсылает запрос PostgreSQL и упаковывает результат в формат Apache Arrow.

pgMustard

Интерфейс для «explain analyse», способный еще и давать рекомендации по ускорению запросов. pgMustard — коммерческий софт, испытательный срок 7 дней. Отзывы приветствуются — говорят разработчики. Версия 1.0 работает с PostgreSQL 9.6 и более поздними.

pg_snakeoil 1.0

Антивирусное расширение PostgreSQL. Для сканирования оно использует ClamAV, который не тормозит работу PostgreSQL.

vipsql

Плагин к vim для работы в psql.

migra

Этот инструмент работает со схемами PostgreSQL в духе diff.

dbdot

Утилита командной строки, которая генерит DOT-описание на основе схемы БД. Распространяется в бинарных пакетах под различные платформы.

Zedstore — compressed in-core columnar storage

Это довольно сырой патч, но на него стоит обратить внимание. Буквально за пару недель было сделано колоночное хранилище. В будущем в PostgreSQL будут подключаемые хранилища разного типа (pluggable storages), для чего сейчас сделан и прошел коммитфест патч tableam (table access method) — важная часть API для подключения хранилищ. Одно из новых хранилищ уже достаточно хорошо известно: Zheap с UNDO, оно в работе. Теперь — колоночное (а есть еще расширение VOPS для векторизованных вычислений).

Статьи и блоги


Benchmarking connection poolers

Пуллеры для Постгреса. Сравнительное тестирование производительности различных пуллеров для Постгреса: начиная с популярного pgbouncer-а и до новичка — Odyssey и новой разработки — встроенных пуллеров от Postgres Professional. Тестировал Константин Книжник.

Imperative to Declarative to Imperative

Брюс Момджан по-прежнему с удовольствием высказывается на философские темы СУБД-строения: на этот раз в поле его зрения попала цепочка «генерация декларативного кода императивным кодом, который [в конечном счете] опять будет исполнен как императивный код» (imperative language that generates declarative output that can be converted into an imperative program and executed).

Брюс обнародовал здесь свои соображения, имея в виду обсуждение соответствующего треда, в котором высказались Питер Гёйган (Peter Geoghegan) и Крис Траверс (Chris Travers).

Uniting SQL and NoSQL for Monitoring: Why PostgreSQL is the ultimate data store for Prometheus

Подзаголовок этой статьи (тоже не слишком короткий) поясняет: «Как использовать Prometheus, PostgreSQL + TimescaleDB и Grafana для хранения, анализа и визуализации метрик».

What’s new in PostgreSQL 11

Маркус Винанд (Markus Winand), автор книжки PostgreSQL Performance Explained, пишет не о будущем (PostgreSQL 12), а о настоящем: «о главной теме PostgreSQL 11 — оконных функциях». До 2018 PostgreSQL в одиночестве сражался с ними (если говорить об опен-сорс СУБД), но с тех пор некоторые из них догнали и перегнали. И вот в 11 снова рывок вперед. Разъяснено на примерах, со схемами и матрицами функциональности.

Why SQL is beating NoSQL, and what this means for the future of data

На сайте TimescaleDB большая статья об истории битв SQL и NoSQL за господство над данными — начиная с 70-х и примеров из реляционной алгебры.

Be careful with CTE in PostgreSQL

Статья Хаки Бенита (Haki Benita), независимого разработчика, об опасностях CTE. Сравнивает с Oracle, говорит о материализации, подзапросах как альтернативе, CTE inlining, о хинтах и прочем. Статья опубликована еще осенью, и кое-какие изменения с тех пор произошли, но многие проблемы по-прежнему актуальны.

JOIN LATERAL

Элейн Мастейн (Elein Mustein), до этого популярный автор GeneralBits, напоминает в блоге 2ndQuadrant о возможностях JOIN LATERAL. А также об ограничениях, о мониторинге соответствующих запросов и о том, где имеет смысле использовать JOIN LATERAL, а где — нет.

Postgres-XL and global MVCC

Коичи Сузуки (Suzuki Koichi), работавший в NTT и перешедший в 2ndQuadrant, задаёт интересные вопросы по поводу распределенных транзакций и собирается их в будущих статьях обсуждать.

Waiting for PostgreSQL 12 – REINDEX CONCURRENTLY

Depecz, то есть Хуберт Любашевски, рассказывает и приводит примеры использования этого важного новшества.

GeoJSON Features from PostGIS

Пол Рэмси (Paul Ramsey) рассказывает, как из уже существующих в PostgreSQL средств и собственного коротенького скрипта конвертировать таблицы в GeoJSON.

Metrics to Monitor in Your PostgreSQL Database

Эта статья продолжает тему другой статьи — «Руководство: как мониторить PostgreSQL, используя Telegraf и InfluxDB».

PostgreSQL for a SQL Server DBA: The Tooling Stinks

В этой не слишком лояльной Постгресу статье — «Инструменты для админа PostgreSQL тухловаты» — наблюдения человека с бэкграундом MS SQL, так что его опыт и импровизированный сравнительный анализ могут оказаться интересными для некоторых читателей-постгресистов. Автор считает главным препятствием для перехода MS SQL -> PostgreSQL относительную бедность (у меня это мягче сказано) инструментария, а не недостатки самой СУБД. Соответственно речь идет о PgAdmin, но также и о DataGrip и Novicat.

Shared Relation Cache и Statement Level Load Balancing

В своем блоге Playing with PostgreSQL and Pgpool Тацуо Ишии (Tatsuo Ishii) пишет о разделяемом процессами Pgpool-II кэше системного каталога, который появится в версии 4.1.

В продолжении — речь о балансировке нагрузки, которая в Pgpool-II 4.1 возможна на уровне сессии. Поведение определяется новым параметром: statement_level_load_balance в pgpool.conf.

Конференции


Saint HighLoad++ 2019 (Санкт-Петербург)

На прошедшей конференции много говорили о будущем. Вот слайды доклада, где Олег Бартунов суммирует новшества грядущей версии. Конференция прошла 8-9 апреля.

German-speaking PostgreSQL Conference 2019

Для желающих поупражняться в немецком и посетить Лейпциг: эта конференция состоится 10 мая.

PGDay Warsaw

Эта конференция проходит в контексте OpenSource Day 14-го мая.

PGDay.IT 2019

Итальянский PG-день пройдёт в Болонье 16-17 мая.

PGCon 2019 Ottawa

Канадская конференция состоится 28-31 мая.

Swiss PGDay 2019

На эту конференцию, которая состоится 28 июня в Раппертсвиле, около Цюриха, еще можно (до 18 апреля) присылать заявки на доклады и регистрироваться.

PostgresLondon 2019

Эта конференция пройдет 1-3 июля (1-го необязательный день для мастер-классов).

PGConf.Brazil 2019

Сан-Паулу ждет гостей 1-3 августа.

Austrian pgDay

Новое мероприятие, оно состоится 6 сентября.

PostgresConf South Africa 2019

Пройдет в Йоханнесбурге 8-9 октября. Заявки принимаются до 30 июля.

А также есть конференции в корпоративном стиле:

Percona Live Open Source Database Conference 2019

Percona проводит эту конференцию в Техасе (Остин, столица) 28-30 мая.

Postgres Vision 2019

Эта конференция проводится EnterpriseDB в Бостоне 24-26 июня.

На этом все. До новых встреч!




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

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




К сожалению, не доступен сервер mySQL