后台定时任务生成报表数据该怎么办?
现在有一个需求,要每天对MySQL里的数据,按需要的条件统计并生成新的数据。
在若干种方法中:
1.通过Mysql事件调度器(Event Scheduler),Mysql定时自己执行
2.通过MySQL Trigger, log数据表每次插入时执行整理操作
3.通过编程语言连接数据库,在编程语言中整理数据并插入数据表,同时用守护进程运行这个程序。
前两种方法可以比较好的保证数据的完整性,但是统计数据量比较大,SQL的编写也比较有难度。
方法3相对灵活,但是需要额外维护,还需要对异常情况做很多额外处理。
哪种方法比较好?
并且最后的数据经过简单处理可以直接把结果存放到redis中供前端通过api调取,
是定时生成新数据存入mysql,然后需要的时候api去调用mysql中的新数据生成结果供前端调用,还是定时生成新数据直接计算结果存入redis,这一点我也比较纠结。
请教一下有类似需求的同学都是如何实现的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
shell+crontab
我应该会选择第三种:自己写脚本来进行数据处理。 然后用crontab定时执行这个脚本。
建议方案3,自己在应用中写定时任务,如果能确认数据每天都查询,直接在应用程序中放到redis中。
方案2Trigger的方案,是实时数据处理,对系统的写入性能有影响,只有在做实时统计的时候才考虑。而且事务不好控制,原则上汇总数据如果处理失败,不应该影响正常的业务功能。