Как стать автором
Обновить

Комментарии 7

А что, пулами соединений больше не принято пользоваться? И слово "middleware" больше не нужно?

Наверное и с пулами соединений от триггера на login может быть польза. С большой корпоративной БД могут работать сразу несколько приложений, каждое со своим пулом/middleware. Тогда в on-login можно настраивать пулы сеансов каждого приложения.

On-Lgin триггер точно также будет срабатывать, когда соединение впервые открывается в пуле соединений. И в таком триггере Вы можете определить проверки, которые должны быть выполнены в момент создания пула соединений. Поэтому, On-Login триггер вполне востребован и для серверов приложений.

On-Login триггер в СУБД Postgres Pro Enterprise, так же как и в Oracle Database, является одним из видов триггеров событий базы данных

Как-то возникают вопросы к терминологии. Внешний пользователь всё-таки подключается к серверу БД. Это только потом для него устанавливается текущая БД. Формально события логона - это событие уровня сервера, а установление текущей БД для соединения, во время которого и срабатывает триггер - это уже процесс настройки контекста по факту выполнения аутентификации.

Возможно, такая терминология полностью легальна для Постгресса, где подключение ограничено текущей базой данных, и в другую БД можно обратиться только через расширения типа dblink или fdw. Да, поскольку любое такое расширение устанавливает отдельное соединение, вероятно, на это событие тоже срабатывает on-login триггер?

И ещё не освещённые в статье вопросы - а где именно регистрируется такой триггер, объектом чего он является? объектом конкретной базы данных, или же объектом системной БД? И переносится ли он в составе бэкапа отдельной базы данных?

Внешний пользователь всё-таки подключается к серверу БД.

Настройка подключения именно к серверу выполняется в pg_hba.conf. Триггер on-login срабатывает позже.

Это только потом для него устанавливается текущая БД.

После pg_hba.conf еще проверяется разрешение на подключение к указанной базе данных и только потом сработает on-login. Такая вот цепочка.

... в другую БД можно обратиться только через расширения типа dblink или fdw. Да, поскольку любое такое расширение устанавливает отдельное соединение, вероятно, на это событие тоже срабатывает on-login триггер?

Всё верно. Когда dblink или postgres_fdw подключаются к удаленной БД с триггером on-login, то триггер сработает.

...а где именно регистрируется такой триггер, объектом чего он является? И переносится ли он в составе бэкапа отдельной базы данных?

Триггер и триггерная функция регистрируются в системном каталоге конкретной базы данных данных. И они попадут в резервную копию этой БД.

О чём написано в самом начале статьи:

Компания Postgres Pro передала свою реализацию этой технологии сообществу PostgreSQL и скоро они войдут и в open source версию СУБД PostgreSQL, доступную всем – 17-ый релиз, который будет выпущен в 2024 году.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий