工作篇之---定时任务断电处理

定时任务是我们在工作中经常使用的一种处理方法,它很好用,但是有时候也会遇到一些问题比如断电的时候,它不执行,那么数据和任务也就无法确保有无遗漏。

近期在工作中遇到了数据抓取存入新的表的问题,处理这个问题首先需要对数据进行抓取,这个抓取不再是一开始时的简单抓取全部,再全部插入新建立的表。

业务场景是:先嵌套多个表抓取最新完成的作业数据,再将数据插入表(下面暂时命名为T1)进行处理分析。我一开始的采取的做法很笨,后面请教过别人了解了不同的思路,下面

主要对这些思路进行逐一分析,有什么不同的见解或者更好的建议大家也可以指点出来共同探讨。

思路一:最笨最粗暴的方法就是,每次查询出(全部)数据,都将这些数据将之前的T1表的数据覆盖掉(但是不推荐这么做,因为我们一般只针对的新的数据进行操作,已有的数据有可能已经被引用或者数据可视化处理了)。

思路二:将查出来的数据和T1表的数据做比较,将最新的数据插入表T1(我最开始采用的就是这种方法,我将最新的数据拿创建时间在MySQL中拼接另外的一个字段形成比较字段flagA,然后在T1中也拿数据的时间字段拼接另外一个字段来比较,若不存在则将不存在的数据进行插入。这个方法的弊端最明显的是数据量大的时候就不适用)

思路三:(这也是我最终使用的方法:在抓取的数据源中找一个主要依托表--多表联查也会有一个主要依赖的表-->依赖这个表进行数据查询,在这个表中新增一个抓取标志字段capture,在数据库中默认创建默认值为0--未抓取,已抓取的数据修改字段为1,代表已抓取。每次查询只查询该字段为0的数据,再进行插入。插入完毕后将该部分数据的抓取字段更新值置1)

思路四:(这个是和朋友聊起来的时候他给的建议,每次定时任务执行的时候记录一下时间,到下一次任务执行的时候取数据表T1中最新插入的时间是否是预期上次任务执行的时间,若是则查上次执行时间到当前时间的数据即可,若不是则再往上一次执行时间比较)。

 

目前就只想到这四种思路,如果有更好的思路,希望可以提出来共同学习谈论。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值