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

时间:2009-12-17 21:01:06

标签: perl poe

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

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

2 个答案:

答案 0 :(得分:7)

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

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

不太好主意:使用EasyDBI对表运行定期选择并查看更改内容。如果您的数据很小,它可以工作(但它仍然容易出现计时问题);如果你的数据很大,这将是一个悲惨的失败。

答案 1 :(得分:5)

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

或者你可以创建一个导致另一个文件或网络事件被触发的SQL触发器(写入文件,命名管道或套接字),让POE听取它。