在Postgres中使用Audit表为NOTIFY/LISTEN创建触发器是个好主意



所以我有一个postgres数据库,我安装了一个审计表源https://wiki.postgresql.org/wiki/Audit_trigger_91plus

现在我的问题如下:

我一直想创建一种流,通知我任何访问我的数据库的应用程序所做的任何更改。现在,我知道我可以通过pg创建触发器和pub/sub,但这会占用性能时间,而且随着DB的扩展,这一点可能会变得非常重要。

因此,我想知道我是否要在主表上执行相同的NOTIFY/LISTEN功能,而不是在审计表上安装它,而不是减慢实际的DB。

有人这样做过吗?如果是的话,你经历了什么,专业人士?缺点?。或者,如果有人知道我为什么应该或不应该这样做,你能告诉我吗。

感谢

通过NOTIFY/LISTEN,PRO-s:

与服务器进行轻通信,无需拉取数据更改。

通过NOTIFY/LISTEN,CON-s:

实践表明,仅仅设置它并收听事件是不够的,因为由于各种沟通问题,频道经常会关闭。对于一个严肃的系统,您需要设置一个额外的监控服务,该服务可以验证您的侦听器是否仍在运行,如果没有,则销毁现有的侦听器并创建新的侦听器。这可能很棘手,你可能找不到一个好的例子

通过计划的数据拉取,PRO-s:

  • 简单-您只需根据时间表检查数据更改
  • 可靠性-一旦pull实现工作,就没有什么可破坏的了

通过计划的数据拉取,CON-s:

服务器的额外流量,取决于您需要多快看到数据更改,以及这将如何干扰(如果有的话)对服务器的其他请求。

最新更新