微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何:通知应用程序数据库表行已更新?

我正在开发基于Windows的应用程序,使用Postgresql将执行的过程

从UI获取信息

执行一些逻辑并将相关信息存储到数据库

存储的信息必须立即或按照计划间隔(例如xyzdate的5:00)通过networking发送

目前,我们已经开发了dispacher机制(线程),它不断地轮询数据库插入数据库中的新信息。 线程获取信息并发送到networking模块。

但是,我觉得这不是正确的做法

每次轮询都是一个开销。 有些时候没有什么可执行的

这不是实时的,因为我们每5秒钟就会进行一次轮询

所以

如何编写一个VB任务脚本来检查文件何时不再被使用?

在Postgresql函数中使用参数运行系统命令

CREATE TRIGGER sys_exec和python

从Oracle AFTER INSERT触发器调用Windows服务

数据库更新信息后,是否有办法将触发器发送到我的networking模块?

或者有更好的方法来完成这个任务?

提前致谢。

是的,你是正确的@RDX,你不应该每次轮询它,而是你可以在Postgres中写一个触发器,并从这个触发器尝试调用一个Java程序,可以在下面的线程看到。

从Postgres触发器调用java pgm

您可以使用Postgresql的listen / notify功能

http://www.postgresql.org/docs/current/static/sql-listen.html

http://www.postgresql.org/docs/current/static/sql-notify.html

对这些消息感兴趣的客户端会执行一个listen语句,触发器会notify他们。

我不使用C#,但根据手册,您可以异步方式检索邮件 – 这仍然涉及一些“轻量级”轮询,因为通知邮件只作为服务器的答案的一部分发送。 手册声称运行一个“空”语句(如; )就足够了。 使用Java / JDBC我使用了一个简单的select 42 ,它不会在服务器上施加很大的工作负载,因为没有任何表被触摸。

这个轮询比实际检索表的数据明确得更快,更具可扩展性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