一种数据导出方法、系统、装置以及电子设备制造方法及图纸

技术编号:31231518 阅读:14 留言:0更新日期:2021-12-08 10:06
本公开提供一种数据导出方法、系统、装置以及电子设备,所述数据导出方法包括:接收数据导出请求;其中,所述数据导出请求包括标准结构化数据库语句;将所述数据导出请求封装为声明对象;将所述声明对象发送到服务端;接收服务端发送的数据结果集,将所述数据结果集存储至缓冲区并进行处理;其中,所述数据结果集是由服务端根据接收到所述声明对象后从存储引擎中获取后通过stream模式发送的;将所述数据结果集写入临时文件中;将临时文件转换格式,得到数据导出结果。该数据导出方法可以解决导出大批量数据时对系统造成的性能下降,甚至宕机的问题。至宕机的问题。至宕机的问题。

【技术实现步骤摘要】
一种数据导出方法、系统、装置以及电子设备


[0001]本公开涉及计算机
,尤其涉及一种数据导出方法、系统、装置以及电子设备。

技术介绍

[0002]随着企业级信息化系统建设的不断发展,大数据已经成为许多企业的重要信息资源,越来越多的企业关注的重点从收集、存储数据逐渐向分析数据、发掘数据价值转变,面对多维度的大数据信息,大批量结构化数据的导出逐渐成为信息系统的重要功能之一。
[0003]目前业内常见的数据导出方式是基于Java EE架构的信息系统,该种方式通过将数据分批,分页读取数据,再写入存储文件中,这种方式在响应十万级以内中、小规模的数据导出处理请求时,通常具有较好的效果。然而,随着数据量的不断增加达到百万级甚至更高时,这种处理方法会导致Java虚拟机内存占用快速增加、性能急剧下降,直至导致Java虚拟机的宕机,危害到整个应用系统。

技术实现思路

