![](https://habrastorage.org/webt/r_/c4/o4/r_c4o4ekg26mvezsekh5cinltwq.jpeg)
Мы продолжаем знакомить вас с самыми интересными новостями по 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