Gettable изменяет подробную информацию без использования триггеров в postgres

Я работаю над интерактивной панелью мониторинга, которая записывает изменения в базе данных и отображает связанные с ними сведения на панели мониторинга. В настоящее время, чтобы получить эти изменения в жизни, я использую комбинацию triggers, functions и pg_notify для генерации уведомлений из postgres, когда в некоторых таблицах выполняются CRUD-операции.

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

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

Кроме того, если вы считаете, что подход, основанный на триггерах, лучше подходит для моего случая, пожалуйста, сообщите мне то же самое и объясните, почему.

Вы можете использовать логическое декодирование для репликации изменений данных. Если вы не хотите писать свой собственный модуль логического декодирования, вы можете использовать существующие решения, такие как wal2json или инструменты, такие как Debezium, которые могут использовать встроенный pgoutput плагин.

Обратите внимание, что таким образом вы получите только изменения данных. Операторы определения данных (CREATE, ALTER и DROP) не регистрируются.

Вернуться на верх