如题,数据库用的是MySQL。其中某个表一直以周期性添加一条数据。 目前用的是轮询的方式。 题主想知道数据库是否支持类似于Java中观察者模式,当数据库添加记录后,就会自动触发某个自定义函数?
人生最曼妙的风景,竟是内心的淡定与从容!
以下,回答都是建立在主表数据量超大的基础上。
(1) 使用mysql触发器 (2) mysql是可以运行外部脚本(可能跟用户权限和平台有关),通过脚本触发后端程序
(1) 使用mysql触发器 (2) 触发到数据后,将数据写入到内存表 (3) 后端程序轮询内存表,处理完成后,删除已经轮询的数据,防止内存表爆掉
你的思路最好的解决办法应该是Hook,做个钩子给MySQL,当数据库改变了就执行钩子程序。不过我搜了下对于给数据库直接增加Hook好像没什么好的思路。 唯一看到可行的办法是:使用Git管理你的MySQL数据库,当数据库文件发生更改的时候通过Git调用Hook。虽然可行,不过感觉略Geek了一点。
Hook
所以感觉比较简单的思路还是从你的程序上思考,当程序执行了数据库操作类中的insert()函数后执行某个Hook函数。也就是说不给数据库加钩子,而给程序的数据库操作类加钩子。
insert()
Hook函数
触发器能不能达到你的需求呢??
触发器
当执行insert的时候,就触发。。
以下,回答都是建立在主表数据量超大的基础上。
方法1
(1) 使用mysql触发器
(2) mysql是可以运行外部脚本(可能跟用户权限和平台有关),通过脚本触发后端程序
方法2
(1) 使用mysql触发器
(2) 触发到数据后,将数据写入到内存表
(3) 后端程序轮询内存表,处理完成后,删除已经轮询的数据,防止内存表爆掉
你的思路最好的解决办法应该是
Hook
,做个钩子给MySQL,当数据库改变了就执行钩子程序。不过我搜了下对于给数据库直接增加Hook好像没什么好的思路。唯一看到可行的办法是:使用Git管理你的MySQL数据库,当数据库文件发生更改的时候通过Git调用Hook。虽然可行,不过感觉略Geek了一点。
所以感觉比较简单的思路还是从你的程序上思考,当程序执行了数据库操作类中的
insert()
函数后执行某个Hook函数
。也就是说不给数据库加钩子,而给程序的数据库操作类加钩子。触发器
能不能达到你的需求呢??当执行insert的时候,就触发。。