数据检索方法及装置、报表生成系统及方法与流程

文档序号:14504781阅读:179来源:国知局

本公开涉及数据处理技术,尤其涉及一种数据检索装置、数据检索方法、应用该数据检索方法的报表生成方法以及应用该数据检索装置的报表生成系统。



背景技术:

随着网络的蓬勃发展,应用系统的数据量在不断增长,而系统用户对于数据的抽取、导出也更为关心。目前,应用系统的报表功能非常普遍,也成为很多应用系统的必备功能。由于报表数据的数据量普遍较大,为提升查询性能,会将数据库中查询关联多张报表的数据同步到搜索引擎或其他集群存储的系统当中,使得数据存储和查询方式具有多样性的特点。

参见图1,现有应用系统所提供的报表导出功能,普遍为用户提供一报表查询页面,用户可以在查询页面选择或输入多个查询条件,应用系统根据用户的查询条件到检索服务系统中检索出符合条件的数据结果,最后,生成报表文件给用户下载。

在检索服务系统检索数据时,检索服务一般是由多个检索服务实例组成的集群,为了能更多的存储数据,数据会被分布在这个集群中的某一个检索服务实例中。当用户查询的数据量非常大时,会造成检索服务实例的数据总会同时合并到一个检索服务实例上,且都是在内存中,如果同时查询的用户较多时,会造成实例内存都被占用。即前一些查询结果数据返回给查询系统后,还没有被内存垃圾回收,之后的查询结果数据就又占用内存,使内存都被使用,造成服务宕机,或严重排队等待。

当检索服务采用分页查询时,将对每一个检索服务实例按照分页大小进行数据检索,然后将检索到的数据返回至第一检索服务实例中进行合并。若查询过程中没有设置分页,即全部查询,将会出现各检索服务实例的数据都合并到一个检索服务实例中;或者是分页查询,查询到最后一页时,也会出现全部查询的情况,造成检索服务实例内存压力极大;从而减慢检索速度,影响检索服务的稳定性。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种数据检索装置、数据检索方法,以及应用该数据检索装置的报表生成系统和应用该数据检索方法的报表生成方法,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本发明的第一方面,提供一种数据检索方法,包括:

依据第n次检索请求生成第n次查询参数(页码=Xn,分页大小=Yn,IDn=maxIDn-1+1)并发送至一检索服务器;其中,maxIDn-1为第n-1次查询结果中查询数据的最大ID;以及,

接收所述检索服务器根据所述第n次查询参数返回的包括Yn页大小查询数据的查询结果。

在本公开的一种示例性实施例中,所述检索服务器根据所述第n次查询参数返回包括Yn页大小查询数据的查询结果包括:

所述检索服务器依据所述第n次查询参数生成与所述第n次查询参数相匹配的第一数据列表;

将所述第一数据列表中的查询数据按ID升序排列并从所述第一数据列表开头截取数量为所述分页大小数量的第二数据列表作为第n次查询结果。

在本公开的一种示例性实施例中,所述数据检索方法还包括:

检测所述第n次查询结果是否存在查询数据;

在检测所述第n次查询结果存在所述的查询数据时,将所述第n次查询结果加入已完成数据队列。

在本公开的一种示例性实施例中,所述数据检索方法还包括:

在检测所述第n次查询结果不存在所述的查询数据时,将所述已完成数据列表内的数据结果整合生成数据文件。

在本公开的一种示例性实施例中,所述数据检索方法还包括:

将所述第二数据列表进行预处理后加入已完成数据队列;所述预处理第二数据列表包括字段适配以及字段转换中的一种或多种。

在本公开的一种示例性实施例中,所述数据检索方法还包括:

接收用户的初始检索请求,并将所述初始检索请求分解为N个与所述初始检索请求相对应的检索请求。

根据本公开的第二方面,提供一种报表生成方法,包括:

根据所述的数据检索方法获取所述查询结果的数据文件;

根据获取的所述查询结果的数据文件生成数据报表。

根据本公开的第三方面,提供一种数据检索装置,包括:

参数生成模块,用于依据第n次检索请求生成第n次查询参数(页码=Xn,分页大小=Yn,IDn=maxIDn-1+1)并发送至一检索服务器;其中,maxIDn-1为第n-1次查询结果中查询数据的最大ID;以及

