node.js - 在 Postgres 中使用审计表为 NOTIFY/LISTEN 创建触发器是个好主意吗?

标签 node.js database postgresql triggers audit

所以我有一个安装了审计表的 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/

相关文章:

javascript - Angular Promise 使用多个 http 请求

java - Hibernate 中稍微复杂的 ManyToMany 关系

javascript - 本地主机在 Docker 中无法用于生产

javascript - 无法查看 EJS 文件中的数组数据

mysql - 存储海量数据

Java servlet 表单和数据库

postgresql - Google Data Studio + Postgresql 中的动态日期

postgresql - Postgres : buckets always filled from left in crosstab query

python - 如何在 Python psycopg2 中捕获特定的 Postgres 异常

javascript - 引用错误: Require is not defined (Webstorm)