一种用户数据清理方法及相关装置与流程
本技术涉及数据管理,尤其涉及一种用户数据清理方法及相关装置。
背景技术:
1、随着互联网/物联网技术的发展、企业级应用的普及,各类业务系统的业务数据记录,如用户行为日志、业务操作流水等,呈现出写入频率高、数据总量大、随时间增长迅速等特点,给数据库存储与管理带来了严峻挑战。以用户行为日志为例,一个中等规模的互联网应用每天可能产生数亿条用户行为记录,若全量存储各用户的用户行为记录、不加以控制,将导致数据库存储成本随时间迅速增长,同时,数据库的查询性能也会因数据量过大而下降。
2、为了控制存储成本、保障查询性能,通常需要对数据库中的业务数据记录进行清理。现有技术中,通常采取统一扫描全量用户数据、统一删除超出固定阈值的用户数据的方式,实现数据库清理目的。但是,大批量删除操作容易引发数据库性能灾难,出现数据库锁竞争、死锁、事务超时等问题。
技术实现思路
1、鉴于上述问题,本技术提供了一种用户数据清理方法及相关装置,通过单独的消费者基于删除消息队列对各用户的数据删除需求进行串行化消费,消除了删除任务之间的锁竞争问题,通过渐进式分批删除以及队列重排队机制,实现了对大批量删除需求的自动拆分,降低了发生死锁、事务超时的可能性,为保障数据库性能提供基础。
2、具体方案如下:
3、本技术第一方面提供一种用户数据清理方法,应用于删除消息消费者,该方法包括:
4、从删除消息队列获取删除消息,所述删除消息队列中的删除消息携带清理任务信息,所述清理任务信息包括用户信息和数据清理范围指示信息;
5、基于获取到的删除消息,确定本次清理任务的目标用户和目标数据清理范围;
6、对数据库中与所述目标用户和所述目标数据清理范围对应的业务数据记录进行批量删除,所述批量删除的数据总量不超过预设的批量删除阈值;
7、若实际删除的数据量等于所述批量删除阈值,则基于所述获取到的删除消息向所述删除消息队列写入新的删除消息,否则不写入;
8、其中,所述获取到的删除消息为:第一处理单元在满足第一条件时写入的消息,或,所述删除消息消费者在满足第二条件时写入的消息;所述第一条件为判定所述数据库中所述目标用户的业务数据记录总数超出预配置的数据保留阈值,所述第二条件为执行所述目标用户的历史清理任务时实际删除的数据量等于所述批量删除阈值。
9、本技术第二方面提供一种用户数据清理方法,该方法包括:
10、第一处理单元在判定数据库中目标用户的业务数据记录总数超出预配置的数据保留阈值时,向删除消息队列写入删除消息,所写入的删除消息携带所述目标用户的用户信息,以及基于所述目标用户的数据超限情况配置的数据清理范围指示信息;
11、删除消息消费者从所述删除消息队列获取删除消息,基于获取到的删除消息,确定本次清理任务的用户和数据清理范围,对所述数据库中与所述本次清理任务的用户和数据清理范围对应的业务数据记录进行批量删除,所述批量删除的数据总量不超过预设的批量删除阈值,若实际删除的数据量等于所述批量删除阈值,则基于所述获取到的删除消息向所述删除消息队列写入新的删除消息,否则不写入;其中,所述获取到的删除消息为:所述第一处理单元写入的删除消息,或,所述删除消息消费者在满足第二条件时写入的消息,所述第二条件为执行历史清理任务时实际删除的数据量等于所述批量删除阈值,所述历史清理任务具备与所述本次清理任务相同的用户。
12、本技术第三方面提供一种用户数据清理装置,包括:第一处理单元、删除消息队列和删除消息消费者;
13、所述第一处理单元用于在判定数据库中目标用户的业务数据记录总数超出预配置的数据保留阈值时,向所述删除消息队列写入删除消息,所述第一处理单元写入的删除消息携带所述目标用户的用户信息,以及基于所述目标用户的数据超限情况配置的数据清理范围指示信息;
14、所述删除消息消费者用于从所述删除消息队列获取删除消息,基于获取到的删除消息,确定本次清理任务的用户和数据清理范围,对所述数据库中与所述本次清理任务的用户和数据清理范围对应的业务数据记录进行批量删除,所述批量删除的数据总量不超过预设的批量删除阈值,以及,仅在实际删除的数据量等于所述批量删除阈值时,基于所述获取到的删除消息向所述删除消息队列写入新的删除消息;其中,所述获取到的删除消息为:所述第一处理单元写入的删除消息,或,所述删除消息消费者在满足第二条件时写入的消息,所述第二条件为执行历史清理任务时实际删除的数据量等于所述批量删除阈值,所述历史清理任务具备与所述本次清理任务相同的用户;
15、所述删除消息队列用于承载所写入的删除消息。
16、本技术第四方面提供一种电子设备,包括至少一个处理器和与所述处理器连接的存储器,其中:
17、所述存储器用于存储计算机程序;
18、所述处理器用于执行所述计算机程序,以实现上述第一方面所述的用户数据清理方法,或实现上述第二方面所述的用户数据清理方法。
19、本技术第五方面提供一种存储介质,所述存储介质承载有一个或多个计算机程序,当所述一个或多个计算机程序被电子设备执行时,能够使所述电子设备实现上述第一方面所述的用户数据清理方法,或实现上述第二方面所述的用户数据清理方法。
20、本技术第六方面提供一种计算机程序产品,包括计算机可读指令,当所述计算机可读指令在电子设备上运行时,能够使所述电子设备实现上述第一方面所述的用户数据清理方法,或实现上述第二方面所述的用户数据清理方法。
21、借由上述技术方案,本技术借由单独的删除消息消费者基于删除消息队列异步串行执行删除任务,可以实现数据清理操作与其余操作(如清理检测、业务数据记录写入等)在时间与资源上的完全解耦,在一定程度上解决了数据清理与其余操作竞争资源的问题,有助于保证系统吞吐量平稳、避免因删除操作引发的数据库性能抖动,此外,通过单个消费者消费删除消息队列,解决了删除任务之间的锁竞争问题(即单次事务长时间持有行锁、间隙锁,阻塞其他事务的读写操作的问题);在此基础上,删除消息消费者从删除消息队列拉取删除消息,确定本次删除任务对应的用户和数据清理范围,在批量删除阈值的限制下,对数据库存储的对应数据进行批量删除,由于批量删除的数据量不超过批量删除阈值、每批仅删除最多固定数量的业务数据记录,以此降低了每个删除事务持有锁的时间,降低了数据库死锁概率和事务超时风险(即由事务执行时间长而触发数据库事务超时机制、导致事务失败或回滚的风险),同时,降低了每个删除事务所产生的日志量,为控制主从同步延迟提供了基础;在完成批量删除后,删除消息消费者比较实际删除的数据量与批量删除阈值,在两者相等时,基于获取到的删除消息向删除消息队列写入新的删除消息,以通过下次消费该消息继续清理该用户数据,本技术通过在数据清理未完成时循环投递删除消息,达到了以多次执行小批量删除的方式满足大批量删除需求的目的。
22、本技术通过渐进式分批删除与队列重排队机制,解决了由大批量删除操作导致的数据库锁竞争、死锁、事务超时、主从延迟(即由大批量删除产生的日志量大,导致从库回放延迟,影响读写分离架构下的查询性能的问题)等数据库性能问题,为在保障数据库性能的前提下实现业务数据记录清理任务提供了基础。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com