后台定时任务生成报表数据该怎么办?

现在有一个需求,要每天对MySQL里的数据,按需要的条件统计并生成新的数据。

在若干种方法中:

1.通过Mysql事件调度器(Event Scheduler),Mysql定时自己执行
2.通过MySQL Trigger, log数据表每次插入时执行整理操作
3.通过编程语言连接数据库,在编程语言中整理数据并插入数据表,同时用守护进程运行这个程序。
前两种方法可以比较好的保证数据的完整性,但是统计数据量比较大,SQL的编写也比较有难度。

方法3相对灵活,但是需要额外维护,还需要对异常情况做很多额外处理。

哪种方法比较好?

并且最后的数据经过简单处理可以直接把结果存放到redis中供前端通过api调取,
定时生成新数据存入mysql,然后需要的时候api去调用mysql中的新数据生成结果供前端调用,还是定时生成新数据直接计算结果存入redis,这一点我也比较纠结

请教一下有类似需求的同学都是如何实现的?

阅读 6k
3 个回答

shell+crontab

我应该会选择第三种:自己写脚本来进行数据处理。 然后用crontab定时执行这个脚本。

建议方案3,自己在应用中写定时任务,如果能确认数据每天都查询,直接在应用程序中放到redis中。

方案2Trigger的方案,是实时数据处理,对系统的写入性能有影响,只有在做实时统计的时候才考虑。而且事务不好控制,原则上汇总数据如果处理失败,不应该影响正常的业务功能。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题