一种数据导出方法、装置、计算机设备及存储介质与流程

文档序号:27260797发布日期:2021-11-05 21:52阅读:91来源:国知局
一种数据导出方法、装置、计算机设备及存储介质与流程

1.本发明涉及大数据领域,尤其涉及一种数据导出方法、装置、计算机设备及存储介质。


背景技术:

2.随着大数据的日益发展,在业务系统中经常会有导出数据的场景,目前通常采用数据导出工具进行数据导出,但是通过数据导出工具实现数据导出容易存在以下缺陷:无法实现边读边写,数据导出速度较慢,在数据量较高时导出数据占用内存高,甚至可能发生内存溢出。因此,亟待一种数据导出的方案以解决上述数据导出存在的缺陷。


技术实现要素:

3.本发明实施例提供了一种数据导出方法、装置、计算机设备及存储介质,可以在导出数据时通过分片处理数据实现边读边写,减少内存资源消耗,将读与统计分离,数据处理速度更快,从而提高了数据导出的效率。
4.第一方面,本发明实施例提供了一种数据导出方法,包括:
5.获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;
6.根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;
7.当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;
8.当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。
9.进一步地,所述根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,包括:
10.根据所述筛选条件中携带的分片段时间间隔将所述导出开始时间与所述导出结束时间之间的时间进行等分分片;
11.按照所述导出开始时间与所述导出结束时间之间等分分片后的各个时间段创建主线程任务;
12.通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据。
13.进一步地,所述通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据,包括:
14.当在等分分片后的第一个时间段内在所述指定数据库中没有扫描到数据时,将所
述等分分片后的第二个时间段和第三个时间段进行合并处理;
15.在所述第二个时间段和所述第三个时间段合并处理后的时间段内扫描所述指定数据库的数据;
16.当在所述合并处理后的时间段内扫描到数据时,将所述第二个时间段和所述第三个时间段后的各相邻时间段两两合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
17.进一步地,所述方法还包括:
18.当在所述合并处理后的时间段内未扫描到数据时,将所述等分分片后的第三个时间段后的4个相邻时间段进行合并处理;
19.在所述第三个时间段后的4个相邻时间段合并处理后的时间段内扫描所述指定数据库的数据;
20.当在所述合并处理后的时间段内扫描到数据时,将所述第三个时间段后的各4个相邻时间段进行合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
21.进一步地,所述通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据之后,还包括:
22.获取在所述等分分片后的各个时间段内从所述指定数据库中扫描得到的所述扫描结果数据的数据量;
23.根据所述各个时间段内的扫描结果数据的数据量,对在所述各个时间段内的扫描结果数据添加标识,其中,不同时间段内的扫描数据的标识不相同。
24.进一步地,所述方法还包括:
25.当检测到所述预设队列中存在扫描结果数据时,监测所述预设队列中的扫描结果数据的数据量是否大于第一预设阈值;
26.当监测到所述预设队列中存储的扫描结果数据的数据量大于第一预设阈值时,向所述主线程任务发送第一通知消息,其中,所述第一通知消息用于通知所述主线程任务暂停扫描所述指定数据库中的数据;
27.当监测到所述预设队列中的扫描结果数据的数据量小于第二预设阈值时,向所述主线程任务发送第二通知消息,其中,所述第二通知消息用于通知所述主线程任务增大等分分片的分片段时间间隔,并按照增大后的分片片段时间间隔扫描所述指定数据库中的数据。
28.进一步地,所述方法还包括:
29.获取通过所述主线程任务扫描所述指定数据库中的数据的扫描进度信息;
30.将所述扫描进度信息存储至所述第二存储装置中,其中,所述第二存储装置为缓存存储装置。
31.第二方面,本发明实施例提供了一种数据导出装置,包括:
32.获取单元,用于获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;
33.扫描单元,用于根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;
34.写入单元,用于当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;
35.生成单元,用于当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。
36.第三方面,本发明实施例提供了一种计算机设备,包括处理器和存储器,其中,所述存储器用于存储计算机程序,所述处理器被配置用于调用所述计算机程序,执行上述第一方面的方法。
37.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行以实现上述第一方面的方法。
38.本发明实施例可以获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。通过这种方式,可以在导出数据时通过分片处理数据实现边读边写,减少内存资源消耗,将读与统计分离,数据处理速度更快,从而提高了数据导出的效率。
附图说明
39.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本发明实施例提供的一种数据导出方法的示意流程图;
41.图2是本发明实施例提供的一种时间分布的示意图;
42.图3是本发明实施例提供的一种数据导出装置的示意框图;
43.图4是本发明实施例提供的一种计算机设备的示意框图。
具体实施方式
44.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.本发明实施例提供的数据导出方法可以应用于一种数据导出装置,在某些实施例中,所述数据导出装置设置于计算机设备中。在某些实施例中,所述计算机设备包括但不限于智能手机、平板电脑、膝上型电脑等中的一种或者多种。
46.本发明实施例可以获取数据导出请求,所述数据导出请求携带了筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。
47.本发明实施例通过筛选条件分片从指定数据库中扫描数据,同时将扫描结果数据存入预设队列中,并将通过子线程任务从预设队列中获取的扫描结果数据写入目标文件中,以实现边读边写,减少了内存资源消耗,提高了数据导出的效率。
48.下面结合附图1对本发明实施例提供的数据导出方法进行示意性说明。
49.请参见图1,图1是本发明实施例提供的一种数据导出方法的示意流程图,如图1所示,该方法可以由数据导出装置执行,所述数据导出装置设置于计算机设备中。具体地,本发明实施例的所述方法包括如下步骤。
50.s101:获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔。
51.本发明实施例中,数据导出装置可以获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔。
52.在某些实施例中,所述筛选条件中的所述导出开始时间和导出结束时间为当前时间之前的时间;所述分片段时间间隔为所述导出开始时间与所述导出结束时间之间的时间分片的时间间隔,用于对导出开始时间与导出结束时间之间的时间进行等分分片。在某些实施例中,所述筛选条件中导出开始时间、导出结束时间、分片段时间间隔如图2所示,图2是本发明实施例提供的一种时间分布的示意图。
53.在某些实施例中,所述筛选条件用于指示需要从指定数据库中扫描数据的时间以及将该时间进行等分分片后的各个时间段,以创建主线程任务,使得主线程任务可以在各个时间段扫描指定数据库中的数据。通过这种方式,有助于通过控制各个时间段的大小来控制扫描指定数据库中数据的数据量和扫描速度。
54.s102:根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中。
55.本发明实施例中,数据导出装置可以根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中。在某些实施例中,所述指定数据库包括但不限于mysql数据库。
56.在一个实施例中,数据导出装置在根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据时,可以根据所述筛选条件中携带的分片段时间间隔将所述导出开始时间与所述导出结束时间之间的时间进行等分分片;按照所述导出开始时间与所述导出结束时间之间等分分片后的各个时间段创建主线程任务;通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据。
57.在一个实施例中,数据导出装置在通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据时,当在等分分片后的第一个时间段内在所述指定数据库中没有扫描到数据时,可以将所述等分分片后的第二个时间段和第三个时间段进行合并处理。在一个实施例中,对分片后的时间段进行合并处理的规则为按照2
n
选取时间段的数量进行合并处理,其中,n的取值为0、1、2、3...n。
58.在一个实施例中,数据导出装置在通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据时,当在等分分片后的第一个时间段内(即20)在所述指定数据库中没有扫描到数据时,将所述等分分片后的第二个时间段和第三个时间段两个相邻时间段(21)进行合并处理;在所述第二个时间段和所述第三个时间段合并处理后的时间段内扫描所述指定数据库的数据;当在所述合并处理后的时间段内扫描到数据时,将所述第二个时间段和所述第三个时间段后的各相邻时间段两两合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
59.在一个实施例中,数据导出装置当在所述合并处理后的时间段内未扫描到数据时,将所述等分分片后的第三个时间段后的4(22)个相邻时间段进行合并处理;在所述第三个时间段后的4个相邻时间段合并处理后的时间段内扫描所述指定数据库的数据;当在所述合并处理后的时间段内扫描到数据时,将所述第三个时间段后的各4个相邻时间段进行合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
60.在一种实施方式中,当在所述第三个时间段后的4个相邻时间段合并处理后的时间段内未扫描到数据时,则可以将第七个时间段后的8(即23)个相邻时间段进行合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据。
61.在一个实施例中,数据导出装置通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据之后,可以获取在所述等分分片后的各个时间段内从所述指定数据库中扫描得到的所述扫描结果数据的数据量;根据所述各个时间段内的扫描结果数据的数据量,对在所述各个时间段内的扫描结果数据添加标识,其中,不同时间段内的扫描数据的标识不相同。在某些实施例中,所述扫描结果数据的数据量可以包括但不限于扫描结果数据的页数、条数等。
62.在某些实施例中,所述标识可以包括但不限于数字标识、字母标识等。在一种实施方式中,在对各个时间段内的扫描结果数据添加标识时,可以以标识升序的方式添加。
63.在一个示例中,若当前页为500条,且各个分片的时间段内的扫描结果数据的数据条数为500条,以数字的升序对每条扫描结果数据添加标识,假设在扫描查询到当前页的500条扫描结果数据时,获取到第500条的标识为maxid,则可以将最大maxid传入下一次分页扫描,当在分片的时间段内扫描当前页的下一页的数据时,下一页的扫描结果数据的标识以maxid为基础,按照大于maxid的标识升序添加下一页的扫描结果数据的标识。
64.在一个实施例中,数据导出装置可以获取通过所述主线程任务扫描所述指定数据库中的数据的扫描进度信息;将所述扫描进度信息存储至所述第二存储装置中,其中,所述第二存储装置为缓存存储装置。在某些实施例中,所述第二存储装置可以包括但不限于redis缓存。通过将扫描进度信息存储至第二存储装置中有助于监控扫描进度。
65.在一个实施例中,数据导出装置在将所述扫描结果数据传输至预设队列中时,可
以根据获取扫描结果数据的先后顺序依次将所述扫描结果数据传输至预设队列中。
66.s103:当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件。
67.本发明实施例中,数据导出装置可以当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件。
68.在一个实施例中,数据导出装置在通过所述子线程任务从所述预设队列中获取所述扫描结果数据时,可以通过所述子线程任务从所述预设队列中批量获取所述扫描结果数据。
69.在一个实施例中,数据导出装置在将所述扫描结果数据写入目标文件时,可以通过所述子线程任务在本地创建目标文件,并对从预设队列中获取的扫描结果数据进行统计,将统计后的扫描结果数据写入所述目标文件中。
70.在一种实施方式中,当通过所述子线程任务从所述预设队列中未获取到扫描结果数据时,所述子线程任务则进行等待,直至所述子线程任务从所述预设队列中获取到扫描结果数据,所述子线程任务才开始从预设队列中获取扫描结果数据,并写入目标文件中。
71.在一个实施例中,数据导出装置当检测到所述预设队列中存在扫描结果数据时,可以监测所述预设队列中的扫描结果数据的数据量是否大于第一预设阈值;当监测到所述预设队列中存储的扫描结果数据的数据量大于第一预设阈值时,向所述主线程任务发送第一通知消息,其中,所述第一通知消息用于通知所述主线程任务暂停扫描所述指定数据库中的数据。在某些实施例中,所述第一预设阈值可以是预先设置的任意值,如5000等。通过这种方式,可以避免数据读取速度远大于写速度,导致队列积余过多数据。
72.在一个实施例中,当监测到所述预设队列中的扫描结果数据的数据量小于第二预设阈值时,向所述主线程任务发送第二通知消息,其中,所述第二通知消息用于通知所述主线程任务增大等分分片的分片段时间间隔,并按照增大后的分片片段时间间隔扫描所述指定数据库中的数据。在某些实施例中,所述第二预设阈值可以是预先设置的任意值,如2000等。通过这种方式可以避免读取速度远小于写速度,有助于提高数据读取的速度。
73.在一种实施方式中,在通过所述主线程任务增大等分分片的分片段时间间隔时,可以按照原始的分片段时间间隔按照预设放大规则进行放大。
74.在一个示例中,假设原始的分片段时间间隔为5分钟,则可以将分片段时间间隔放大至2
m
*5,m的取值为0、1、2、3...、m,对于m具体选取什么数值,可以通过依次选取,根据放大后的分片段时间间隔扫描得到的数据的数据量是否大于或等于第二预设阈值来确定。例如,当m选取1时,根据放大后的分片段时间间隔扫描得到的数据的数据量为1500,小于第二预设阈值2000,当m选取2时,根据放大后的分片段时间间隔扫描得到的数据的数据量为2500,大于第二预设阈值2000,则可以确定m取值为2,分片段时间间隔放大至20。
75.s104:当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。
76.本发明实施例中,数据导出装置可以当检测到扫描结束时,通过所述子线程任务
将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。在某些实施例中,所述第一存储装置可以包括但不限于对象存储服务装置(object storage service,obs)。
77.在一个实施例中,当主线程任务执行扫描结束时,数据导出装置可以通过指定关键字通知子线程任务扫描结束。在某些实施例中,所述指定关键字可以为volatile关键字。
78.本发明实施例中,数据导出装置可以获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。通过筛选条件分片从指定数据库中扫描数据,同时将扫描结果数据存入预设队列中,并将通过子线程任务从预设队列中获取的扫描结果数据写入目标文件中,以实现边读边写,减少了内存资源消耗,提高了数据导出的效率。
79.本发明实施例还提供了一种数据导出装置,该数据导出装置用于执行前述任一项所述的方法的单元。具体地,参见图3,图3是本发明实施例提供的一种数据导出装置的示意框图。本实施例的数据导出装置包括:获取单元301、扫描单元302、写入单元303以及生成单元304。
80.获取单元301,用于获取单元,用于获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;
81.扫描单元302,用于根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;
82.写入单元303,用于当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;
83.生成单元304,用于当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。
84.进一步地,所述扫描单元302根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据时,具体用于:
85.根据所述筛选条件中携带的分片段时间间隔将所述导出开始时间与所述导出结束时间之间的时间进行等分分片;
86.按照所述导出开始时间与所述导出结束时间之间等分分片后的各个时间段创建主线程任务;
87.通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据。
88.进一步地,所述扫描单元302通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据时,具体用于:
89.当在等分分片后的第一个时间段内在所述指定数据库中没有扫描到数据时,将所述等分分片后的第二个时间段和第三个时间段进行合并处理;
90.在所述第二个时间段和所述第三个时间段合并处理后的时间段内扫描所述指定数据库的数据;
91.当在所述合并处理后的时间段内扫描到数据时,将所述第二个时间段和所述第三个时间段后的各相邻时间段两两合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
92.进一步地,所述扫描单元302还用于:
93.当在所述合并处理后的时间段内未扫描到数据时,将所述等分分片后的第三个时间段后的4个相邻时间段进行合并处理;
94.在所述第三个时间段后的4个相邻时间段合并处理后的时间段内扫描所述指定数据库的数据;
95.当在所述合并处理后的时间段内扫描到数据时,将所述第三个时间段后的各4个相邻时间段进行合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
96.进一步地,所述扫描单元302通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据之后,还用于:
97.获取在所述等分分片后的各个时间段内从所述指定数据库中扫描得到的所述扫描结果数据的数据量;
98.根据所述各个时间段内的扫描结果数据的数据量,对在所述各个时间段内的扫描结果数据添加标识,其中,不同时间段内的扫描数据的标识不相同。
99.进一步地,所述写入单元303还用于:
100.当检测到所述预设队列中存在扫描结果数据时,监测所述预设队列中的扫描结果数据的数据量是否大于第一预设阈值;
101.当监测到所述预设队列中存储的扫描结果数据的数据量大于第一预设阈值时,向所述主线程任务发送第一通知消息,其中,所述第一通知消息用于通知所述主线程任务暂停扫描所述指定数据库中的数据;
102.当监测到所述预设队列中的扫描结果数据的数据量小于第二预设阈值时,向所述主线程任务发送第二通知消息,其中,所述第二通知消息用于通知所述主线程任务增大等分分片的分片段时间间隔,并按照增大后的分片片段时间间隔扫描所述指定数据库中的数据。
103.进一步地,所述扫描单元302还用于:
104.获取通过所述主线程任务扫描所述指定数据库中的数据的扫描进度信息;
105.将所述扫描进度信息存储至所述第二存储装置中,其中,所述第二存储装置为缓存存储装置。
106.本发明实施例中,数据导出装置可以获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;根据所述筛
选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。通过筛选条件分片从指定数据库中扫描数据,同时将扫描结果数据存入预设队列中,并将通过子线程任务从预设队列中获取的扫描结果数据写入目标文件中,以实现边读边写,减少了内存资源消耗,提高了数据导出的效率。
107.参见图4,图4是本发明实施例提供的一种计算机设备的示意框图,在某些实施例中,如图4所示的本实施例中的计算机设备可以包括:一个或多个处理器401;一个或多个输入设备402,一个或多个输出设备403和存储器404。上述处理器401、输入设备402、输出设备403和存储器404通过总线405连接。存储器404用于存储计算机程序,处理器401用于执行存储器404存储的计算机程序。其中,处理器401被配置用于调用所述程序执行:
108.获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;
109.根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;
110.当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;
111.当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。
112.进一步地,所述处理器401根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据时,具体用于:
113.根据所述筛选条件中携带的分片段时间间隔将所述导出开始时间与所述导出结束时间之间的时间进行等分分片;
114.按照所述导出开始时间与所述导出结束时间之间等分分片后的各个时间段创建主线程任务;
115.通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据。
116.进一步地,所述处理器401通过所述主线程任务在所述各个时间段扫描所述指定数据库中的数据,得到所述扫描结果数据时,具体用于:
117.当在等分分片后的第一个时间段内在所述指定数据库中没有扫描到数据时,将所述等分分片后的第二个时间段和第三个时间段进行合并处理;
118.在所述第二个时间段和所述第三个时间段合并处理后的时间段内扫描所述指定数据库的数据;
119.当在所述合并处理后的时间段内扫描到数据时,将所述第二个时间段和所述第三
个时间段后的各相邻时间段两两合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
120.进一步地,所述处理器401还用于:
121.当在所述合并处理后的时间段内未扫描到数据时,将所述等分分片后的第三个时间段后的4个相邻时间段进行合并处理;
122.在所述第三个时间段后的4个相邻时间段合并处理后的时间段内扫描所述指定数据库的数据;
123.当在所述合并处理后的时间段内扫描到数据时,将所述第三个时间段后的各4个相邻时间段进行合并处理,并按照合并处理后的各个时间段扫描所述指定数据库的数据,得到所述扫描数据。
124.进一步地,所述处理器401通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据之后,还用于:
125.获取在所述等分分片后的各个时间段内从所述指定数据库中扫描得到的所述扫描结果数据的数据量;
126.根据所述各个时间段内的扫描结果数据的数据量,对在所述各个时间段内的扫描结果数据添加标识,其中,不同时间段内的扫描数据的标识不相同。
127.进一步地,所述处理器401还用于:
128.当检测到所述预设队列中存在扫描结果数据时,监测所述预设队列中的扫描结果数据的数据量是否大于第一预设阈值;
129.当监测到所述预设队列中存储的扫描结果数据的数据量大于第一预设阈值时,向所述主线程任务发送第一通知消息,其中,所述第一通知消息用于通知所述主线程任务暂停扫描所述指定数据库中的数据;
130.当监测到所述预设队列中的扫描结果数据的数据量小于第二预设阈值时,向所述主线程任务发送第二通知消息,其中,所述第二通知消息用于通知所述主线程任务增大等分分片的分片段时间间隔,并按照增大后的分片片段时间间隔扫描所述指定数据库中的数据。
131.进一步地,所述处理器401还用于:
132.获取通过所述主线程任务扫描所述指定数据库中的数据的扫描进度信息;
133.将所述扫描进度信息存储至所述第二存储装置中,其中,所述第二存储装置为缓存存储装置。
134.本发明实施例中,计算机设备可以获取数据导出请求,所述数据导出请求携带筛选条件,所述筛选条件包括导出开始时间、导出结束时间和分片段时间间隔;根据所述筛选条件创建主线程任务,通过所述主线程任务扫描指定数据库中的数据,得到扫描结果数据,并将所述扫描结果数据传输至预设队列中;当检测到所述预设队列中存在扫描结果数据时,创建子线程任务,并通过所述子线程任务从所述预设队列中获取所述扫描结果数据,以及将所述扫描结果数据写入目标文件;当检测到扫描结束时,通过所述子线程任务将所述目标文件传输至云端的第一存储装置,并通过所述子线程任务生成所述目标文件的下载链接,以及将所述下载链接写入本地的第二存储装置中以供用户下载。通过筛选条件分片从指定数据库中扫描数据,同时将扫描结果数据存入预设队列中,并将通过子线程任务从预
设队列中获取的扫描结果数据写入目标文件中,以实现边读边写,减少了内存资源消耗,提高了数据导出的效率。
135.应当理解,在本发明实施例中,所称处理器401可以是中央处理单元(censral processing unis,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digisal signal processor,dsp)、专用集成电路(applicasion specific insegrased circuis,asic)、现成可编程门阵列(field

programmable gase array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
136.输入设备402可以包括触控板、麦克风等,输出设备403可以包括显示器(lcd等)、扬声器等。
137.该存储器404可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器404的一部分还可以包括非易失性随机存取存储器。例如,存储器404还可以存储设备类型的信息。
138.具体实现中,本发明实施例中所描述的处理器401、输入设备402、输出设备403可执行本发明实施例提供的图1所述的方法实施例中所描述的实现方式,也可执行本发明实施例图3所描述的数据导出装置的实现方式,在此不再赘述。
139.本发明实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现图1所对应实施例中描述的数据导出方法,也可实现本发明图3所对应实施例的数据导出装置,在此不再赘述。
140.所述计算机可读存储介质可以是前述任一实施例所述的数据导出装置的内部存储单元,例如数据导出装置的硬盘或内存。所述计算机可读存储介质也可以是所述数据导出装置的外部存储装置,例如所述数据导出装置上配备的插接式硬盘,智能存储卡(smars media card,smc),安全数字(secure digisal,sd)卡,闪存卡(flash card)等。进一步地,所述计算机可读存储介质还可以既包括所述数据导出装置的内部存储单元也包括外部存储装置。所述计算机可读存储介质用于存储所述计算机程序以及所述数据导出装置所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
141.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述的计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
142.需要强调的是,为进一步保证上述数据的私密和安全性,上述数据还可以存储于一区块链的节点中。其中,本发明所指区块链是分布式数据存储、点对点传输、共识机制、加
密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
143.以上所述,仅为本发明的部分实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1