本发明专利技术涉及数据处理技术领域,具体提供一种基于动态分批的数据导出方法、系统、设备及存储介质,包括:接收检索请求,并确定与所述检索请求匹配的元数据信息;监控内存空闲率,并基于所述内存空闲率动态更新数据量阈值;基于所述元数据信息评估数据量,若所述数据量超过所述数据量阈值,则将基于所述元数据信息的实体类数据导出任务划分为多个子任务;逐一执行所述子任务,以将所述元数据信息对应的所有实体类数据分批导出。本发明专利技术通过动态限制内存,基于内存分配量对单次处理的数据量进行限制,在充分利用内存资源的同时,又可以避免冲击内存,影响其他业务的正常运行。
【技术实现步骤摘要】
本专利技术数据处理,具体涉及一种基于动态分批的数据导出方法、系统、设备及存储介质。
技术介绍
1、excel导出功能通常是通过web应用提供的,因此这个
还涉及到 web 应用开发。web应用开发包括使用http协议、restful api设计、web服务器(如tomcat、jetty)等技术来构建用户可以通过浏览器访问的应用,通过java后端使用easypoi技术将数据进行分类分页导出。
2、easypoi底层基于apache poi库,apache poi是一个流行的开源库,用于处理microsoft office文档,特别是excel文件。
3、然而,当面对大数据量或复杂的excel文件时,apache poi库面临着严峻的内存消耗挑战,由于它们通常采用将整个工作表一次性加载到内存中的处理方式,导致在处理大型文件时,内存消耗急剧增加,给内存造成冲击。
技术实现思路
1、针对现有技术的上述不足,本专利技术提供一种基于动态分批的数据导出方法、系统、设备及存储介质,以解决上述技术问题。
2、第一方面,本专利技术提供一种基于动态分批的数据导出方法,包括:
3、接收检索请求,并确定与所述检索请求匹配的元数据信息;
4、监控内存空闲率,并基于所述内存空闲率动态更新数据量阈值;
5、基于所述元数据信息评估数据量,若所述数据量超过所述数据量阈值,则将基于所述元数据信息的实体类数据导出任务划分为多个子任务;
<
p>6、逐一执行所述子任务,以将所述元数据信息对应的所有实体类数据分批导出。7、在一个可选的实施方式中,接收检索请求,并确定与所述检索请求匹配的元数据信息,所述元数据信息包括目标数据的索引信息,包括:
8、从所述检索请求中提取查询条件,从数据库中查询与所述查询条件相关的数据,并计算相关数据与所述查询条件的相似度;
9、将相似度达到第一相似度阈值的数据的元数据信息记为第一元数据信息,将相似度低于第一相似度阈值且大于第二相似度阈值的数据的元数据信息记为第二元数据信息,所述第一相似度阈值和第二相似度阈值为预先设置的固定值,所述第一相似度阈值高于所述第二相似度阈值。
10、在一个可选的实施方式中,监控内存空闲率,并基于所述内存空闲率动态更新数据量阈值,包括:
11、预先设置内存分配系数,所述内存分配系数大于0且小于1;
12、将内存额定容量与内存空闲率和内存分配系数的乘积,作为数据导出任务的专用内存区域的大小;
13、确认所述内存空闲率的波动值大于设定的波动阈值,则基于所述专用内存区域的大小动态调整专用内存区域;
14、基于所述专用内存区域的当前大小,同步更新相应的数据量阈值。
15、在一个可选的实施方式中,基于所述元数据信息评估数据量,若所述数据量超过所述数据量阈值,则将基于所述元数据信息的实体类数据导出任务划分为多个子任务,包括:
16、将第一元数据信息和第二元数据信息整合为总元数据信息;
17、评估总元数据信息的数据量,判断总元数据信息的数据量是否达到所述数据量阈值:
18、若是,则评估第一元数据信息的数据量是否超过所述数据量阈值,若第一元数据信息的数据量未超过所述数据量阈值则基于第一元数据信息生成相应的数据导出任务,且不执行任务拆分;若所述第一元数据信息的数据量超过所述数据量阈值,则执行第一元数据信息的数据导出任务的任务拆分;
19、若否,则基于总元数据信息生成相应的数据导出任务,且不执行任务拆分。
20、在一个可选的实施方式中,基于所述元数据信息评估数据量的方法,包括:
21、利用cardinality函数基于元数据信息中的索引的不同值数量,评估与所述检索请求的目标数据的行数。
22、在一个可选的实施方式中,逐一执行所述子任务,以将所述元数据信息对应的所有实体类数据分批导出,包括:
23、使用easypoi的@excel注解标记子任务的需要导出的字段;
24、在服务层中,根据前端传入的分页参数(如页码、每页条数),使用spring datajpa的pageable接口或mybatis plus的分页插件进行分页查询;
25、遍历分页查询结果,为每一页数据创建一个excel的sheet,并使用easypoi的excelexportutil或apache poi的api将每页数据写入对应的sheet中;
26、通过设置http响应类型,将生成的excel文件写入到http响应的输出流中,并设置匹配的响应头以触发文件下载;
27、确认子任务完成,执行剩余的子任务。
28、第二方面,本专利技术提供一种基于动态分批的数据导出系统,包括:
29、请求处理模块,用于接收检索请求,并确定与所述检索请求匹配的元数据信息;
30、阈值更新模块, 用于监控内存空闲率,并基于所述内存空闲率动态更新数据量阈值;
31、任务拆分模块,用于基于所述元数据信息评估数据量,若所述数据量超过所述数据量阈值,则将基于所述元数据信息的实体类数据导出任务划分为多个子任务;
32、任务执行单元,用于逐一执行所述子任务,以将所述元数据信息对应的所有实体类数据分批导出。
33、在一种可选的实施方式中,所述请求处理模块包括:
34、请求解析单元,用于从所述检索请求中提取查询条件,从数据库中查询与所述查询条件相关的数据,并计算相关数据与所述查询条件的相似度;
35、相似划分单元,用于将相似度达到第一相似度阈值的数据的元数据信息记为第一元数据信息,将相似度低于第一相似度阈值且大于第二相似度阈值的数据的元数据信息记为第二元数据信息,所述第一相似度阈值和第二相似度阈值为预先设置的固定值,所述第一相似度阈值高于所述第二相似度阈值。
36、第三方面,提供一种设备,包括:
37、存储器,用于存储基于动态分批的数据导出程序;
38、处理器,用于执行所述基于动态分批的数据导出程序时实现如第一方面提供的基于动态分批的数据导出方法的步骤。
39、第四方面,提供了一种计算机可读存储介质,存储介质上存储有基于动态分批的数据导出程序,基于动态分批的数据导出程序被处理器执行时实现如第一方面提供的基于动态分批的数据导出方法的步骤。
40、本专利技术的有益效果在于,本专利技术提供的基于动态分批的数据导出方法、系统、设备及存储介质,通过动态限制内存,基于内存分配量对单次处理的数据量进行限制,在充分利用内存资源的同时,又可以避免冲击内存,影响其他业务的正常运行。
41、此外,本专利技术设计原理可靠,结构简单,具有非常广泛的应用前景。
本文档来自技高网...
【技术保护点】
1.一种基于动态分批的数据导出方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,接收检索请求,并确定与所述检索请求匹配的元数据信息,所述元数据信息包括目标数据的索引信息,包括:
3.根据权利要求1所述的方法,其特征在于,监控内存空闲率,并基于所述内存空闲率动态更新数据量阈值,包括:
4.根据权利要求2所述的方法,其特征在于,基于所述元数据信息评估数据量,若所述数据量超过所述数据量阈值,则将基于所述元数据信息的实体类数据导出任务划分为多个子任务,包括:
5.根据权利要求1所述的方法,其特征在于,基于所述元数据信息评估数据量的方法,包括:
6.根据权利要求1所述的方法,其特征在于,逐一执行所述子任务,以将所述元数据信息对应的所有实体类数据分批导出,包括:
7.一种基于动态分批的数据导出系统,其特征在于,包括:
8.根据权利要求7所述的系统,其特征在于,所述请求处理模块包括:
9.一种设备,其特征在于,包括:
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述可读存储介质上存储有基于动态分批的数据导出程序,所述基于动态分批的数据导出程序被处理器执行时实现如权利要求1-6任一项所述基于动态分批的数据导出方法的步骤。
...
【技术特征摘要】
1.一种基于动态分批的数据导出方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,接收检索请求,并确定与所述检索请求匹配的元数据信息,所述元数据信息包括目标数据的索引信息,包括:
3.根据权利要求1所述的方法,其特征在于,监控内存空闲率,并基于所述内存空闲率动态更新数据量阈值,包括:
4.根据权利要求2所述的方法,其特征在于,基于所述元数据信息评估数据量,若所述数据量超过所述数据量阈值,则将基于所述元数据信息的实体类数据导出任务划分为多个子任务,包括:
5.根据权利要求1所述的方法,其特征在于,基于所述元数据信息...
【专利技术属性】
技术研发人员:孙海耀,齐光鹏,商广勇,冯向阳,倪志荣,米寒,
申请(专利权)人:浪潮云洲工业互联网有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。