所以我有一个安装了审计表的 postgres 数据库 - 来源 https://wiki.postgresql.org/wiki/Audit_trigger_91plus
现在我的问题如下:
我一直想创建一种流,通知我任何有权访问我的数据库的应用程序所做的任何更改。现在,我知道我可以通过 pg 创建触发器和发布/订阅,但这会占用性能时间,而且随着数据库的扩展,这会变得很重要。
因此,我想知道我是否要在主表上执行相同的 NOTIFY/LISTEN 功能,而不是将其安装在审计表上,而不是减慢实际的 DB。
有人做过吗?如果是这样,你经历了什么,专业人士?缺点?或者,如果有人知道我为什么应该或不应该这样做,请告诉我。
谢谢
最佳答案
通过 NOTIFY/LISTEN
,PRO-s:
与服务器的轻度通信,无需拉取数据更改。
通过 NOTIFY/LISTEN
,CON-s:
实践表明,仅仅设置它并监听事件是不够的,因为由于各种通信问题, channel 经常关闭。对于一个严肃的系统,您需要放置一个额外的监控服务,以验证您的听众是否仍在运行,如果没有 - 销毁现有的并创建新的。这可能很棘手,您可能找不到这样做的好例子。
通过计划的数据拉取,PRO-s:
- 简单 - 您只需根据计划检查数据更改;
- 可靠性 - 一旦拉动实现正常工作,就没有什么可以打破的。
通过计划的数据拉取,CON-s:
服务器的额外流量,取决于您需要以多快的速度查看数据更改,以及这将如何干扰(如果有的话)对服务器的其他请求。
关于node.js - 在 Postgres 中使用审计表为 NOTIFY/LISTEN 创建触发器是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36756685/