Новые возможности PostgreSQL 17
В будущей версии появится возможность создавать событийный триггер на подключение к базе данных.
Как обычно, триггер создается в два этапа. Сначала триггерная функция:
Затем сам триггер:
Теперь можно быть уверенными, что по выходным, к всеобщему удовольствию, пользователи не будут мешать администратору.
Приятно заглянуть в сообщение о коммите и увидеть много бывших и нынешних сотрудников Postgres Professional.
О других возможностях 17-й версии читайте в обзоре ноябрьского коммитфеста, который выйдет в ближайшие дни в нашем канале на Хабре.
В будущей версии появится возможность создавать событийный триггер на подключение к базе данных.
Как обычно, триггер создается в два этапа. Сначала триггерная функция:
CREATE FUNCTION check_login() RETURNS event_trigger
AS $$
BEGIN
IF session_user = 'postgres' THEN RETURN; END IF;
IF to_char(current_date, 'DY') IN ('SAT','SUN')
THEN
RAISE 'Хороших выходных, увидимся в понедельник!';
END IF;
END;
$$ LANGUAGE plpgsql;
Затем сам триггер:
CREATE EVENT TRIGGER check_login
ON LOGIN
EXECUTE FUNCTION check_login();
Теперь можно быть уверенными, что по выходным, к всеобщему удовольствию, пользователи не будут мешать администратору.
Приятно заглянуть в сообщение о коммите и увидеть много бывших и нынешних сотрудников Postgres Professional.
О других возможностях 17-й версии читайте в обзоре ноябрьского коммитфеста, который выйдет в ближайшие дни в нашем канале на Хабре.
📍Платформа Postgres Pro Enterprise Manager доступна пользователям Postgres Pro
В ответ на запросы заказчиков мы разработали графическую платформу управления базами данных Postgres Pro Enterprise Manager (PPEM). Продукт уже протестировали и одобрили более 25 крупнейших клиентов Postgres Professional из госсектора, банковской, нефтегазовой и других отраслей.
🔥 Сейчас мы выпустили платформу в широкое использование. Доступ к PPEM может получить любой пользователь СУБД линейки Postgres Pro и использовать решение в том числе и для гибридных ландшафтов: Postgres Pro + СУБД с открытым исходным кодом PostgreSQL.
Платформа охватывает полный спектр задач администратора баз данных и значительно упрощает и ускоряет работу над рутинными задачами.
Собрали ключевую информацию о PPEM в карточках. Больше о платформе и ее возможностях — на нашем сайте.
В ответ на запросы заказчиков мы разработали графическую платформу управления базами данных Postgres Pro Enterprise Manager (PPEM). Продукт уже протестировали и одобрили более 25 крупнейших клиентов Postgres Professional из госсектора, банковской, нефтегазовой и других отраслей.
Платформа охватывает полный спектр задач администратора баз данных и значительно упрощает и ускоряет работу над рутинными задачами.
Собрали ключевую информацию о PPEM в карточках. Больше о платформе и ее возможностях — на нашем сайте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📍Postgresso #11 (60) — главные события мира PostgreSQL за ноябрь
Выпуск начинается с раздела «Лицензии и апокалипсис»: собрали ссылки по поводу резких действий компании HashiCorp, ещё более резкой реакции сообщества и новом, альтернативном проекте OpenBao.
Есть новое в разделе «Образование» (не без участия ИИ): рассказали про инструмент миграции IvorySQL китайской фирмы HighGo, собрали ссылки на фотографии и видео с конференций месяца.
Читайте свежий дайджест
Выпуск начинается с раздела «Лицензии и апокалипсис»: собрали ссылки по поводу резких действий компании HashiCorp, ещё более резкой реакции сообщества и новом, альтернативном проекте OpenBao.
Есть новое в разделе «Образование» (не без участия ИИ): рассказали про инструмент миграции IvorySQL китайской фирмы HighGo, собрали ссылки на фотографии и видео с конференций месяца.
Читайте свежий дайджест
📍Обновление Postgres Pro Standard и Postgres Pro Enterprise
Выпуски основаны на соответствующих релизах PostgreSQL 9 ноября, наследуют все их улучшения и устранения уязвимостей.
✔️Релизы выпущены для версий 11.22.1, 12.17.1, 13.13.1, 14.10.1, 15.5.1, а также 16.1.1 редакции Standard.
✔️В версиях 14.10.1 и 15.5.1 для соответствия новым требованиям ФСТЭК обновлены расширение pg_proaudit (до версии 1.2) и утилита pg_integrity_check (в том числе для Postgres Pro Enterprise 13.1).
✔️В версиях 12.17.1, 13.13.1, 14.10.1, 15.5.1 расширение pgpro_stats обновлено до версии 1.6.3, позволяющей отображать в отчётах pgpro_pwr статистику очистки на уровне таблиц и индексов.
Это обновление — последнее для редакций СУБД версии 11, рекомендуем перейти на более новые.
Читайте подробности про обновление Postgres Pro Standard и Postgres Pro Enterprise.
Выпуски основаны на соответствующих релизах PostgreSQL 9 ноября, наследуют все их улучшения и устранения уязвимостей.
✔️Релизы выпущены для версий 11.22.1, 12.17.1, 13.13.1, 14.10.1, 15.5.1, а также 16.1.1 редакции Standard.
✔️В версиях 14.10.1 и 15.5.1 для соответствия новым требованиям ФСТЭК обновлены расширение pg_proaudit (до версии 1.2) и утилита pg_integrity_check (в том числе для Postgres Pro Enterprise 13.1).
✔️В версиях 12.17.1, 13.13.1, 14.10.1, 15.5.1 расширение pgpro_stats обновлено до версии 1.6.3, позволяющей отображать в отчётах pgpro_pwr статистику очистки на уровне таблиц и индексов.
Это обновление — последнее для редакций СУБД версии 11, рекомендуем перейти на более новые.
Читайте подробности про обновление Postgres Pro Standard и Postgres Pro Enterprise.
📍Перенос данных с Oracle на PostgreSQL: серия статей
Делимся серией статей на Хабре про миграцию с Oracle: разбираем основные этапы переноса данных, какой код стоит переносить, как его адаптировать и конвертировать.
Автор материалов — ведущий инженер департамента внедрения и технической поддержки Postgres Professional Петр Петров, более десяти лет работает с Oracle и PostgreSQL.
✔️Перенос данных: основные этапы, несовпадающие типы и форматы данных
Рассказываем про основные этапы переноса данных, различия типов и форматов данных в целевой СУБД и СУБД-источнике.
✔️Перенос данных: секционирование, временные таблицы и инструменты
Останавливаемся на секционировании и временных таблицах, рассматриваем инструменты для конвертации данных и сокращения времени простоя.
✔️Работа с хранимым кодом приложения: особенности, сложности и способы их преодоления
Разбираемся, какой код стоит переносить; какие особенности затрудняют перевод на PostgreSQL; как заменить особенности исходной СУБД при конвертации хранимого кода в СУБД-источник.
✔️Миграция кода: особенности и пути обхода, средства конвертации, вспомогательные модули
В материале рассматриваем оставшиеся особенности, адаптацию и конвертацию кода, выбор средств для конвертации.
🔥Скоро расскажем о наших разработках для облегчения миграции с Oracle на Postgres Pro.
Делимся серией статей на Хабре про миграцию с Oracle: разбираем основные этапы переноса данных, какой код стоит переносить, как его адаптировать и конвертировать.
Автор материалов — ведущий инженер департамента внедрения и технической поддержки Postgres Professional Петр Петров, более десяти лет работает с Oracle и PostgreSQL.
✔️Перенос данных: основные этапы, несовпадающие типы и форматы данных
Рассказываем про основные этапы переноса данных, различия типов и форматов данных в целевой СУБД и СУБД-источнике.
✔️Перенос данных: секционирование, временные таблицы и инструменты
Останавливаемся на секционировании и временных таблицах, рассматриваем инструменты для конвертации данных и сокращения времени простоя.
✔️Работа с хранимым кодом приложения: особенности, сложности и способы их преодоления
Разбираемся, какой код стоит переносить; какие особенности затрудняют перевод на PostgreSQL; как заменить особенности исходной СУБД при конвертации хранимого кода в СУБД-источник.
✔️Миграция кода: особенности и пути обхода, средства конвертации, вспомогательные модули
В материале рассматриваем оставшиеся особенности, адаптацию и конвертацию кода, выбор средств для конвертации.
🔥Скоро расскажем о наших разработках для облегчения миграции с Oracle на Postgres Pro.
📍Запуск Портала технической поддержки Postgres Professional
Для удобства клиентов мы запускаем новый Портал технической поддержки, где можно:
✔️Самостоятельно управлять списком сотрудников, которые могут обращаться за технической поддержкой;
✔️Просматривать свои лицензии и сертификаты;
✔️Управлять доступами к репозиториям с продуктами Postgres Pro (в рамках имеющихся сертификатов);
✔️Вести работу в текущих заявках, открывать новые и просматривать старые заявки;
✔️Работать в заявках от разных клиентов (актуально для интеграторов).
🔥Также на Портале мы собрали «Базу знаний» — каталог статей с полезной информацией, по которым можно осуществлять поиск на интересующую тему.
Узнать больше о Портале
Для удобства клиентов мы запускаем новый Портал технической поддержки, где можно:
✔️Самостоятельно управлять списком сотрудников, которые могут обращаться за технической поддержкой;
✔️Просматривать свои лицензии и сертификаты;
✔️Управлять доступами к репозиториям с продуктами Postgres Pro (в рамках имеющихся сертификатов);
✔️Вести работу в текущих заявках, открывать новые и просматривать старые заявки;
✔️Работать в заявках от разных клиентов (актуально для интеграторов).
🔥Также на Портале мы собрали «Базу знаний» — каталог статей с полезной информацией, по которым можно осуществлять поиск на интересующую тему.
Узнать больше о Портале
🔥Postgres Pro Enterprise 16
Представляем Postgres Pro Enterprise 16.1.1 — самый значимый релиз Postgres Pro за последние 5 лет по количеству новых разработок!
Среди главных фич:
✔️Встроенная система управления отказоустойчивым кластером Postgres Pro Enterprise BiHA (Built-in High Availability);
✔️Администратор без доступа к данным — позволяет защититься от злоумышленников с правами Администратора БД / Администратора СУБД, не давая им ни модифицировать, ни читать конфиденциальные данные;
✔️Приоритизация ресурсов — новый инструмент повышения эффективности использования СУБД с большим количеством пользователей;
✔️Новые системные пакеты-аналоги Oracle — функциональность, работающая по аналогии с пакетами Oracle;
✔️Адаптивный оптимизатор запросов AQO 2.0 — позволяет планировщику Postgres Pro выбирать самый эффективный план, создаваемый на основе статистики планирования и выполнения запросов;
✔️Обновленное расширение sr_plan — в комбинации с AQO версии 2.0 реализуют первую в мире Postgres интеллектуальную систему исправления и стабилизации проблемных планов запросов «на лету»;
✔️Поддержка внешних файлов в виде отдельного типа BFile;
✔️Обновленное приложение pg_probackup;
✔️Поддержка всех возможностей Postgres Pro Standard 16 и выпущенной осенью PostgreSQL 16.
👉 Подробнее о новых функциях Enterprise 16.1.1
Представляем Postgres Pro Enterprise 16.1.1 — самый значимый релиз Postgres Pro за последние 5 лет по количеству новых разработок!
Среди главных фич:
✔️Встроенная система управления отказоустойчивым кластером Postgres Pro Enterprise BiHA (Built-in High Availability);
✔️Администратор без доступа к данным — позволяет защититься от злоумышленников с правами Администратора БД / Администратора СУБД, не давая им ни модифицировать, ни читать конфиденциальные данные;
✔️Приоритизация ресурсов — новый инструмент повышения эффективности использования СУБД с большим количеством пользователей;
✔️Новые системные пакеты-аналоги Oracle — функциональность, работающая по аналогии с пакетами Oracle;
✔️Адаптивный оптимизатор запросов AQO 2.0 — позволяет планировщику Postgres Pro выбирать самый эффективный план, создаваемый на основе статистики планирования и выполнения запросов;
✔️Обновленное расширение sr_plan — в комбинации с AQO версии 2.0 реализуют первую в мире Postgres интеллектуальную систему исправления и стабилизации проблемных планов запросов «на лету»;
✔️Поддержка внешних файлов в виде отдельного типа BFile;
✔️Обновленное приложение pg_probackup;
✔️Поддержка всех возможностей Postgres Pro Standard 16 и выпущенной осенью PostgreSQL 16.
👉 Подробнее о новых функциях Enterprise 16.1.1
PostgreSQL 17: Часть 3 или Коммитфест 2023-11. Что принес ноябрьский коммитфест?
В обзоре на Хабре руководитель отдела образовательных программ Postgres Professional Павел Лузанов рассказывает про интересные нововведения последнего коммитфеста в этом году.
Читайте статью
В обзоре на Хабре руководитель отдела образовательных программ Postgres Professional Павел Лузанов рассказывает про интересные нововведения последнего коммитфеста в этом году.
Читайте статью
🎄Предновогодний интерактив на знание PostgreSQL
В любой поддерживаемой версии PostgreSQL, в сеансе суперпользователя выполним команды:
В следующем посте будет опрос. Отметьте в нем команды, которые завершатся ошибкой.
В любой поддерживаемой версии PostgreSQL, в сеансе суперпользователя выполним команды:
CREATE ROLE app_owner; -- создаем владельца объектов приложения
CREATE TABLE t (
id int PRIMARY KEY,
parent_id int REFERENCES t(id)
);
ALTER TABLE t OWNER TO app_owner;
REVOKE ALL ON t FROM app_owner; -- никаких действий под владельцем
INSERT INTO t VALUES (1,NULL);
DELETE FROM t;
DROP TABLE t;
Других сеансов нет, синтаксис правильный.
В следующем посте будет опрос. Отметьте в нем команды, которые завершатся ошибкой.
Отметьте команды, которые завершаются ошибкой. Позже опубликуем ответы с пояснением.
Anonymous Poll
1%
CREATE ROLE
4%
CREATE TABLE
4%
ALTER TABLE
13%
REVOKE
20%
INSERT
35%
DELETE
8%
DROP TABLE
46%
Все команды выполняются успешно
Как это работает: внешние ключи
Наверное многие уже знают правильный ответ. В конце концов, указанные команды несложно повторить и увидеть, что единственная команда, которая завершится ошибкой это DELETE:
Но как удаление только что добавленной строки может завершиться ошибкой? Почему у суперпользователя не хватает прав на таблицу t? И откуда взялась команда SELECT из контекста?
Все дело в ограничении внешнего ключа в таблице t: столбец parent_id ссылается на id этой же таблицы. Для реализации внешних ключей в PostgreSQL используются табличные триггеры. Их называют системными. Это триггеры на языке C, они создаются автоматически, команды psql их не показывают. Но их можно найти в системном каталоге pg_trigger, например в таблице t их сейчас 4. При удалении сработал триггер на DELETE. В триггере проверялось, что на удаляемую строку другие строки не ссылаются.
Так вот оказывается, что системные триггеры выполняются с правами владельца таблицы, а не с правами вызывающего команду DELETE. После выполнения REVOKE, прав на таблицу у app_owner нет. Поэтому любые пользователи будут получать подобные ошибки. Но если права вернуть, то всё заработает:
Подобное поведение будет неожиданным для пришедших из других СУБД, где забирать у владельцев права на объекты вполне допустимо.
Но неожиданности в реализации системных триггеров на этом не заканчиваются. В недавней статье Broken foreign keys: how can that happen in PostgreSQL? Лауренц Альбе дает хорошее введение в системные триггеры и рассказывает как сломать ограничение внешнего ключа "законными" действиями.
Общий вывод: чтобы не нарушить согласованность данных, нужно учитывать работу системных триггеров. Это особенно важно при разработке собственных табличных триггеров.
Наверное многие уже знают правильный ответ. В конце концов, указанные команды несложно повторить и увидеть, что единственная команда, которая завершится ошибкой это DELETE:
DELETE FROM t;
ERROR: permission denied for table t
CONTEXT: SQL statement "SELECT 1 FROM ONLY "public"."t" x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"
Но как удаление только что добавленной строки может завершиться ошибкой? Почему у суперпользователя не хватает прав на таблицу t? И откуда взялась команда SELECT из контекста?
Все дело в ограничении внешнего ключа в таблице t: столбец parent_id ссылается на id этой же таблицы. Для реализации внешних ключей в PostgreSQL используются табличные триггеры. Их называют системными. Это триггеры на языке C, они создаются автоматически, команды psql их не показывают. Но их можно найти в системном каталоге pg_trigger, например в таблице t их сейчас 4. При удалении сработал триггер на DELETE. В триггере проверялось, что на удаляемую строку другие строки не ссылаются.
Так вот оказывается, что системные триггеры выполняются с правами владельца таблицы, а не с правами вызывающего команду DELETE. После выполнения REVOKE, прав на таблицу у app_owner нет. Поэтому любые пользователи будут получать подобные ошибки. Но если права вернуть, то всё заработает:
GRANT ALL ON t TO app_owner;
DELETE FROM t WHERE id = 1;
DELETE 1
Подобное поведение будет неожиданным для пришедших из других СУБД, где забирать у владельцев права на объекты вполне допустимо.
Но неожиданности в реализации системных триггеров на этом не заканчиваются. В недавней статье Broken foreign keys: how can that happen in PostgreSQL? Лауренц Альбе дает хорошее введение в системные триггеры и рассказывает как сломать ограничение внешнего ключа "законными" действиями.
Общий вывод: чтобы не нарушить согласованность данных, нужно учитывать работу системных триггеров. Это особенно важно при разработке собственных табличных триггеров.
This media is not supported in your browser
VIEW IN TELEGRAM
🎄 Этот год был ярким и насыщенным, спасибо за то, что провели его с нами! Поздравляем вас с наступающим 2024 годом, пусть он принесёт только самое хорошее!
🎁 А в качестве небольшого подарка — наш традиционный календарь «Postgres Pro в авангарде» на 2024 год!
До встречи!
🎁 А в качестве небольшого подарка — наш традиционный календарь «Postgres Pro в авангарде» на 2024 год!
До встречи!
📍Открыта регистрация на конкурс «СУБД Postgres Pro»
Приглашаем студентов и выпускников вузов и колледжей от 18 до 27 лет принять участие в нашем конкурсе на олимпиаде «IT-Планета 2024»:
✔️Первый этап — дистанционное тестирование на знание основ теории баз данных и основ языка SQL;
✔️Второй этап — дистанционное решение логических и практических задач, разработка нестандартных SQL-запросов;
✔️Финал — состязание в очном формате среди тех, кто прошел два отборочных этапа конкурса.
🔥Победители и призеры получат подарки от Postgres Professional: мерч, ваучер на бесплатное прохождение сертификации «Администратор PostgreSQL.Профессионал» и многое другое!
Читайте подробности и регистрируйтесь
Приглашаем студентов и выпускников вузов и колледжей от 18 до 27 лет принять участие в нашем конкурсе на олимпиаде «IT-Планета 2024»:
✔️Первый этап — дистанционное тестирование на знание основ теории баз данных и основ языка SQL;
✔️Второй этап — дистанционное решение логических и практических задач, разработка нестандартных SQL-запросов;
✔️Финал — состязание в очном формате среди тех, кто прошел два отборочных этапа конкурса.
🔥Победители и призеры получат подарки от Postgres Professional: мерч, ваучер на бесплатное прохождение сертификации «Администратор PostgreSQL.Профессионал» и многое другое!
Читайте подробности и регистрируйтесь