[0004]有鉴于此,本公开的目的在于提出一种数据导出方法、系统、装置以及电子设备。
[0005]基于上述目的,本公开提供了一种数据导出方法,该方法应用于客户端,包括:
[0006]接收数据导出请求;其中,所述数据导出请求包括标准结构化数据库语句;
[0007]将所述数据导出请求封装为声明对象;
[0008]将所述声明对象发送到服务端;
[0009]接收服务端发送的数据结果集,将所述数据结果集存储至缓冲区并进行处理;其中,所述数据结果集是由服务端根据接收到所述声明对象后从存储引擎中获取后通过stream模式发送的;
[0010]将所述数据结果集写入临时文件中;
[0011]将临时文件转换格式,得到数据导出结果。
[0012]可选的,将所述数据结果集存储至缓冲区并进行处理,包括:
[0013]以字节为单位或者以多个包组成完整的结构化数据形式,读取所述数据结果集;
[0014]使用遍历数组方法,处理接收到的所述数据结果集中的每一条数据。
[0015]可选的,将所述数据结果集写入临时文件中,包括:
[0016]采用滑动窗口将所述数据结果集写入临时文件中;其中,所述滑动窗口设置有数据量阈值,当所述滑动窗口中的数据达到所述数据量阈值时,将所述滑动窗口内数据保存至磁盘中的临时文件中,释放所述滑动窗口内数据所占用的客户端内存空间,直至所有数据结果集中的数据全部写入磁盘中的临时文件。
[0017]基于同一专利技术构思,本公开还提供了数据导出方法,该方法应用于服务端,包括:
[0018]接收声明对象;其中,所述声明对象是由客户端将数据导出请求进行封装得到的;
[0019]根据接收到的所述声明对象,获取存储引擎中与所述声明对象对应的数据结果
集;
[0020]使用stream模式将所述数据结果集发送至客户端的缓冲区。
[0021]可选的,根据接收到的所述声明对象,获取存储引擎中与所述声明对象对应的数据结果集,之后还包括:
[0022]根据所述数据导出请求的声明参数,判断是否使用stream模式;响应于确定不使用stream模式,使用分页模式将所述数据结果集发送至客户端。
[0023]可选的,所述使用stream模式将数据结果集发送至客户端,包括:
[0024]在Stream模式下,将所述数据结果集中的数据转换为具体行的结构化数据发送至所述客户端缓冲区。
[0025]基于同一专利技术构思,本公开还提供了一种可实现数据导出的客户端,包括:
[0026]第一接收模块,被配置为接收数据导出请求;其中,所述数据导出请求包括标准结构化数据库语句;
[0027]封装模块,被配置为将所述数据导出请求封装为声明对象;
[0028]第一发送模块,被配置为将所述声明对象发送到服务端;
[0029]读取处理模块,被配置为接收服务端发送的数据结果集,将所述数据结果集存储至缓冲区并进行处理;其中,所述数据结果集是由服务端根据接收到所述声明对象后从存储引擎中获取后通过stream模式发送的;
[0030]编写模块,被配置为将所述数据结果集写入临时文件中;
[0031]第一输出模块,被配置为将临时文件转换格式,得到数据导出结果。
[0032]基于同一专利技术构思,本公开还提供了一种可实现数据导出的服务端,包括:
[0033]第二接收模块,被配置为接收声明对象;其中,所述声明对象是由客户端将数据导出请求进行封装得到的;
[0034]获取模块,被配置为根据接收到的所述声明对象,获取存储引擎中与所述声明对象对应的数据结果集;
[0035]第二发送模块,被配置为使用stream模式将所述数据结果集发送至客户端。
[0036]基于同一专利技术构思,本公开还提供了一种数据导出系统,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,用于实现所述的数据导出方法。
[0037]基于同一专利技术构思,本公开还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述数据导出方法。
[0038]从上面所述可以看出,本公开提供的数据导出方法,客户端将数据导出请求封装为声明对象,发送到服务端,由服务端调取存储引擎中与数据导出请求对应的数据结果集,使用stream模式将所述数据结果集发送至客户端,客户端将数据结果集采用滑动窗口将所述数据结果集写入临时文件,最后将临时文件转换为用户所需格式并发送给用户。本公开提供的数据导出方法,服务端将数据结果集存储到缓冲区处理后持续发送数据,避免多次连接、分页查询的开销,采用Stream方式处理数据,在并发情况下,客户端内存占用增长较小,内存占用趋势较平缓,另外,客户端采用Stream方式持续发送数据,避免IOPS飙升,引起应用系统性能下降,服务端采用临时件保存滑动窗口数据,降低由于数据量递增导致的内存占用增长,降低大数据量导出时对应用系统性能的影响。
附图说明
[0039]为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本公开实施例的数据导出方法的服务端与客户端交互图;
[0041]图2为本公开实施例的数据导出方法的客户端流程图
[0042]图3为本公开实施例的数据导出方法的服务端流程图
[0043]图4为本公开实施例的数据导出方法的单线样本数据导出耗时折线图;
[0044]图5为本公开实施例的数据导出方法的并发样本数据导出内存占用折线图;
[0045]图6为本公开实施例的数据导出方法的客户端装置图;
[0046]图7为本公开实施例的数据导出方法的服务端装置图;
[0047]图8本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据导出的方法,应用于客户端,其特征在于,包括:接收数据导出请求;其中,所述数据导出请求包括标准结构化数据库语句;将所述数据导出请求封装为声明对象;将所述声明对象发送到服务端;接收服务端发送的数据结果集,将所述数据结果集存储至缓冲区并进行处理;其中,所述数据结果集是由服务端根据接收到所述声明对象后从存储引擎中获取后通过stream模式发送的;将所述数据结果集写入临时文件中;将临时文件转换格式,得到数据导出结果。2.根据权利要求1所述的数据导出的方法,其特征在于,将所述数据结果集存储至缓冲区并进行处理,具体包括:以字节为单位或者以多个包组成完整的结构化数据形式,读取所述数据结果集;使用遍历数组方法,处理接收到的所述数据结果集中的每一条数据。3.根据权利要求1所述的数据导出的方法,其特征在于,将所述数据结果集写入临时文件中,具体包括:采用滑动窗口将所述数据结果集写入临时文件中;其中,所述滑动窗口设置有数据量阈值,当所述滑动窗口中的数据达到所述数据量阈值时,将所述滑动窗口内数据保存至磁盘中的临时文件中,释放所述滑动窗口内数据所占用的客户端内存空间,直至所有数据结果集中的数据全部写入磁盘中的临时文件。4.一种数据导出的方法,应用于服务端,其特征在于,包括:接收声明对象;其中,所述声明对象是由客户端将数据导出请求进行封装得到的;根据接收到的所述声明对象,获取存储引擎中与所述声明对象对应的数据结果集;使用stream模式将所述数据结果集发送至客户端。5.根据权利要求4所述的数据导出的方法,其特征在于,根据接收到的所述声明对象,获取存储引擎中与所述声明对象对应的数据结果集,之后还包括:根据所述数据导出请求...

【专利技术属性】
技术研发人员:马岩李杰刘芳赵卫
申请(专利权)人:国网信息通信产业集团有限公司国家电网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1