初始数据接收模块,用于接收所述检索服务器根据所述第n次查询参数返回的包括Yn页大小查询数据的查询结果。

在本公开的一种示例性实施例中,所述数据检索装置还包括:

第一数据生成模块,用于所述检索服务器依据所述第n次查询参数生成与所述第n次查询参数相匹配的第一数据列表;

第二数据生成模块,用于将所述第一数据列表中的查询数据按ID升序排列并从第一数据列表开头截取数量为所述分页大小数量的第二数据列表作为第n次查询结果。

在本公开的一种示例性实施例中,所述数据检索装置还包括:

结果判定模块;用于检测所述第n次查询结果是否存在查询数据;

第一数据整合模块,用于在检测所述第n次查询结果存在所述的查询数据时,将所述第n次查询结果加入已完成数据队列中。

在本公开的一种示例性实施例中,所述数据检索装置还包括:

第二数据整合模块,用于在检测所述第n次查询结果不存在所述的查询数据时,将所述已完成数据列表内的数据结果整合生成数据文件。

在本公开的一种示例性实施例中,所述数据检索装置还包括:

数据预处理模块,用于将所述第二数据列表进行预处理后加入已完成数据队列;所述预处理第二数据列表包括字段适配以及字段转换中的一种或多种。

在本公开的一种示例性实施例中,所述数据检索装置还包括:

请求接收模块,用于接收用户的初始检索请求;

检索请求生成模块,用于将所述初始检索请求分解为N个与所述初始检索请求相对应的检索请求。

根据本公开的第四方面,提供一种种报表生成系统,包括:

根据所述数据检索装置,用于依据所述检索请求生成所述查询结果的数据文件;以及

报表生成模块,用于将所述查询结果的数据文件生成数据报表。

本公开的实施例提供的技术方案可以包括以下有益效果:本公开的一种实施例的技术方案中,通过在检索过程中将第n-1次查询结果中查询数据的最大IDn-1作为第n次查询的IDn,既将上一次的查询结果作为本次查询的查询参数,使得第n次查询的结果是IDn-1的第一页数据,使检索服务器根据第n次查询参数返回与第n次查询参数相匹配的查询结果,实现循环查询,从而极大的减少检索数据量。同时,本公开通过实现循环查询有效的减少检索服务对内存的占用,减小内存压力,进而保证检索服务的稳定性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出现有技术中报表导出流程示意图;

图2示意性示出本公开示例性实施例中数据查询实例图;

图3示意性示出本公开示例性实施例中一种数据检索方法的流程图;

图4示意性示出本公开示例性实施例中一种数据检索装置的模拟框图。

图5示意性示出本公开示例性实施例中一种报表生成装置的结构化处理装置示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

参见图1所示,在一种技术方案中,检索服务系统检索数据时可以采用由4个检索服务实例组成的集群;为了能更多的存储数据,数据会被分布在这个集群中4个检索服务实例中的某一个上。所以,当查询请求发送到检索服务实例1上时,检索服务实例1会去检索服务实例2、3、4中去检索数据,再加上本身检索服务实例1的数据,4份数据要进行合并,再返回给查询请求的系统。但是,当用户查询的数据量非常大时,会造成4份数据总会同时合并到一个检索服务实例上,且都是在内存中,如果同时查询的用户较多时,会造成实例内存都被占用。即前一些查询结果数据返回给查询系统后,还没有被内存垃圾回收,之后的查询结果数据就又占用内存,使内存都被使用,造成服务宕机,或严重排队等待。

检索服务还会存在一种现象,就是如果分页查询,每一次查询的分页数据,比如每页分页大小为10条数据,查询第5页的数据。参考图1所示数据情况,检索服务实例1、2、3、4都会从本实例中查询10*5=50条记录,之后返回给检索服务实例1,此时检索服务实例1中合并之后的数据条数为50*4=200条记录,如果传入的页码较小还可以,如果传入的页码为最后一页,则会出现和上面描述一样的问题,所有数据会被加载到一个检索服务实例当中。

