是否有用于监视数据库表以进行更改的Perl POE模块?

dan*_*dan 4 perl poe

是否有任何Wheel/POCO/Option使用POE模块在Perl中执行此操作:我想监视DB表以查找已更改的记录(删除/插入/更新)并相应地对这些更改做出反应.

如果是,可以提供一些代码或显示此链接?

hob*_*bbs 7

不是我知道的,但如果你真的很勤奋,你可以写一个.我可以想到两种方法.

最好的方法之一是:访问事务日志/复制源,例如MySQL binlog.为其格式编写POE :: Filter,然后使用POE :: Wheel :: FollowTail获取事件流,每个事件对应一个影响DB的语句.然后,您可以过滤数据以找到您感兴趣的内容.

不太好的想法:使用EasyDBI对表运行定期选择,看看有什么变化.如果您的数据很小,它可以工作(但它仍然容易出现计时问题); 如果你的数据很大,这将是一个悲惨的失败.


MkV*_*MkV 5

如果您使用的是PostgreSQL,则可以在表的更改上创建一个名为NOTIFY的触发器,并在您的客户端应用程序中打开一个连接并执行相同通知的LISTEN.然后,您可以让POE在DBD :: Pg pg_socket文件描述符上侦听文件事件.

或者,您可以创建一个SQL触发器,该触发器会触发另一个文件或网络事件(写入文件,命名管道或套接字),然后让POE监听.