一种实时导出海量数据报表的处理方法和系统与流程

文档序号:11991112阅读:285来源:国知局
一种实时导出海量数据报表的处理方法和系统与流程
本发明涉及数据处理技术领域,尤其涉及一种实时导出海量数据报表的处理方法和系统。

背景技术:
业务报表、运营报表、运维报表等数据报表随着时间的推移,系统业务数据在不同期间会有相当数量的数据统计需求。在通常构建系统过程中确保系统的安全与稳定,设定服务器连接超时的时间是必须的,在传统的需求开发者开发时往往忽略海量数据在统计时产生的连接服务器超时问题,然而改变服务器与客户端(浏览器)的响应时间则是因小失大,影响系统的安全与稳定;改变导出数据的时间段减少导出报表的数据是治标不治本,而且效率不高客户体验度差,特别是中国式的企业统计报表,个性化要求比较高,依靠改变时间段生成导出不完整的数据报表并不能完全满足。有鉴于此,现有技术有待改进和提高。

技术实现要素:
鉴于现有技术中的不足,本发明目的在于提供一种实时导出海量数据报表的处理方法和系统。旨在解决现有技术中数据报表导出效率低、客户体验度差等问题。本发明的技术方案如下:一种实时导出海量数据报表的处理方法,其中,所述方法包括以下步骤:A、根据用户指令确定需要导出数据条件,请求服务器导出分析统计数据,并把其封装成对象放入session中,同时,服务器开启一线程分析统计数据生成报表保存服务器,把Session的ID返回浏览器;B、浏览器获得session的ID,停留一预定时间,异步请求服务器,通过Session的ID查看报表处理的状态;C、当查看session中报表处理的状态为True时,返回成功的标志,浏览器自动提交session的ID;D、服务器根据Session中报表的文件名和路径下载线程保存的报表文件进行下载,同时删除服务器中保存的报表文件。所述的实时导出海量数据报表的处理方法,其中,所述步骤A中请求服务器导出分析统计数据,并把其封装成对象放入session中具体包括:服务器自定义唯一的报表文件名、保存生成报表的文件路径、以及报表处理的状态,封装成对象放入session中。所述的实时导出海量数据报表的处理方法,其中,所述步骤C中还包括:当分析统计数据生成报表保存服务器的线程处理完时改变session中报表处理的状态为True时,线程结束。所述的实时导出海量数据报表的处理方法,其中,所述步骤B中预定时间为根据服务器超时的时间确定的。所述的实时导出海量数据报表的处理方法,其中,所述步骤B中预定时间为7秒钟。一种实时导出海量数据报表的处理系统,其中,包括:监控单元,用于根据用户指令确定需要导出数据条件,请求服务器导出分析统计数据,并把其封装成对象放入session中,同时,服务器开启一线程分析统计数据生成报表保存服务器,把Session的ID返回浏览器;查看单元,用于浏览器获得session的ID,停留一预定时间,异步请求服务器,通过Session的ID查看报表处理的状态;返回单元,用于当查看session中报表处理的状态为True时,返回成功的标志,浏览器自动提交session的ID;下载单元,用于服务器根据Session中报表的文件名和路径下载线程保存的报表文件进行下载,同时删除服务器中保存的报表文件。所述的实时导出海量数据报表的处理系统,其中,所述查看单元中预定时间为根据服务器超时的时间确定的。所述的实时导出海量数据报表的处理系统,其中,所述查看单元中预定时间为7秒钟。有益效果:本发明的实时导出海量数据报表的处理方法和系统,利用多线程技术和AJAX技术综合应用,使得在超时时间内与服务器交互,从根本上解决了服务器连接超时的问题,同时满足客户导出任何时段的海量数据报表,其数据实时高效,学习成本低,可封装成公共模块供开发使用,提高了开发者工作效率,其报表需求响应平均时间从2天降低到0.8天。附图说明图1为本发明的实时导出海量数据报表的处理方法的流程图。图2为本发明的实时导出海量数据报表的处理方法中客户端与服务器的交互的示意图。图3为本发明的实时导出海量数据报表的处理系统的结构框图。具体实施方式本发明提供一种实时导出海量数据报表的处理方法和系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。请参阅图1,其为本发明的实时导出海量数据报表的处理方法的流程图。如图所示,所述方法包括以下步骤:S1、根据用户指令确定需要导出数据条件,请求服务器导出分析统计数据,并把其封装成对象放入session中,同时,服务器开启一线程分析统计数据生成报表保存服务器,把Session的ID返回浏览器;S2、浏览器获得session的ID,停留一预定时间,异步请求服务器,通过Session的ID查看报表处理的状态;S3、当查看session中报表处理的状态为True时,返回成功的标志,浏览器自动提交session的ID;S4、服务器根据Session中报表的文件名和路径下载线程保存的报表文件进行下载,同时删除服务器中保存的报表文件。下面分别针对上述步骤进行详细描述:所述步骤S1为根据用户指令确定需要导出数据条件,请求服务器导出分析统计数据,并把其封装成对象放入session中,同时,服务器开启一线程分析统计数据生成报表保存服务器,把Session的ID返回浏览器。具体来说,用户填写需要导出的数据条件,请求服务器导出分析统计数据,首先服务器自定义唯一的报表文件名、保存生成报表的文件路径、这个报表处理的状态(线程是否执行结束的状态?)封装成对象放入session中,然后开启一个线程分析统计数据生成报表保存服务器,把Session的ID返回浏览器(即客户端)。所述步骤S2为浏览器获得session的ID,停留一预定时间,异步请求服务器,通过Session的ID查看报表处理的状态。在本实施例中,所述预定时间为根据服务器超时的时间确定的。一般来说,设置为7秒钟,再异步请求服务器(参数SessionId),通过Session的ID查看‘报表处理的状态(线程是否执行结束的状态?)。所述步骤S3为当查看session中报表处理的状态为True时,返回成功的标志,浏览器自动提交form(参数session的ID)。进一步地,当分析统计数据生成报表保存服务器的线程处理完时改变session中报表处理的状态(线程是否执行结束的状态?)为True,线程结束。所述步骤S4为服务器根据Session中报表的文件名和路径下载线程保存的报表文件进行下载,同时删除服务器中保存的报表文件。上述实时导出海量数据报表的处理方法已经在实践中稳定的导出50万以上的数据报表。本发明的实时导出海量数据报表的处理方法,其过程核心有两步:一是提交导出请求服务器开启一个处理分系统统计海量数据的线程,把报表的信息(线程状态)放入Session中,并把Session的ID返回浏览器;二是每隔一段时间(其时间必须小于连接超时的时间)异步请求服务器,通过Session的ID查看线程的状态是否线程已经结束,如果没有结束则循环查看线程状态,如果线程状态是已经结束则告诉浏览器提交form表单下载生成的报表文件。所述客户端与服务器的交互过程可以参见图2。本发明还提供了一种实时导出海量数据报表的处理系统,如图2所示,所述系统包括:监控单元100,用于根据用户指令确定需要导出数据条件,请求服务器导出分析统计数据,并把其封装成对象放入session中,同时,服务器开启一线程分析统计数据生成报表保存服务器,把Session的ID返回浏览器;查看单元200,用于浏览器获得session的ID,停留一预定时间,异步请求服务器,通过Session的ID查看报表处理的状态;返回单元300,用于当查看session中报表处理的状态为True时,返回成功的标志,浏览器自动提交session的ID;下载单元400,用于服务器根据Session中报表的文件名和路径下载线程保存的报表文件进行下载,同时删除服务器中保存的报表文件。进一步地,所述的实时导出海量数据报表的处理系统中,所述查看单元中预定时间为根据服务器超时的时间确定的。进一步地,所述的实时导出海量数据报表的处理系统中,所述查看单元中预定时间为7秒钟。上述各个部分的功能都已经在上述方法中进行了详细介绍,这里就不再冗述了。综上所述,本发明的实时导出海量数据报表的处理方法和系统,利用多线程技术和AJAX技术综合应用,使得在超时时间内与服务器交互,从根本上解决了服务器连接超时的问题,同时满足客户导出任何时段的海量数据报表,其数据实时高效,学习成本低,可封装成公共模块供开发使用,提高了开发者工作效率,其报表需求响应平均时间从2天降低到0.8天。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1