举例而言,参考图2中所示数据情况,如用户第一次请求查询,请求查询的参数为(分页大小=2,当前页号=1),即用户想要查询第一页的数据,且分页数据大小为2。则各个检索实例查询出的数据为:(检索服务实例1,[4,8])、(检索服务实例2,[1,5])、(检索服务实例3,[2,6])、(检索服务实例4,[3,7]),此时检索服务实例1将数据合并排序,结果为[1,2,3,4,5,6,7,8],从中截取第一页的数据,即[1,2]。当用户第二次请求查询,请求查询的参数为(分页大小=2,当前页号=2,即用户想要查询第二页的数据,且分页数据大小为2。则各个检索实例查询出的数据为:(检索服务实例1,[4,8,12,16])、(检索服务实例2,[1,5,9,13])、(检索服务实例3,[2,6,10,14])、(检索服务实例4,[3,7,11,15]),此时检索服务实例1将数据合并排序,结果为[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],从中截取第二页的数据,即[3,4],从中可以看到此次查询的数据是把前面分页的数据要一并查出来。这样会增加检索服务实例内存压力。

若查询过程中没有设置分页,即全部查询,将4个检索服务实例的数据都查询到一个检索服务实例中;或者是分页查询,查询到最后一页时,也会出现全部查询的情况,造成检索实例内存压力极大。

在本示例实施方式中首先提供了一种数据检索方法,该数据检索方法能够有效的解决上述现有技术中存在的缺陷和不足。参考图3中所示,该数据检索方法可以包括以下步骤:

S1,依据第n次检索请求生成第n次查询参数(页码=Xn,分页大小=Yn,IDn=maxIDn-1+1)并发送至一检索服务器;其中,maxIDn-1为第n-1次查询结果中查询数据的最大ID。

S2,接收所述检索服务器根据所述第n次查询参数返回的包括Yn页大小查询数据的查询结果。

本示例实施方式所提供的数据检索方法,令检索服务器根据第n次查询参数返回与第n次查询参数相匹配的查询结果,使得第n次查询的结果是大于第n-1次查询结果中最大ID的第一页数据,实现循环查询,从而极大的减少检索数据量。同时,本公开通过实现循环查询有效的减少检索服务对内存的占用,减小内存压力,进而保证检索服务的稳定性。

下面,参考图2~图4,将对本示例实施方式中的数据检索方法的各个步骤进行更详细的说明。

在步骤S1中,依据第n次检索请求生成第n次查询参数(页码=Xn,分页大小=Yn,IDn=maxIDn-1+1)并发送至一检索服务器;其中,maxIDn-1为第n-1次查询结果中查询数据的最大ID。

在本示例实施例中,客户端首先根据第n次的检索请求生成相应的查询参数,查询参数中可以设置本次查询中的查询页码Xn,以及分页大小Yn。同时,第n次查询将以第n-1次查询结果中查询数据的最大ID作为本次查询的查询参数进行查询。当n=1时,即进行第一次查询时,可以使ID1=1。

举例而言,当客户端的第一次检索请求时,可以生成第一次查询参数为(页码=X1,分页大小=Y1,ID1=1),并将该第一次查询参数发送至一检索服务器,在所述的检索服务器进行第一次检索操作。当客户端根据第二次检索请求生成第二次查询参数时,第二次查询参数可以为(页码=X2,分页大小=Y2,ID2=maxID1+1),其中,maxID1为第一次查询结果中查询数据的最大ID。由此可知,当第n次检索请求生成的第n次查询参数为(页码=Xn,分页大小=Yn,IDn=maxIDn-1+1),其中,maxIDn-1为第n-1次查询结果中查询数据的最大ID。

在本示例实施方式总,上述的数据检索方法还可以包括:

接收用户的初始检索请求,并将所述初始检索请求分解为N个与所述初始检索请求相对应的检索请求。

举例而言,用户可以向客户端输入一初始检索请求,该初始检索请求可以包括一个或多个检索条件。客户端根据用户输入的初始检索请求生成N个对应的检索请求,用于将这N个检索请求发送至检索服务器进行数据查询。通过将用户的一个初始检索请求转换为多个检索请求,可以将用户的一次全量查询转化为多次循环查询,从而有效减少检索的数据量,降低检索过程中的内存压力。

在步骤S2中,接收所述检索服务器根据所述第n次查询参数返回的包括Yn页大小查询数据的查询结果。

本示例实施方式中,首先,检索服务器接收客户端发送的第n次查询参数;然后,检索服务器将第n次的查询数据分别发送至检索服务器内的各检索服务实例中进行第n次数据查询,然后将各检索服务实例根据第n次的查询数据输出的检索结果整合生成一Yn页大小查询数据作为查询结果;最后,将上述的查询结果作为第n次查询结果的数据列表返回至客户端。

在本示例实施方式中,上述的检索服务器根据所述第n次查询参数返回包括Yn页大小查询数据的查询结果可以包括以下步骤:

步骤S21,所述检索服务器依据所述第n次查询参数生成与所述第n次查询参数相匹配的第一数据列表。

步骤S22,将所述第一数据列表中的查询数据按ID升序排列并从所述第一数据列表开头截取数量为所述分页大小数量的第二数据列表作为第n次查询结果。

例如,参考图2中所示数据情况,检索服务器包含4个检索服务实例,检索服务器接收第n次查询参数后,将所述第n次查询参数分别发送至4个检索服务实例中,在各检索服务实例中检索与第n次查询参数相匹配的查询数据,然后将在各检索服务实例检索到的查询数据合并生成第一数据列表。

检索服务器将第一数据列表中的查询数据按ID升序排列,然后将第一数据列表从开头截取第n次查询参数中设置的分页大小Yn的第二数据列表,将此第二数据列表作为第n次查询的数据结果,并将该数据结果发送至客户端。

举例而言,参考图2中所示数据情况,检索服务实例1中包含数据[4、8、12、16、20],检索服务实例2中包含数据[1、5、9、13、17],检索服务实例3中包含数据[2、6、10、14、18],检索服务实例4中包含数据[3、7、11、15、19]。令n=1,即进行第一次查询数据时,假设其查询参数为(分页大小=2,当前页号=1),即用户想要查询第一页的数据,且分页数据大小为2。则各个检索实例查询出的数据为:(检索服务实例1,[4、8]),(检索服务实例2,[1、5]),(检索服务实例3,[2、6]),(检索服务实例4,[3、7])。此时检索服务实例1将上述的数据合并按升序排列,结果为[1、2、3、4、5、6、7、8],从中截取第一页的数据,即[1、2],将该结果返回给客户端。之后,令n=2,即第二次检索请求,令第二次检索查询的查询参数为(分页大小=2,当前页号=1,ID2=(2+1)),即第二次查询的是第一页的数据,且分页数据大小为2,且由于第一次查询结果的最大ID1=2,则第二次查询的ID2为ID1+1=3;则各个检索实例查询出的数据为:(检索服务实例1,[4、8]),(检索服务实例2,[5、9]),(检索服务实例3,[6、10]),(检索服务实例4,[3、7])。此时检索服务实例1将数据合并按升序排列,结果为[3、4、5、6、7、8、9、10],从中截取第一页的数据,即[3、4]。

通过在进行第二次查询时,把上一次查询结果的最大ID设置为查询参数,这样,第二次查询的结果是大于这个ID的第一页数据,从而在循环查询的过程中可以极大的减少数据量,减轻检索服务器的内存压力。

同时,在每一次检索过程中都只会检索一定数量的数据,例如上述实施例中数据情况,每次数据查询的结果最多8条数据,不会出现全部数据都被查询出来的情况,有效避免数据被全部占用的情况发生。

在本公开的其他示例性实施例中,查询参数同样可以为其他的数值,其检索方法同样属于本公开的保护范围。

在本示例实施方式中,上述的数据检索方法还可以包括以下步骤:

检测所述第n次查询结果是否存在查询数据。

在检测所述第n次查询结果存在所述的查询数据时,将所述第n次查询结果加入已完成数据队列。

客户端接收检索服务器返回的第n次查询的数据结果,然后判断该数据结果中是否包含与第n次查询参数相匹配的查询数据。当本次查询的数据结果中存在查询数据时,客户端将本次查询结果加入到已完成数据队列中。同时,利用异步线程可以进行第n+1次的查询操作。

在本示例实施方式中,上述的数据检索方法还可以包括以下步骤:

将所述第二数据列表进行预处理后加入已完成数据队列;所述预处理第二数据列表包括字段适配以及字段转换中的一种或多种。

在本示例实施方式中,上述的数据检索方法还可以包括以下步骤:

在检测所述第n次查询结果不存在所述的查询数据时,将所述已完成数据列表内的数据结果整合生成数据文件。

当检测第n次查询结果中不存在查询数据时,则当前的所有查询操作已完成,客户端将已完成数据列表内的所有数据结果整合生成数据文件,供用户下载使用。

在上述的实施例中,通过将检测存在查询数据的查询结果加入已完成队列,并在检测查询结果中不存在查询数据时结束查询操作,并将已完成的数据列表整合生成数据文件,实现多线程异步处理每一次的查询结果,最终合并集合数据生成数据文件,有效的提高检索效率,保证检索服务的稳定性。

进一步的,参考图4所示,本示例的实施方式中还提供了一种数据检索装置,包括参数生成模块101,以及初始数据接收模块102。其中:

参数生成模块可以用于依据第n次检索请求生成第n次查询参数(页码=Xn,分页大小=Yn,IDn=maxIDn-1+1)并发送至一检索服务器;其中,maxIDn-1为第n-1次查询结果中查询数据的最大ID。

初始数据接收模块可以用于接收所述检索服务器根据所述第n次查询参数返回的包括Yn页大小查询数据的查询结果。

在本示例实施方式中,上述的数据检索装置还包括:第一数据生成模块、第二数据生成模块。其中:

第一数据生成模块可以用于所述检索服务器依据所述第n次查询参数生成与所述第n次查询参数相匹配的第一数据列表。

第二数据生成模块可以用于将所述第一数据列表中的查询数据按ID升序排列并从第一数据列表开头截取数量为所述分页大小数量的第二数据列表作为第n次查询结果。

在本示例实施方式中,上述的数据检索装置还可以包括:结果判定模块、第一数据整合模块。其中:

结果判定模块可以用于检测所述第n次查询结果是否存在查询数据。

第一数据整合模块可以用于在检测所述第n次查询结果存在所述的查询数据时,将所述第n次查询结果加入已完成数据队列中。

在本示例实施方式中,上述的数据检索装置还包括:第二数据整合模块。

第二数据整合模块可以用于在检测所述第n次查询结果不存在所述的查询数据时,将所述已完成数据列表内的数据结果整合生成数据文件。

在本示例实施方式中,上述的数据检索装置还可以包括:数据预处理模块。

数据预处理模块可以用于将所述第二数据列表进行预处理后加入已完成数据队列。所述预处理第二数据列表包括字段适配以及字段转换中的一种或多种。

在本示例实施方式中,上述的数据检索装置还包括:请求接收模块,以及检索请求生成模块。其中:

请求接收模块可以用于接收用户的初始检索请求;

检索请求生成模块可以用于将所述初始检索请求分解为N个与所述初始检索请求相对应的检索请求。

上述中各数据检索装置中模块的具体细节已经在对应的数据检索方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

进一步的,本示例实施方式中还提供了一种报表生成方法,该报表生成方法至少包括上述示例性实施例中的数据检索方法,还包括:根据上述的数据检索方法获取所述查询结果的数据文件;根据获取的所述查询结果的数据文件生成数据报表。由于所采用的数据检索方法可以实现循环查询,能够有效的减少检索数量,从而大幅度的减少大数据量的报表导出功能对检索服务的内存压力,提高报表生成服务的稳定性。

进一步的,本示例实施方式中还提供了一种报表生成装置,该报表生成装置至少包括上述示例性实施例中的数据检索装置,以及报表生成模块。其中:

报表生成模块用于将上述的数据检索装置生成的查询结果的数据文件生成数据报表。

通过利用数据检索装置得到查询结果,再利用报表生成模块将查询结果的数据文件转换成报表文件供用户下载和查阅,能够有效的减少大数据量的报表导出功能对内存的压力。

图5示出根据本公开示例实施方式中一种报表生成装置的结构化处理装置500的示意图。例如,装置500可以被提供为一服务器。参照图5,装置500包括处理组件522,其进一步包括一个或多个处理器,以及由存储器532所代表的存储器资源,用于存储可由处理组件522的执行的指令,例如应用程序。存储器532中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件522用于执行指令,以执行上述方法。

装置500还可以包括一个电源组件526用于为执行装置500的电源管理,一个有线或无线网络接口550用于将装置500连接到网络,和一个输入输出(I/O)接口558。装置500可以操作基于存储在存储器532的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1