1、背景
数据清洗就是将大量数据组装后调用第三方接口,根据返回结果分类存储成功数据和错误数据。平均每天对接的数据总共有3w左右需要清洗,有时候重复清洗所有数据达到100w以上。
2、设计方案
2.1、版本V1.0
2.1.1、待清洗数据存储在表cookie_clean_t(已经按照需求进行过第一步去重),字段state标记了:未清洗,清洗中,清洗成功,清洗失败三种状态;
2.1.2、后台数据清洗项目(xx-cookie-clean)提供了后台分发待清洗数据的接口(设计了同步锁),清洗机器人项目(xx-robot-clean)每次从后台接口获取数据时分发的数据都是未清洗状态,已分发的数据更新状态为清洗中,另外接收清洗结果的接口将更新数据为清洗成功或清洗失败状态;
2.2、版本V2.0
2.2.1、待清洗数据存储在表cookie_clean_t(已经按照需求进行过第一步去重),字段state标记了:未清洗,清洗成功,清洗失败三种状态;
2.2.2、后台数据清洗项目(xx-cookie-clean)提供了后台分发待清洗数据的接口(redis加锁),清洗机器人项目(xx-robot-clean)每次从后台接口获取数据时分发的数据都是未分发并且没有清洗状态的,已分发的数据保存到表cookie_short_run_t,另外接收清洗结果的接口清洗成功的数据存储到临时表cookie_short_succ_t,将清洗失败的数据存储到临时表cookie_short_error_t;
2.2.3、临时表定时维护数据清洗状态;
3、结论
加锁和分临时表的机制降低了接口分发数据查询数据库的频率,极大缓解数据库压力