本发明专利技术提供一种数据处理方法、系统及介质,方法包括:处理线程在被处理引擎启动后,锁定分布式锁,并在判定锁定成功时获取第一数据库中指定的数据表的游标ID;分布式锁及游标ID存储于第二数据库;在数据表中确定游标ID对应的第一数据及第一数据后预设条数的第二数据,并在第一数据和第二数据中检索待处理数据;数据表中的数据设置有数据ID;在检索完成后,将游标ID更新为最后一条第二数据的数据ID,并释放分布式锁,以便其它处理线程锁定分布式锁;若检索到待处理数据,则处理待处理数据,将处理结果发送至处理引擎进行合并;重新锁定分布式锁;可利用分布式锁及游标ID避免重复检索所造成的性能浪费,并有效保障数据处理的一致性。性。性。
【技术实现步骤摘要】
一种数据处理方法、系统及计算机可读存储介质
[0001]本专利技术涉及数据库领域,特别涉及一种数据处理方法、系统及计算机可读存储介质。
技术介绍
[0002]在企业级应用中,经常会需要对海量数据进行检索并处理。大多数数据将被当场处理,但少数数据无法被当场处理,需要后续清扫数据库进行处理。由于未处理数据分布于数据表的不同位置,因此需要有一种方案能够快速的找到它们并进行处理。
[0003]相关技术中,通常采用多个线程对数据表进行检索,然而每一线程在进行检索时都需从数据表头进行处理,在面对巨量数据时,这种检索方式容易导致检索失败,或是增长检索时间;此外在检索时任由数据并发,仅依赖下游幂等控制或者数据库唯一索引来确保数据一致性,容易浪费带宽、下游系统运算能力及数据库运算资源。
技术实现思路
[0004]本专利技术的目的是提供一种数据处理方法、系统及计算机可读存储介质,可利用分布式锁及游标ID避免重复检索所造成的性能浪费,并有效保障数据处理的一致性。
[0005]为解决上述技术问题,本专利技术提供一种数据处理方法,包括:
[0006]处理线程在被处理引擎启动后,锁定分布式锁,并在判定锁定成功时获取第一数据库中指定的数据表的游标ID;所述分布式锁及所述游标ID存储于第二数据库;
[0007]在所述数据表中确定所述游标ID对应的第一数据及所述第一数据后预设条数的第二数据,并在所述第一数据和所述第二数据中检索待处理数据;所述数据表中的数据设置有数据ID;
[0008]在检索完成后,将所述游标ID更新为最后一条所述第二数据的数据ID,并释放所述分布式锁,以便其它处理线程锁定所述分布式锁;
[0009]若检索到所述待处理数据,则处理所述待处理数据,将处理结果发送至所述处理引擎进行合并;
[0010]重新锁定所述分布式锁。
[0011]可选地,在处理所述待处理数据之前,还包括:
[0012]所述处理线程将所述待处理数据的待处理数据ID发送至所述第二数据库;
[0013]所述第二数据库判断是否已存有所述待处理数据ID;
[0014]若是,则记录所述待处理数据ID,并向所述处理线程发送写入成功信息,以使所述处理线程执行所述对所述待处理数据进行处理的步骤;
[0015]若否,则向所述处理线程发送写入失败信息,以使所述处理线程不执行所述对所述待处理数据进行处理的步骤。
[0016]可选地,在向所述处理线程发送写入成功信息之后,还包括:
[0017]所述第二数据库记录所述待处理数据ID的写入时刻;
[0018]根据所述写入时刻判断所述待处理数据ID是否过期;
[0019]若是,则清除所述待处理数据ID。
[0020]可选地,在将所述游标ID更新为最后一条所述第二数据的数据ID之前,还包括:
[0021]所述处理线程判断是否检索到所述待处理数据;
[0022]若是,则执行将所述游标ID更新为最后一条所述第二数据的数据ID的步骤;
[0023]若否,则在所述第一数据和所述第二数据中重新检索所述待处理数据,并判断是否检索到所述待处理数据;
[0024]若是,则将所述游标ID更新为第一条所述待处理数据前一条数据的数据ID;
[0025]若否,则执行将所述游标ID更新为最后一条所述第二数据的数据ID的步骤。
[0026]可选地,所述第二数据库为Redis数据库。
[0027]可选地,在处理线程被处理引擎启动之前,还包括:
[0028]所述处理引擎接收调度中心下发的配置信息;所述配置信息包括数据表参数、待处理数据检索条件及检索方式;
[0029]根据所述配置信息配置所述处理线程,以使所述处理线程根据所述数据表参数在所述第一数据表中查找所述数据表中的数据,以及根据所述待处理数据检索条件和所述检索方式检索所述待处理数据;
[0030]在接收到所述调度中心下发的任务执行指令时,启动多个所述处理线程。
[0031]可选地,在启动多个所述处理线程之后,还包括:
[0032]所述处理引擎记录任务工作时间,并判断所述任务工作时间是否小于预设阈值;
[0033]若是,则继续记录所述任务工作时间;
[0034]若否,则停止记录所述任务工作时间,并关闭所述处理线程。
[0035]可选地,还包括:
[0036]所述处理引擎在接收到重置游标指令时,将所述游标ID重置为预设默认值。
[0037]本专利技术还提供一种数据处理系统,包括:处理引擎、处理线程、第一数据库及第二数据库,其中,
[0038]所述处理线程,用于在被所述处理引擎启动后,锁定分布式锁,并在判定锁定成功时获取第一数据库中指定的数据表的游标ID;所述分布式锁及所述游标ID存储于第二数据库;在所述数据表中确定所述游标ID对应的第一数据及所述第一数据后预设条数的第二数据,并在所述第一数据和所述第二数据中检索待处理数据;所述数据表中的数据设置有数据ID;在检索完成后,将所述游标ID更新为最后一条所述第二数据的数据ID,并释放所述分布式锁,以便其它处理线程锁定所述分布式锁;若检索到所述待处理数据,则处理所述待处理数据,将处理结果发送至所述处理引擎进行合并;重新锁定所述分布式锁;
[0039]所述处理引擎,用于启动所述处理线程;接收所述处理线程发送的处理结果并合并;
[0040]所述第一数据库,用于存储所述数据表;
[0041]所述第二数据库,用于存储所述分布式锁及所述游标ID。
[0042]本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上述所述的数据处理方法。
[0043]本专利技术提供一种数据处理方法,包括:处理线程在被处理引擎启动后,锁定分布式锁,并在判定锁定成功时获取第一数据库中指定的数据表的游标ID;所述分布式锁及所述游标ID存储于第二数据库;在所述数据表中确定所述游标ID对应的第一数据及所述第一数据后预设条数的第二数据,并在所述第一数据和所述第二数据中检索待处理数据;所述数据表中的数据设置有数据ID;在检索完成后,将所述游标ID更新为最后一条所述第二数据的数据ID,并释放所述分布式锁,以便其它处理线程锁定所述分布式锁;若检索到所述待处理数据,则处理所述待处理数据,将处理结果发送至所述处理引擎进行合并;重新锁定所述分布式锁。
[0044]可见,本专利技术利用分布式锁及游标ID来提升多处理线程的检索能力,首先,处理线程在被处理引擎启动后,将锁定分布式锁,并在判定成功锁定时开始执行数据检索。由于仅有单个处理线程能够成功锁定分布式锁,因此本专利技术能够串行控制多个处理线程在数据表中进行数据检索,确保每次只能有单个处理线程访问并检索数据库;此外,在开始执行数据检索时,处理线程将获取游标ID,该ID为处理线程本轮检索的起始位置。该线程将在数据表中确定游标ID对应的第一数本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种数据处理方法,其特征在于,包括:处理线程在被处理引擎启动后,锁定分布式锁,并在判定锁定成功时获取第一数据库中指定的数据表的游标ID;所述分布式锁及所述游标ID存储于第二数据库;在所述数据表中确定所述游标ID对应的第一数据及所述第一数据后预设条数的第二数据,并在所述第一数据和所述第二数据中检索待处理数据;所述数据表中的数据设置有数据ID;在检索完成后,将所述游标ID更新为最后一条所述第二数据的数据ID,并释放所述分布式锁,以便其它处理线程锁定所述分布式锁;若检索到所述待处理数据,则处理所述待处理数据,将处理结果发送至所述处理引擎进行合并;重新锁定所述分布式锁。2.根据权利要求1所述的数据处理方法,其特征在于,在处理所述待处理数据之前,还包括:所述处理线程将所述待处理数据的待处理数据ID发送至所述第二数据库;所述第二数据库判断是否已存有所述待处理数据ID;若是,则记录所述待处理数据ID,并向所述处理线程发送写入成功信息,以使所述处理线程执行所述对所述待处理数据进行处理的步骤;若否,则向所述处理线程发送写入失败信息,以使所述处理线程不执行所述对所述待处理数据进行处理的步骤。3.根据权利要求2所述的数据处理方法,其特征在于,在向所述处理线程发送写入成功信息之后,还包括:所述第二数据库记录所述待处理数据ID的写入时刻;根据所述写入时刻判断所述待处理数据ID是否过期;若是,则清除所述待处理数据ID。4.根据权利要求1所述的数据处理方法,其特征在于,在将所述游标ID更新为最后一条所述第二数据的数据ID之前,还包括:所述处理线程判断是否检索到所述待处理数据;若是,则执行将所述游标ID更新为最后一条所述第二数据的数据ID的步骤;若否,则在所述第一数据和所述第二数据中重新检索所述待处理数据,并判断是否检索到所述待处理数据;若是,则将所述游标ID更新为第一条所述待处理数据前一条数据的数据ID;若否,则执行将所述游标ID更新为最后一条所述第二数据的数据ID的步骤。5.根据权利要求1所述的数据处理方法,其特征在于,所述第二数据库为Redis数据库。6.根据权利要求1至5任...
【专利技术属性】
技术研发人员:陈嘉琦,胡琪,魏丹,
申请(专利权)人:上海途虎信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。