一种数据处理方法、装置及数据查询系统与流程

文档序号:12465621阅读:178来源:国知局
本发明数据查询
技术领域
:,尤其涉及一种数据处理方法、装置及数据查询系统。
背景技术
::ApacheKylin是大数据量的秒级SQL查询引擎,其原理是通过预计算所有可能的维度组合存储在Hbase中,查询时解析SQL以获取维度和度量信息,然后再从hbase中扫描获取数据返回。Kylin中SQL引擎使用的是Calcite进行SQL解析、优化和部分算子的运算,由于Calcite的计算是完全基于内存的,因此,当Kylin中一个查询需要从hbase中获取大量记录时,内存会逐渐成为瓶颈。考虑到SQL查询通常是基于历史数据的,而历史数据最重要的特性是不可变性,对于不经常变化的数据,缓存是最常用也是最有效的提升性能的办法。Kylin并不是对每个查询结果均进行缓存,对于每一个查询,其会根据该查询扫描的记录总数是否超过设定阈值判断是否需要缓存结果,如果查询扫描的记录总数超过设定阈值,则进行缓存。请参阅图1,示出了现有技术中的Kylin架构,从图1中可以看出,Kylin架构中的多个查询服务器是独立的,对于每个查询服务器而言,其只能将数据缓存在本机的内存中,然而本机的内存有限,其可能无法对所有查询结果进行缓存,并且,由于各个查询服务器均将数据缓存在本机的内存中,而各个查询服务器又相互独立,这会导致查询服务器响应客户端查询请求的速度时快时慢,并且造成不必要的资源浪费。技术实现要素:有鉴于此,本发明提供了一种数据处理方法、装置及数据查询系统,用以解决现有技术中数据查询服务器将数据缓存在本机的内存中,而本机内存有限,其可能导致无法对所有查询结果进行缓存,并且,查询服务器响应客户端查询请求的速度时快时慢,并且造成不必要的资源浪费的问题,其技术方案如下:一种数据处理方法,应用于数据查询系统中的查询服务器,所述查询服务器设置有连接外部缓存系统的接口,并通过所述接口与所述外部缓存系统连接,所述外部缓存系统用于缓存查询请求和与所述查询请求对应的目标数据;优选地,所述数据处理方法包括:当接收到来自客户端的第一查询请求时,从所述第一查询请求中提取目标查询参数;将所述目标查询参数按预设规则处理成第二查询请求,并在所述外部缓存系统中查询所述第二查询请求;当在所述外部缓存系统中未查询到所述第二查询请求时,将所述第二查询请求存储至所述外部缓存系统中,并从目标数据库中查询与所述第二查询请求对应的目标数据;将与所述第二查询请求对应的目标数据与所述第二查询请求对应存储在所述外部缓存系统中。所述数据处理方法还包括:当在所述外部缓存系统中查询到所述第二查询请求时,在所述外部缓存系统中获取与所述第二查询请求对应的目标数据;将与所述第二查询请求对应的目标数据反馈给所述客户端。优选地,在所述外部缓存系统中获取与所述第二查询请求对应的目标数据之前,所述数据处理方法还包括:判断与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间是否晚于在所述目标数据库的最新更新时间;当与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间晚于在所述目标数据库的最新更新时间时,执行所述从所述外部缓存系统中获取与所述第二查询请求对应的目标数据。优选地,所述数据处理方法还包括:当与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间早于在所述目标数据库的最新更新时间时,从所述外部缓存系统中清除与所述第二查询请求对应的目标数据;从所述目标数据库中重新查询与所述第二查询请求对应的目标数据,并将重新查询到的目标数据与所述第二查询请求对应存储至所述外部缓存系统中。优选地,在将所述第二查询请求存储至所述外部缓存系统之后,所述数据处理方法还包括:在所述外部缓存系统中,与所述第二查询请求对应的目标数据的存储位置处写入目标指示信息,所述目标指示信息用于指示正在查询与所述第二查询请求对应的目标数据;所述将与所述第二查询请求对应的目标数据与所述第二查询请求对应存储在所述外部缓存系统中,包括:在从目标数据库中获得与所述第二查询请求对应的目标数据之后,将与所述第二查询请求对应的目标数据的存储位置处的所述目标指示信息更新为与所述第二查询请求对应的目标数据。优选地,所述数据处理方法还包括:判断与所述第二查询请求对应的目标数据的存储位置存储的是否为所述目标指示信息;当与所述第二查询请求对应的目标数据的存储位置存储的是所述目标指示信息时,等待,直至所述目标指示信息更新为与所述第二查询请求对应的目标数据,执行所述判断与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间是否晚于在所述目标数据库的最新更新时间;当与所述第二查询请求对应的目标数据的存储位置存储的不是所述目标指示信息时,执行所述判断与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间是否晚于在所述目标数据库的最新更新时间。一种数据处理装置,应用于数据查询系统中的查询服务器,所述查询服务器设置有连接外部缓存系统的接口,并通过所述接口与所述外部缓存系统连接,所述外部缓存系统用于缓存查询请求和与所述查询请求对应的目标数据;所述数据处理装置包括:提取模块、处理模块、第一查询模块、第一存储模块、第二查询模块和第二存储模块;所述提取模块,用于当接收到来自客户端的第一查询请求时,从所述第一查询请求中提取目标查询参数;所述处理模块,用于将所述提取模块提取的所述目标查询参数按预设规则处理成第二查询请求;所述第一查询模块,用于在所述外部缓存系统中查询所述处理模块处理得到的所述第二查询请求;所述第一存储模块,用于当所述第一查询模块在所述外部缓存系统中未查询到所述第二查询请求时,将所述第二查询请求存储至所述外部缓存系统中;所述第二查询模块,用于从目标数据库中查询与所述第二查询请求对应的目标数据;所述第二存储模块,用于将所述第二查询模块查询的与所述第二查询请求对应的目标数据与所述第二查询请求对应存储在所述外部缓存系统中。一种数据查询系统,包括:查询服务器和外部存储系统,所述查询服务器设置有连接外部缓存系统的接口,所述查询服务器通过所述接口与所述外部缓存系统连接;所述外部缓存系统,用于缓存查询请求和与所述查询请求对应的目标数据;所述查询服务器,用于当接收到来自客户端的第一查询请求时,从所述第一查询请求中提取目标查询参数;将所述目标查询参数按预设规则处理成第二查询请求,并在所述外部缓存系统中查询所述第二查询请求;当在所述外部缓存系统中未查询到所述第二查询请求时,将所述第二查询请求存储至所述外部缓存系统中,并从目标数据库中查询与所述第二查询请求对应的目标数据;将与所述第二查询请求对应的目标数据与所述第二查询请求对应存储在所述外部缓存系统中。其中,所述查询服务器,还用于当在所述外部缓存系统中查询到所述第二查询请求时,在所述外部缓存系统中获取与所述第二查询请求对应的目标数据,并将与所述第二查询请求对应的目标数据反馈给所述客户端。其中,所述查询服务器,还用于判断与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间是否晚于在所述目标数据库的最新更新时间;当与所述第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间早于在所述目标数据库的最新更新时间时,从所述外部缓存系统中清除与所述第二查询请求对应的目标数据,从所述目标数据库中重新查询与所述第二查询请求对应的目标数据,并将重新查询到的目标数据与所述第二查询请求对应存储至所述外部缓存系统中。上述技术方案具有如下有益效果:本发明提供的数据处理方法、装置及数据查询系统,在接收到客户端的第一查询请求时,能够将第一查询请求处理成可在外部缓存系统查询的第二查询请求,并基于第二查询请求在外部缓存系统中查询,如果在外部缓存系统中未查询到第二查询请求时,表明外部缓存系统中未缓存有与第二查询请求对应的目标数据,此时,从目标数据库中查询与第二查询请求对应的目标数据,并将该目标数据缓存在外部缓存系统中。由此可见,本发明提供的数据处理方法、装置及数据查询系统使得,查询服务器不再将目标数据缓存在本机的内存中,而是将第二查询请求以及对应的目标数据对应缓存在外部缓存系统,由于外部缓存的缓存容量通常较大或者可扩展,因此,其能够实现对所有查询结果的缓存,解决了现有技术中将目标数据缓存在本地的内存所带来的局限。另外,由于数据查询系统中的查询服务器均与外部缓存系统连接,即各个查询服务器共享外部缓存系统,这使得只要外部缓存系统中缓存有与查询请求对应的目标数据,任何一个查询服务器均能较快的向客户端反馈与查询请求对应的目标数据,且避免了不必要的资源浪费。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为现有技术中Kylin查询系统的架构图;图2为本发明实施例提供的数据缓存方法数据处理方法的一流程示意图;图3为本发明实施例提供的数据处理方法的另一流程示意图;图4为本发明实施例提供的数据处理方法的另一流程示意图;图5为本发明实施例提供的数据处理装置的一结构示意图;图6为本发明实施例提供的数据查询系统的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种数据处理方法,应用于数据查询系统中的查询服务器,查询服务器设置有连接外部缓存系统的接口,并通过该接口与外部缓存系统连接,外部缓存系统用于缓存查询请求和与查询请求对应的目标数据,请参阅图2,示出了该数据处理方法的流程示意图,可以包括:步骤S201:当接收到来自客户端的第一查询请求时,从第一查询请求中提取目标查询参数。步骤S202:将目标查询参数按预设规则处理成第二查询请求,并在外部缓存系统中查询第二查询请求。需要说明的是,上述提及的外部缓存系统缓存的查询请求为第二查询请求,与查询请求对应的目标数据为与第二查询请求对应的目标数据。在本实施例中,外部缓存系统可以但不限定为存储容量大于预设值的缓存系统,也可以为缓存容量可扩展的分布式缓存系统。优选地,外部缓存系统为缓存容量可扩展的分布式缓存系统。步骤S203:当在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中,并从目标数据库中查询与第二查询请求对应的目标数据。当在外部缓存系统中未查询到第二查询请求时,表明外部缓存系统中并未缓存有与第二查询请求对应的目标数据,此时,需要去目标数据库中查询与第二查询请求对应的目标数据。步骤S204:将与第二查询请求对应的目标数据与第二查询请求对应存储在外部缓存系统中。需要说明的是,为了便于后续对于数据的查询,在存储与第二查询请求对应的目标数据时,需要将与第二查询请求对应的目标数据与第二查询请求对应。本发明实施例提供的数据处理方法,在接收到客户端的第一查询请求时,首先将第一查询请求处理成可在外部缓存系统查询的第二查询请求,并基于第二查询请求在外部缓存系统中查询,如果在外部缓存系统中未查询到第二查询请求,表明外部缓存系统中未缓存有与第二查询请求对应的目标数据,此时,从目标数据库中查询与第二查询请求对应的目标数据,并将该目标数据缓存在外部缓存系统中。由此可见,本发明实施例提供的数据处理方法使得,查询服务器不再将目标数据缓存在本机的内存中,而是将第二查询请求以及对应的目标数据对应缓存在外部缓存系统,由于外部缓存的缓存容量通常较大或者可扩展,因此,其能够实现对所有查询结果的缓存,解决了现有技术中将目标数据缓存在本地内存所带来的局限。另外,现有技术中,由于各个查询服务器均将数据缓存在本机的内存中,且各个查询服务器相互独立,如果某个服务器中已缓存了目标数据,当客户端请求该服务器查询目标数据时,该查询服务器能够较快的向客户端返回查询结果,然而如果客户端请求另一个未缓存目标数据的查询服务器,该查询服务器无法快速向客户端返回查询结果,因为其需要去目标数据库中查询数据,再将查询结果返回给客户端,这会导致查询服务器响应客户端查询请求的速度时快时慢,并且造成不必要的资源浪费,而本发明实施例提供的数据处理方法中,由于数据查询系统中的查询服务器均与外部缓存系统连接,即各个查询服务器共享外部缓存系统,这使得只要外部缓存系统中缓存有与查询请求对应的目标数据,任何一个查询服务器均能较快的向客户端反馈与查询请求对应的目标数据,且避免了不必要的资源浪费。上述实施例提供的数据处理方法,给出了当在外部缓存系统中未查询到第二查询请求时的处理过程,然而,在某些时候,可能存在外部缓存系统中已存储有第二查询请求的情况,针对该情况,为了提供更全面的解决方案,请参阅图3,示出了本发明实施例提供的数据处理方法的另一流程示意图,该数据处理方法同样应用于数据查询系统中的查询服务器,查询服务器设置有连接外部缓存系统的接口,并通过该接口与外部缓存系统连接,外部缓存系统用于缓存查询请求和与查询请求对应的目标数据,该数据处理方法可以包括:步骤S301:当接收到来自客户端的第一查询请求时,从第一查询请求中提取目标查询参数。步骤S302:将目标查询参数按预设规则处理成第二查询请求,并在外部缓存系统中查询第二查询请求。在本实施例中,外部缓存系统可以为存储容量大于预设值的缓存系统,或者为缓存容量可扩展的分布式缓存系统,优选地,外部缓存系统为缓存容量可扩展的分布式缓存系统。由于客户端的查询请求无法直接适用于外部缓存系统,因此,本实施例需要将从第一查询请求提取出的目标查询参数处理成能够在外部缓存系统中查询的第二查询请求。步骤S303a:当在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中,并在外部缓存系统中、与第二查询请求对应的目标数据的存储位置处写入目标指示信息。其中,目标指示信息用于指示正在目标数据库中查询与第二查询请求对应的目标数据。示例性的,在与第二查询请求对应的目标数据的存储位置处写入“isRunning”。步骤S304a:在获得与第二查询请求对应的目标数据之后,将与第二查询请求对应的目标数据的存储位置处的目标指示信息更新为与第二查询请求对应的目标数据,然后执行步骤S305。上述步骤S303a~S304a给出了当在外部缓存系统中未查询到第二查询请求时的处理过程,然而,在某些时候,还可能存在外部数据缓存系统已缓存有与第二查询请求对应的目标数据的情况,此时,处理过程请参见如下步骤:步骤S303b:当在外部缓存系统中查询到第二查询请求时,判断与第二查询请求对应的目标数据的存储位置存储的是否为目标指示信息,当与第二查询请求对应的目标数据的存储位置存储的是目标指示信息时,执行步骤S304b-a,否则,执行步骤S304b-b。步骤S304b-a:轮询等待,直至目标指示信息更新为与第二查询请求对应的目标数据,从存储位置获取与第二查询请求对应的目标数据,然后执行步骤S305。步骤S304b-b:从存储位置获取与第二查询请求对应的目标数据,然后执行步骤S305。步骤S305:将与第二查询请求对应的目标数据反馈给客户端。需要说明的是,在本发明实施例中,当在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中,并在外部缓存系统中、与第二查询请求对应的目标数据的存储位置处写入目标指示信息,以指示正在查询与第二查询请求对应的目标数据,需要说明的是,在另一种可能的实现方式中,在将第二查询请求存储至外部缓存系统之后,也可在与第二查询请求对应的目标数据的存储位置处不写入任何信息,外部缓存系统中存储了第二查询请求,但第二查询请求对应的存储位置为空,表明正在查询与第二查询请求对应的目标数据,当查询到与第二查询请求对应的目标数据之后,直接将该目标数据存储至与第二查询请求对应的存储位置处。相应的,当外部缓存系统中查询到第二查询请求时,判断与第二查询请求对应的目标数据的存储位置存储的是否为空,如果与第二查询请求对应的目标数据的存储位置为空,则表明正在获取与第二查询请求对应的目标数据,则轮询等待,直至与第二查询请求对应的目标数据的存储位置存储有与第二查询请求对应的目标数据。本发明实施例提供的数据处理方法,在接收到客户端的第一查询请求时,首先将第一查询请求处理成能够在外部缓存系统中进行查询的第二查询请求,并基于第二查询请求进行查询,如果在外部缓存系统中未查询到第二查询请求,表明外部缓存系统中未缓存有与第二查询请求对应的目标数据,此时,从目标数据库中查询与第二查询请求对应的目标数据,并将该目标数据缓存在外部缓存系统中,如果在外部缓存系统中查询到第二查询请求,表明外部缓存系统中正在缓存或已缓存有与第二查询请求对应的目标数据,此时可从外部缓存中获取与第二查询请求对应的目标数据并反馈给客户端。由此可见,本发明实施例提供的数据处理方法使得,查询服务器不再将目标数据缓存在本机的内存中,而是将第二查询请求以及对应的目标数据对应缓存在外部缓存系统,由于外部缓存的缓存容量通常较大或者可扩展,因此,其能够实现对所有查询结果的缓存,解决了现有技术中将目标数据缓存在本地的内存所带来的局限。另外,由于数据查询系统中的查询服务器均与外部缓存系统连接,即各个查询服务器共享外部缓存系统,这使得只要外部缓存系统中缓存有与查询请求对应的目标数据,任何一个查询服务器均能较快的向客户端反馈与查询请求对应的目标数据,且避免了不必要的资源浪费。可以理解的是,目标数据库中的数据可能是不断更新的,在某些时候,可能存在将一目标数据缓存到外部缓存系统之后,目标数据库中的该目标数据进行了更新,而当查询服务器接收到来自客户端对该目标数据的查询请求时,由于外部缓存系统已经缓存了该目标数据,因此,查询服务器会直接从外部缓存系统中获取该目标数据反馈给客户端,而实际上此时的目标数据在目标数据库中已经发生了更新,也就是说,查询服务器反馈给客户端的数据是并不是当前最新的数据,而是过期数据。为了能够向客户端反馈当前最新的更新数据,请参阅图4,示出了本发明实施例提供的数据处理方法的另一流程示意图,该数据处理方法应用于数据查询系统中的查询服务器,查询服务器设置有连接外部缓存系统的接口,并通过该接口与外部缓存系统连接,外部缓存系统用于缓存查询请求和与查询请求对应的目标数据,该数据处理方法可以包括:步骤S401:当接收到来自客户端的第一查询请求时,从第一查询请求中提取目标查询参数。步骤S402:将目标查询参数按预设规则处理成第二查询请求,并在外部缓存系统中查询第二查询请求。需要说明的是,上述提及的外部缓存系统缓存的查询请求为第二查询请求,与查询请求对应的目标数据为与第二查询请求对应的目标数据。在本实施例中,外部缓存系统可以为存储容量大于预设值的缓存系统,或者为缓存容量可扩展的分布式缓存系统,优选地,外部缓存系统为缓存容量可扩展的分布式缓存系统。由于客户端的查询请求无法直接适用于外部缓存系统,因此,本实施例需要将从第一查询请求提取出的目标查询参数处理成能够在外部缓存系统中查询的第二查询请求。步骤S403a:当在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中,并在外部缓存系统中、与第二查询请求对应的目标数据的存储位置处写入目标指示信息。其中,目标指示信息用于指示正在目标数据库中查询与第二查询请求对应的目标数据。示例性的,在与第二查询请求对应的目标数据的存储位置处写入“isRunning”。步骤S404a:从目标数据目查询与第二查询请求对应的目标数据,并在获得与第二查询请求对应的目标数据之后,将与第二查询请求对应的目标数据的存储位置处的目标指示信息更新为与第二查询请求对应的目标数据,然后执行步骤S407。上述步骤S403a~S404a给出了当在外部缓存系统中未查询到第二查询请求时的处理过程,然而,在某些时候,还可能存在外部数据缓存系统已缓存有与第二查询请求对应的目标数据的情况,此时,处理过程请参见如下步骤:步骤S403b:当在外部缓存系统中查询到第二查询请求时,判断与第二查询请求对应的目标数据的存储位置存储的是否为目标指示信息,当与第二查询请求对应的目标数据的存储位置存储的是目标指示信息时,执行步骤S404b,否则,直接执行步骤S405b。步骤S404b:等待,直至目标指示信息更新为与第二查询请求对应的目标数据,然后执行步骤S405b。步骤S405b:判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间,当与第二查询请求对应的目标数据在外部缓存系统中缓存的时间晚于在目标数据库的最新更新时间时,执行步骤S406b-a,当与第二查询请求对应的目标数据在外部缓存系统中缓存的时间早于在目标数据库的最新更新时间时,执行步骤S406b-b。需要说明的是,目标数据库中的目标数据进行更新时,会自动记录数据的最新更新时间,因此,从目标数据库中可获得目标数据的最新更新时间,外部缓存系统中的目标数据进行缓存时也会自动记录缓存时间,目标数据的缓存时间与第二查询请求关联,基于第二查询请求可从外部缓存系统中获得目标数据的缓存时间。可以理解的是,如果目标数据在外部缓存系统中的缓存时间如果晚于目标数据在目标数据库中的最新更新时间,表明目标数据缓存至外部缓存系统中之后,该目标数据在目标数据库并未进行更新,外部缓存系统中缓存的数据为最新数据。反之,如果目标数据在外部缓存系统中的缓存时间早于目标数据在目标数据库中的最新更新时间,表明目标数据缓存至外部缓存系统中之后,该目标数据在目标数据库进行了更新,即外部缓存系统中缓存的该目标数据已过期。步骤S406b-a:从外部缓存系统中获取与第二查询请求对应的目标数据,然后执行步骤S407。步骤S406b-b:从外部缓存系统中清除与第二查询请求对应的目标数据,重新从目标数据库中查询与第二查询请求对应的目标数据,将重新查询的目标数据存储至外部缓存系统中,然后执行步骤S407(需要说明的是,此时反馈给客户端的目标数据为重新查询得到的目标数据)。步骤S407:将与第二查询请求对应的目标数据反馈给客户端。需要说明的是,在本发明实施例中,当在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中,并在外部缓存系统中、与第二查询请求对应的目标数据的存储位置处写入目标指示信息,以指示正在查询与第二查询请求对应的目标数据,需要说明的是,在另一种可能的实现方式中,在将第二查询请求存储至外部缓存系统之后,也可在与第二查询请求对应的目标数据的存储位置处不写入任何信息,外部缓存系统中存储了第二查询请求,但第二查询请求对应的存储位置为空,表明正在查询与第二查询请求对应的目标数据,当查询到与第二查询请求对应的目标数据之后,直接将该目标数据存储至与第二查询请求对应的存储位置处。相应的,当外部缓存系统中查询到第二查询请求时,判断与第二查询请求对应的目标数据的存储位置存储的是否为空,如果与第二查询请求对应的目标数据的存储位置为空,则表明正在获取与第二查询请求对应的目标数据,则轮询等待,直至与第二查询请求对应的目标数据的存储位置存储有与第二查询请求对应的目标数据。本发明实施例提供的数据处理方法,在接收到客户端的第一查询请求时,首先将第一查询请求处理成可在外部缓存系统中进行查询的第二查询请求,并基于第二查询请求进行查询,如果在外部缓存系统中未查询到第二查询请求,表明外部缓存系统中未缓存有与第二查询请求对应的目标数据,此时,从目标数据库中查询与第二查询请求对应的目标数据,并将该目标数据缓存在外部缓存系统中,如果在外部缓存系统中查询到第二查询请求时,表明外部缓存系统中正在缓存或已缓存有与第二查询请求对应的目标数据,此时可以从外部缓存系统中获取该目标数据,为了能够向客户端反馈与第二查询请求对应的最新目标数据,本发明实施例会判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间,如果是,则从外部缓存中获取与第二查询请求对应的目标数据并反馈给客户端,否则,表明外部缓存系统中缓存的目标数据已过期,此时将其清除,重新从目标数据库中获取与第二查询请求对应的目标数据进行缓存,并将重新获取的目标数据反馈给客户端。由此可见,本发明实施例提供的数据处理方法使得查询服务器不再将目标数据缓存在本机的内存中,而是将第二查询请求以及对应的目标数据对应缓存在外部缓存系统,由于外部缓存的缓存容量通常较大或者可扩展,因此,其能够实现对所有查询结果的缓存,解决了现有技术中将目标数据缓存在本地的内存所带来的局限。另外,由于数据查询系统中的查询服务器均与外部缓存系统连接,即各个查询服务器共享外部缓存系统,这使得只要外部缓存系统中缓存有与查询请求对应的目标数据,任何一个查询服务器均能较快的向客户端反馈与查询请求对应的目标数据,且避免了不必要的资源浪费。再者,本发明实施例提供的数据处理方法能够自动清除外部缓存系统中的过期数据,并重新从目标数据库中获取当前最新数据进行缓存,并将重新获取的最新数据反馈给客户端,这样,一方面实现了过期数据的自动清除,另一方面保证了当客户端请求数据时,能够向其反馈当前最新的数据。在上述本发明实施例提供的数据处理方法的基础上,现列举一具体实例进行说明:假设数据查询系统为kylin查询系统,外部缓存系统为Redis分布式缓存系统,Redis分布式缓存系统以key/value存储结构缓存数据,kylin查询系统中包括多个查询服务器,各个查询服务器均设置有连接Redis分布式缓存系统的接口,各个查询服务器通过该接口均与Redis分布式缓存系统连接:(1)由于Redis分布式缓存系统的存储结构为key/value型,而kylin查询系统中客户端发送的查询请求并不能直接应用于对Redis分布式缓存系统中缓存数据的查询,基于此,查询服务器需要先将来自客户端的第一查询请求处理成可在Redis分布式缓存系统中查询的第二查询请求,将第二查询请求存储在key/value存储结构中的key中,而value中存储与第二查询请求对应的目标数据。具体的,在接收到来自客户端的第一查询请求时:首先,从第一查询请求中提取目标查询参数sql、offset、limit、acceptPartial和project,其中,sql为查询的sql语句,offset为sql中相对记录首行的偏移量,limit为限制记录条数,acceptPartial为是否允许分块,project为此查询的范围在哪个project中。然后,为了使目标查询参数能够统一存储到Redis的key中,并使这个key唯一标识这个查询,达到相同的查询对应到同一个key从而查找到该key对应的同一value值目的,同时,考虑到json可以很方便的表达出属性和值的对应关系,并且还能够以统一字符串的形式被存储于Redis的key中,本实施例可采用json的形式将所有目标查询参数组合到一起,并对所有的目标查询参数按照sql、offset、limit、acceptPartia、project的顺序排列并存储,这样既能保证同一个查询的请求对应的redis缓存的value值是相同的,又能保证其是唯一的,json的具体结构如下:{"sql":SqlStr,"offset":OffsetNum,"limit":LimitNum,"acceptPartial":FTFlag,"project":ProjectName}其中,SqlStr对应第一查询请求中的sql参数;OffsetNum对应第一查询请求中的offset参数;LimitNum对应第一查询请求中的limit参数;FTFlag对应第一查询请求中的acceptPartial参数;ProjectName对应第一查询请求中的project参数。需要说明的是,在处理第一查询请求的过程中,为了保证查询请求的唯一性,需要对SqlStr进行标准化,去除多余的空格,示例性的,SqlStr参数“selectafromtable”和“selectafromtable”对应的查询结果实质上是一致的,如果不对其进行标准化,会导致Redis分布式缓存系统中存储两个相同的查询请求,这样会导致重复查询,为了避免上述情况的发生,要去除SqlStr参数中多余的空格,避免将意义完全相同的两个查询变成两个缓存记录,以提高缓存利用率和查询效率。(2)在将第一查询请求处理成第二查询请求(即json查询串)之后,查询Redis分布式缓存系统中的key,如果在各个key未查询到第二查询请求,则转入步骤(3),否则,转入步骤(4)。(3)将第二查询请求添加至key中,该key对应的value暂时赋值为“isRunning”,表明正在查询与key中的第二查询请求对应的目标数据,在目标数据库(如hbase)中查询与第二查询请求对应目标数据,并在查询到该目标数据之后,将与key对应的value中的“isRunning”更新为该目标数据,将该目标数据反馈给客户端。(4)将存储有第二查询请求的key作为目标key,判断目标key对应的value值是否为“isRunning”,如果否,表明Redis分布式缓存系统中当前已缓存有与第二查询请求对应的目标数据,此时直接转入步骤(5),如果是,则轮询等待,直至目标key对应的value值不再为“isRunning”而是更新为查询结果,然后转到步骤(5)。(5)判断与目标key中的第二查询请求对应的目标数据是否过期,具体的:从目标数据库获取目标数据的最新更新时间,并从Redis分布式缓存系统中获取目标数据的缓存时间,判断目标数据的缓存时间是否晚于目标数据的最新更新时间:如果目标数据的缓存时间晚于目标数据的最新更新时间,则表明目标数据缓存至Redis分布式缓存系统中之后,该目标数据在目标数据库并未进行更新,Redis分布式缓存系统中缓存的数据为最新数据,此时,从目标key对应的value中获取目标数据反馈给客户端;如果目标数据的缓存时间早于目标数据的最新更新时间,表明目标数据缓存至Redis分布式缓存系统中之后,该目标数据在目标数据库进行了更新,即Redis分布式缓存系统中缓存的该目标数据已过期,此时,将该目标数据从Redis分布式缓存系统中清除,即将目标key对应的value值清除,重新从目标数据库中获取与第二查询请求对应的目标数据,然后将重新获取的目标数据存储至目标key对应的value中,并将该重新获取的目标数据反馈给客户端。与上述数据处理方法相对应,本发明实施例还提供了一种数据处理装置,该数据处理装置应用于数据查询系统中的查询服务器,查询服务器设置有连接外部缓存系统的接口,并通过接口与外部缓存系统连接,外部缓存系统用于缓存查询请求和与查询请求对应的目标数据,请参阅图5,示出了该数据处理装置的一结构示意图,可以包括:提取模块501、处理模块502、第一查询模块503、第一存储模块504、第二查询模块505和第二存储模块506。其中:提取模块501,用于当接收到来自客户端的第一查询请求时,从第一查询请求中提取目标查询参数。处理模块502,用于将提取模块501提取的目标查询参数按预设规则处理成第二查询请求。第一查询模块503,用于在外部缓存系统中查询处理模块502处理得到的第二查询请求。需要说明的是,上述提及的外部缓存系统缓存的查询请求为第二查询请求,与查询请求对应的目标数据为与第二查询请求对应的目标数据。在本实施例中,外部缓存系统可以为存储容量大于预设值的缓存系统,或者为缓存容量可扩展的分布式缓存系统,优选地,外部缓存系统为缓存容量可扩展的分布式缓存系统。第一存储模块504,用于当第一查询模块503在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中。第二查询模块505,用于从目标数据库中查询与第二查询请求对应的目标数据。第二存储模块506,用于将第二查询模块505查询的与第二查询请求对应的目标数据与第二查询请求对应存储在外部缓存系统中。本发明实施例提供的数据处理装置,使得查询服务器不再将目标数据缓存在本机的内存中,而是将第二查询请求以及对应的目标数据对应缓存在外部缓存系统,由于外部缓存的缓存容量通常较大或者可扩展,因此,其能够实现对所有查询结果的缓存,解决了现有技术中将目标数据缓存在本地的内存所带来的局限。另外,由于数据查询系统中的查询服务器均与外部缓存系统连接,即各个查询服务器共享外部缓存系统,这使得只要外部缓存系统中缓存有与查询请求对应的目标数据,任何一个查询服务器均能较快的向客户端反馈与查询请求对应的目标数据,且避免了不必要的资源浪费。上述实施例提供的数据处理装置还可以包括:获取模块和反馈模块。第一获取模块,用于当在外部缓存系统中查询到第二查询请求时,在外部缓存系统中获取与第二查询请求对应的目标数据。反馈模块,用于将与第二查询请求对应的目标数据反馈给客户端。上述实施例提供的数据处理装置还可以包括:第一判断模块。第一判断模块,用于判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间。获取模块,具体用于当与第二查询请求对应的目标数据在外部缓存系统中缓存的时间晚于在目标数据库的最新更新时间时,从外部缓存系统中获取与第二查询请求对应的目标数据。上述实施例提供的数据处理装置还可以包括:数据清除模块和第三查询模块。数据清除模块,用于当与第二查询请求对应的目标数据在外部缓存系统中缓存的时间早于在目标数据库的最新更新时间时,从外部缓存系统中清除与第二查询请求对应的目标数据。第三查询模块,用于从目标数据库中重新查询与第二查询请求对应的目标数据,并将重新查询到的目标数据与第二查询请求对应存储至外部缓存系统中。上述实施例提供的数据处理装置还可以包括:第三存储模块。第三存储模块,用于在外部缓存系统中,与第二查询请求对应的目标数据的存储位置处写入目标指示信息,其中,目标指示信息用于指示正在查询与第二查询请求对应的目标数据。则第二存储模块,具体用于在获得与第二查询请求对应的目标数据之后,将与第二查询请求对应的目标数据的存储位置处的目标指示信息更新为与第二查询请求对应的目标数据。上述实施例提供的数据处理装置还可以包括:第二判断模块。第二判断模块,用于判断与第二查询请求对应的目标数据的存储位置存储的是否为目标指示信息。则第一判断模块,具体用于当与第二查询请求对应的目标数据的存储位置存储的是目标指示信息时,等待,直至目标指示信息更新为与第二查询请求对应的目标数据,判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间;当与第二查询请求对应的目标数据的存储位置存储的不是目标指示信息时,判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间。本发明实施例还提供了一种数据查询系统,请参阅图6,示出了该数据查询系统的一结构示意图,可以包括:查询服务器601和外部存储系统602,查询服务器601设置有连接外部缓存系统602的接口,查询服务器通过接口与外部缓存系统602连接。需要说明的是,查询服务器601可以为一个也可以为多个,图6示出的仅为一示例。外部缓存系统602,用于缓存查询请求和与查询请求对应的目标数据。在本实施例中,外部缓存系统可以为存储容量大于预设值的缓存系统,或者为缓存容量可扩展的分布式缓存系统,优选地,外部缓存系统为缓存容量可扩展的分布式缓存系统。查询服务器601,用于当接收到来自客户端的第一查询请求时,从第一查询请求中提取目标查询参数;将目标查询参数按预设规则处理成第二查询请求,并在外部缓存系统中查询第二查询请求;当在外部缓存系统中未查询到第二查询请求时,将第二查询请求存储至外部缓存系统中,并从目标数据库(图6中示出的数据服务器)中查询与第二查询请求对应的目标数据;将与第二查询请求对应的目标数据与第二查询请求对应存储在外部缓存系统中。本发明实施例提供的数据查询系统还可以包括负载均衡器603和客户端端。其中负载均衡器603用于均衡来自客户端的第一查询请求,将第一查询请求发送给查询服务器601。本发明提供的数据查询系统中,查询服务器不再将目标数据缓存在本机的内存中,而是将第二查询请求以及对应的目标数据对应缓存在外部缓存系统,由于外部缓存的缓存容量通常较大或者可扩展,因此,其能够实现对所有查询结果的缓存,解决了现有技术中将目标数据缓存在本地的内存所带来的局限。另外,由于数据查询系统中的查询服务器均与外部缓存系统连接,即各个查询服务器共享外部缓存系统,这使得只要外部缓存系统中缓存有与查询请求对应的目标数据,任何一个查询服务器均能较快的向客户端反馈与查询请求对应的目标数据,且避免了不必要的资源浪费。上述实施例提供的数据查询系统中,查询服务器,还用于当在外部缓存系统中查询到第二查询请求时,在外部缓存系统中获取与第二查询请求对应的目标数据,并将与第二查询请求对应的目标数据反馈给客户端。上述实施例提供的数据查询系统中,查询服务器,还用于判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间。当与第二查询请求对应的目标数据在所述外部缓存系统中缓存的时间晚于在所述目标数据库的最新更新时间时,查询服务器从外部缓存系统中获取与第二查询请求对应的目标数据;当与第二查询请求对应的目标数据在外部缓存系统中缓存的时间早于在目标数据库的最新更新时间时,查询服务器从外部缓存系统中清除与第二查询请求对应的目标数据,从目标数据库中重新查询与第二查询请求对应的目标数据,并将重新查询到的目标数据与第二查询请求对应存储至外部缓存系统中。上述实施例提供的数据查询系统中,查询服务器,还用于在将第二查询请求存储至外部缓存系统中之后,在与查询请求对应的目标数据的存储位置处写入目标指示信息,其中,目标指示信息用于指示正在查询与第二查询请求对应的目标数据,在获得与第二查询请求对应的目标数据之后,将与第二查询请求对应的目标数据的存储位置处的目标指示信息更新为与第二查询请求对应的目标数据。上述实施例提供的数据查询系统中,查询服务器,还用于判断与第二查询请求对应的目标数据的存储位置存储的是否为目标指示信息,当与第二查询请求对应的目标数据的存储位置存储的是所述目标指示信息时,等待,直至目标指示信息更新为与第二查询请求对应的目标数据,判断与所述第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间;当与第二查询请求对应的目标数据的存储位置存储的不是目标指示信息时,判断与第二查询请求对应的目标数据在外部缓存系统中缓存的时间是否晚于在目标数据库的最新更新时间。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1