数据查询方法、数据库中间件、数据查询设备及存储介质与流程

文档序号:20029783发布日期:2020-02-28 10:14阅读:192来源:国知局
数据查询方法、数据库中间件、数据查询设备及存储介质与流程

本发明涉及网络技术领域,尤其涉及一种基于数据库中间件的数据查询方法、数据库中间件、数据查询设备及存储介质。



背景技术:

随着信息技术的不断发展,数据增长呈爆炸式趋势,并产生了大量需要存储和查询的数据。现有技术中一般通过关系型数据库来进行数据的存储和查询,而关系型数据库中一般通过无法动态扩展存储容量的单个库来进行数据的存储与查询,因而,当数据量庞大时,势必会使得关系型数据库的存储压力过大而无法满足海量数据的存储需求。另外,从单个数据库中存储的大量数据中进行数据的查询时,也势必会耗费更多的查询时间,从而造成查询效率较低,无法满足用户的查询需求。因而,如何提高数据查询效率、扩展数据存储容量成为本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例提供了一种基于数据库中间件的数据查询方法、数据库中间件、数据查询设备及存储介质,能够提高数据查询速度和数据查询效率,并可动态扩展数据库节点以提高数据存储能力。

本发明实施例的第一方面,提供了一种基于数据库中间件的数据查询方法,包括:

接收应用终端发送的数据查询请求;

根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据;

若所述缓存单元中存在对应的第一缓存数据,将所述第一缓存数据发送至所述应用终端;

若所述缓存单元中不存在对应的第一缓存数据,将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据;

接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元。

进一步地,所述将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据,包括:

将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求分片发送至对应的第一数据库节点,并对所述第一数据库节点返回的分片数据进行汇总,反馈汇总后的分片数据;

相应地,所述接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元,包括:

接收所述第一路由节点反馈的所述汇总后的分片数据,将所述汇总后的分片数据发送至所述应用终端,并将所述汇总后的分片数据缓存至所述缓存单元。

优选地,所述缓存单元包括第一缓存单元和第二缓存单元;

相应地,所述根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据,包括:

根据所述数据查询请求判断所述第一缓存单元中是否存在对应的第一缓存数据;

若所述第一缓存单元中不存在对应的第一缓存数据,判断所述第二缓存单元中是否存在对应的第一缓存数据。

可选地,所述将所述汇总后的分片数据缓存至所述缓存单元,包括:

将所述汇总后的分片数据缓存至所述第一缓存单元;

将所述第一缓存单元中缓存的所述汇总后的分片数据同步至所述第二缓存单元。

进一步地,所述数据查询方法,还包括:

接收所述应用终端发送的数据写入请求;

将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求发送至对应的第二数据库节点,并反馈所述第二数据库节点返回的操作响应;

接收所述第二路由节点反馈的所述操作响应,并在所述操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据;

若所述缓存单元中存在对应的第二缓存数据,则删除所述缓存单元中的第二缓存数据。

优选地,所述将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求发送至对应的第二数据库节点,并反馈所述第二数据库节点返回的操作响应,包括:

将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求分片发送至对应的第二数据库节点,并对所述第二数据库节点返回的操作响应进行汇总,反馈汇总后的操作响应;

相应地,所述接收所述第二路由节点反馈的所述操作响应,并在所述操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据,包括:

接收所述第二路由节点反馈的所述汇总后的操作响应,并在所述汇总后的操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据。

可选地,所述将所述数据查询请求发送至数据库中间件的第一路由节点,包括:

根据负载均衡策略确定所述数据库中间件中接收所述数据查询请求的第一路由节点,并将所述数据查询请求发送至所述第一路由节点。

进一步地,所述根据负载均衡策略确定所述数据库中间件中接收所述数据查询请求的第一路由节点,包括:

通过zookeeper管理中心获取可接收所述数据查询请求的所有路由节点;

根据负载均衡策略在所获取的所有路由节点中确定接收所述数据查询请求的第一路由节点。

本发明实施例的第二方面,提供了一种数据库中间件,包括:

查询请求接收模块,用于接收应用终端发送的数据查询请求;

缓存数据判断模块,用于根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据;

缓存数据发送模块,用于若所述缓存单元中存在对应的第一缓存数据,将所述第一缓存数据发送至所述应用终端;

查询请求发送模块,用于若所述缓存单元中不存在对应的第一缓存数据,将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据;

数据发送模块,用于接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元。

本发明实施例的第三方面,提供了一种数据查询设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如前述第一方面所述数据查询方法的步骤。

本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如前述第一方面所述数据查询方法的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,通过设置缓存单元来进行查询数据的缓存,使得再次查询该数据时,若缓存单元中还存在该数据的话,直接将缓存单元中所存储的数据发送给应用终端,从而提高数据查询速度和查询效率;而当缓存单元中不存在该数据时,则再将数据查询请求发送至数据库中间件的第一路由节点,由第一路由节点按照预设路由规则将数据查询请求发送至存储数据的一个或者多个数据库节点中,并将数据库节点返回的数据发送给应用终端,以通过数据库节点来进行数据的查询,提高数据查询速度和查询效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的数据查询系统的系统结构图;

图2为本发明实施例一提供的一种基于数据库中间件的数据查询方法的方法流程图;

图3为本发明实施例一中数据查询方法在一个应用场景下进行数据写入的流程示意图;

图4为本发明实施例二提供的数据库中间件的结构示意图;

图5为本发明实施例三提供的数据查询设备的示意图。

具体实施方式

本发明实施例提供了一种基于数据库中间件的数据查询方法、数据库中间件、数据查询设备及存储介质,用于解决数据查询缓慢、耗时的问题,以提高数据查询速度和查询效率,并可动态扩展数据库节点以提高数据存储能力。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例在应用终端与数据库之间设置有数据库中间件,应用终端通过数据库中间件来访问数据库。如图1所示,数据库中间件包括服务节点、路由节点、缓存单元、虚拟ip节点和zookeeper管理中心。需要说明的是,本发明实施例中的任一服务节点均可直接将数据查询请求发送至注册于zookeeper管理中心的所有路由节点中的任意一个或者多个,图1中为示图清楚,仅对其进行部分示意,但不应理解为对本发明实施例的限制。另外,图1中的服务节点的数量和路由节点的数量仅作示意性解释,不应理解为对本发明实施例的限制。

下面基于上述数据查询系统来结合实施例一对基于数据库中间件的数据查询方法进行描述。如图2所示,本发明实施例一提供了一种基于数据库中间件的数据查询方法,所述数据查询方法,包括:

步骤s201、接收应用终端发送的数据查询请求。

可以理解的是,本实施例中,数据库中间件的服务节点可与虚拟ip节点绑定,因而,应用终端可通过虚拟ip节点访问数据库中间件的服务节点,如向服务节点发送数据查询请求。例如,在某一具体应用中,服务节点a和服务节点b同时绑定至虚拟ip节点,因而,当应用终端a访问虚拟ip节点时,其可以访问到服务节点a,也可以访问到服务节点b,也就是说,当用户终端a通过虚拟ip节点向服务节点发送数据查询请求时,可将所述数据查询请求发送至服务节点a,或者将所述数据查询请求发送至服务节点b,又或者将所述数据查询请求同时发送至服务节点a和服务节点b,从而提高数据查询系统的可靠性和高可用性。在此,应用终端向服务节点发送数据查询请求,是指应用终端通过设置于应用终端内的应用程序向服务节点发送数据查询请求。

进一步地,数据库中间件的虚拟ip节点具有负载均衡功能,以使得虚拟ip节点在接收到应用终端发送的数据查询请求时,可根据负载均衡策略将所述数据查询请求发送至对应的服务节点,如将第一次接收到的数据查询请求发送至服务节点a,将第二次接收到的数据查询请求发送至服务节点b,将第三次接收到的数据查询请求发送至服务节点a,将第四次接收到的数据查询请求同时发送至服务节点a和服务节点b等多个服务节点,以进一步提高数据查询系统的可靠性和高可用性。

优选地,数据库中间件的虚拟ip节点还具有心跳检测功能,可用于检测各服务节点的工作性能,如当检测到服务节点a宕机时,可将服务节点a从服务节点集群中删除,以避免后续应用终端将数据查询请求发送到服务节点a,从而提高服务节点查询的可用性,进而提高数据查询的效率。

步骤s202、根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据。

可以理解的是,在数据库中间的服务节点接收到来自应用终端的数据查询请求后,其可根据所述数据查询请求来判断数据库中间件的缓存单元中是否存在应用终端所要的第一缓存数据。

进一步地,本实施例中,所述缓存单元包括第一缓存单元和第二缓存单元,服务节点可为查询服务器等硬件设备,也可为具有查询功能的软件模块,所述第一缓存单元为与服务节点对应的本地内存单元,如为设置于所述查询服务器本机的内存单元,所述第二缓存单元为设置数据库中间件中的redis服务器,其中,redis服务器中的缓存数据来自于各个本地内存单元同步过来的缓存数据,并且redis服务器中的缓存数据可供所有服务节点访问、获取。

相应地,所述根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据,具体包括:步骤a、根据所述数据查询请求判断所述第一缓存单元中是否存在对应的第一缓存数据;步骤b、若所述第一缓存单元中不存在对应的第一缓存数据,判断所述第二缓存单元中是否存在对应的第一缓存数据。

对于上述步骤a和步骤b,可以理解的是,当某一服务节点获取到数据查询请求后,该服务节点首先查询对应的本地内存单元中是否存在所述数据查询请求所要的第一缓存数据,若存在的话,则直接获取本地内存单元中的第一缓存数据;若不存在的话,则继续查询redis服务器中是否存在所述数据查询请求所要的第一缓存数据,若存在的话,则直接获取redis服务器中存储的第一缓存数据。

如图1所示,当服务节点a获取到应用终端b发送的数据查询请求时,服务节点a则首先查询本地的第一缓存单元a中是否存在所述数据查询请求所要的第一缓存数据,若所述第一缓存单元a中存在所述数据查询请求所要的第一缓存数据,服务节点a则直接取出所述第一缓存单元a中的第一缓存数据;若所述第一缓存单元a中不存在所述数据查询请求所要的第一缓存数据,则服务节点a继续查询第二缓存单元中是否存在所述数据查询请求所要的第一缓存数据,若所述第二缓存单元中存在所述数据查询请求所要的第一缓存数据,服务节点a则直接取出所述第二缓存单元中的第一缓存数据,从而利用其他服务节点,在服务节点a进行该次查询之前,已查询到的第一缓存数据来提高本次数据查询速度和查询效率。

步骤s203、若所述缓存单元中存在对应的第一缓存数据,将所述第一缓存数据发送至所述应用终端。

可以理解的是,当所述缓存单元中存在对应的第一缓存数据,并且服务节点从所述缓存单元中获取了所述第一缓存数据后,服务节点则可直接将所述第一缓存数据发送至所述应用终端,如将从第一缓存单元中获取到的第一缓存数据发送至所述应用终端,或者将从第二缓存单元中获取到的第一缓存数据发送至所述应用终端,以快速完成本次的数据查询操作,提高数据查询速度和查询效率。

步骤s204、若所述缓存单元中不存在对应的第一缓存数据,将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据。

进一步地,所述将所述数据查询请求发送至数据库中间件的第一路由节点,具体包括:根据负载均衡策略确定所述数据库中间件中接收所述数据查询请求的第一路由节点,并将所述数据查询请求发送至所述第一路由节点。

优选地,所述根据负载均衡策略确定所述数据库中间件中接收所述数据查询请求的第一路由节点,具体包括:步骤c、通过zookeeper管理中心获取可接收所述数据查询请求的所有路由节点;步骤d、根据负载均衡策略在所获取的所有路由节点中确定接收所述数据查询请求的第一路由节点。

可以理解的是,本实施例中,所有路由节点均注册于所述zookeeper管理中心中,且可动态地从所述zookeeper管理中心中删除,或者注册新的路由节点至所述zookeeper管理中心。在此,当某一路由节点注册至所述zookeeper管理中心时,表明该路由节点后续可用于接收数据查询请求,因而,本实施例可通过注册新的路由节点至所述zookeeper管理中心来扩展路由节点的节点数量,以提高数据查询的查询速度和查询效率。

进一步地,本实施例中,所述将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据,可以包括:

将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求分片发送至对应的第一数据库节点,并对所述第一数据库节点返回的分片数据进行汇总,反馈汇总后的分片数据。

可以理解的是,当所述缓存单元中不存在对应的第一缓存数据时,服务节点即会通过访问所述zookeeper管理中心来获知所有注册到所述zookeeper管理中心中的路由节点,即获知可接收所述数据查询请求的所有路由节点,然后根据负载均衡策略在所有路由节点中确定一个用于接收所述数据查询请求的第一路由节点,并将所述数据查询请求发送给所确定的第一路由节点。第一路由节点在接收到所述数据查询请求后,可根据第一预设路由规则将所述数据查询请求分片发送至对应的第一数据库节点,即对所述数据查询请求进行解析,并将解析后的数据查询请求发送至多个不同的第一数据库节点,然后接收多个第一数据库节点返回的分片数据,并对所有分片数据进行汇总,汇总后向服务节点反馈汇总的分片数据,也就是说,向服务节点反馈最终得到的查询数据。

在此,所述第一预设路由规则可为分片的路由规则,具体可为根据时间段分片的路由规则,如将每一个月份设置为一个分片,或者将每一年设置为一个分片;也可为根据范围约定分片的路由规则,如将0-1000m设置为第一个分片,将1001m至2000m设置为第二个分片,等等;还可为根据范围求模分片的路由规则,即先进行范围分片计算出分片组,然后组内再求模得到分片;还可为根据日期范围hash分片的路由规则,即先根据日期分组,再根据时间hash分片;还可为分片枚举的路由规则,即列举出所有可能的枚举id,然后自行对枚举id配置分片,如列举所有的省份,然后为各个省份分别配置一个或者多个分片。

如在某一车辆销售应用中,第一预设路由规则为根据时间段分片的路由规则,且每一个月设置为一个分片,因而,当所述数据查询请求为查询2017年所有的车辆数据时,第一路由节点则会将所述数据查询请求分片发送至12个分片的第一数据库节点中,以让第一个分片的第一数据库节点查询2017年1月的车辆数据,让第二个分片的第一数据库节点查询2017年2月的车辆数据,让第三个分片的第一数据库节点查询2017年3月的车辆数据,依次类推,从而得到12个分片的第一数据库节点返回的12个月的车辆数据,并将12个月的所有车辆数据进行汇总后反馈给服务节点。

可以理解的是,所述第一预设路由规则可设置于数据库中间件的配置文件中,当启动数据库中间件时可通过加载该配置文件获取所述第一预设路由规则,并且在以后的使用中,还可修改配置文件中的第一预设路由规则,当然也可在配置文件中添加新的第一预设路由规则,然后通过刷新重新加载配置文件来获取修改或者添加后的第一预设路由规则。

步骤s205、接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元。

其中,所述接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元,可以包括:接收所述第一路由节点反馈的所述汇总后的分片数据,将所述汇总后的分片数据发送至所述应用终端,并将所述汇总后的分片数据缓存至所述缓存单元。在此,当某一服务节点接收到第一路由节点反馈的汇总后的分片数据后,该服务节点即可将汇总后的分片数据发送至所述应用终端,以完成所述应用终端的本次查询操作。

进一步地,服务节点在将数据或者汇总后的分片数据发送至所述应用终端的同时,还可将数据或者汇总后的分片数据缓存至所述缓存单元,以方便后续的再次查询,从而提高后续查询的查询速度和查询效率。优选地,所述将所述汇总后的分片数据缓存至所述缓存单元,具体包括:步骤e、将所述汇总后的分片数据缓存至所述第一缓存单元;步骤f、将所述第一缓存单元中缓存的所述汇总后的分片数据同步至所述第二缓存单元。

如当服务节点a接收到路由节点b反馈的汇总后的分片数据时,服务节点a首先将汇总后的分片数据缓存至第一缓存单元a,随后第一缓存单元a则会自动将汇总后的分片数据同步至第二缓存单元,使得后续其他服务节点在查询该数据时,可直接从第二缓存单元中获取,从而提高数据查询速度和查询效率。可以理解的是,在第一缓存单元和第二缓存单元中,均设置有生存期,超出生存期的缓存数据将会自动被删除。

进一步地,如图3所示,本实施例提供的数据查询方法,还包括:

步骤s301、接收所述应用终端发送的数据写入请求;

步骤s302、将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求发送至对应的第二数据库节点,并反馈所述第二数据库节点返回的操作响应;

步骤s303、接收所述第二路由节点反馈的所述操作响应,并在所述操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据;

步骤s304、若所述缓存单元中存在对应的第二缓存数据,则删除所述缓存单元中的第二缓存数据。

其中,步骤s302、将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求发送至对应的第二数据库节点,并反馈所述第二数据库节点返回的操作响应,可以包括:将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求分片发送至对应的第二数据库节点,并对所述第二数据库节点返回的操作响应进行汇总,反馈汇总后的操作响应;

相应地,步骤s303、接收所述第二路由节点反馈的所述操作响应,并在所述操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据,可以包括:接收所述第二路由节点反馈的所述汇总后的操作响应,并在所述汇总后的操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据。

对于上述步骤s301至步骤s304,可以理解的是,应用终端还可以通过虚拟ip节点向服务节点发送数据写入请求,虚拟ip节点则可根据负载均衡策略选择一个或者多个服务节点,并将所述数据写入请求发送至所选择的服务节点,服务节点在接收到所述数据写入请求后,进一步将所述数据写入请求发送至数据库中间的第二路由节点,其中,第二路由节点为图1中的路由节点a、路由节点b以及路由节点c中任意一个或者多个。

第二路由节点在接收到所述数据写入请求后,即根据第二预设路由规则对所述数据写入请求进行解析,并根据解析结果将所述数据写入请求分别发送至一个或者多个第二数据库节点,第二数据库节点则根据接收到的数据写入请求将对应的数据或者分片数据写入对应的数据库中,写入完成后,向第二路由节点返回包含写入的记录数目的操作响应,第二路由节点则将各个第二数据库节点返回的操作响应进行汇总,并将汇总后的操作响应发送给服务节点,服务节点则可根据包含记录数目的汇总后的操作响应来判断此次数据写入是否成功。若成功的话,则查询缓存单元中是否存在与所写入数据对应的缓存数据,若存在的话,则删除缓存单元中对应的缓存数据,从而防止后续数据查询中因直接获取缓存单元中未更新的缓存数据,而造成数据查询错误,确保数据查询的准确性。

在此,在同一个应用场景中,所述第二预设路由规则与所述第一路由规则相同,以按照约定的路由规则将不同种类的数据插入至不同的数据库中,从而实现数据的分表分库,使得数据库节点以分表分库的方式进行数据的存储,因而,可实现数据库节点的动态扩展,进而提高数据库的存储容量,缓解数据存储压力。

可以理解的是,数据写入请求中的服务节点、第二路由节点的选择方式与前述数据查询请求中的服务节点、第一路由节点的选择方式相似,即均可通过负载均衡策略来选择服务节点和路由节点。

本实施例中,通过设置缓存单元来进行查询数据的缓存,使得再次查询该数据时,若缓存单元中还存在该数据的话,直接将缓存单元中所存储的数据发送给应用终端,从而提高数据查询速度和查询效率;而当缓存单元中不存在该数据时,则再将数据查询请求发送至数据库中间件的第一路由节点,由第一路由节点按照预设路由规则将数据查询请求分片发送至分片存储数据的多个数据库节点中,并将多个数据库节点返回的分片数据汇总后发送给应用终端,即通过多数据库节点来进行数据的查询,提高数据查询速度和查询效率,另外,分片存储的数据库节点可进行动态扩展,从而可极大地提高了数据存储能力。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

上面主要描述了一种基于数据库中间件的数据查询方法,下面将对一种数据库中间件进行详细描述。

如图4所示,本发明实施例二提供了一种数据库中间件,所述数据库中间件包括:

查询请求接收模块401,用于接收应用终端发送的数据查询请求;

缓存数据判断模块402,用于根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据;

缓存数据发送模块403,用于若所述缓存单元中存在对应的第一缓存数据,将所述第一缓存数据发送至所述应用终端;

查询请求发送模块404,用于若所述缓存单元中不存在对应的第一缓存数据,将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据;

数据发送模块405,用于接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元。

在此,查询请求接收模块401、缓存数据判断模块402、缓存数据发送模块403、查询请求发送模块404、数据发送模块405以及后续的模块、单元均设置于如图1所示的服务节点中。

进一步地,所述查询请求发送模块404,具体用于将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求分片发送至对应的第一数据库节点,并对所述第一数据库节点返回的分片数据进行汇总,反馈汇总后的分片数据;

相应地,所述数据发送模块405,具体用于接收所述第一路由节点反馈的所述汇总后的分片数据,将所述汇总后的分片数据发送至所述应用终端,并将所述汇总后的分片数据缓存至所述缓存单元。

优选地,所述缓存单元包括第一缓存单元和第二缓存单元;

相应地,所述缓存数据判断模块402,包括:

第一缓存数据判断单元,用于根据所述数据查询请求判断所述第一缓存单元中是否存在对应的第一缓存数据;

第二缓存数据判断单元,用于若所述第一缓存单元中不存在对应的第一缓存数据,判断所述第二缓存单元中是否存在对应的第一缓存数据。

可选地,所述数据发送模块405,包括:

分片数据缓存单元,用于将所述汇总后的分片数据缓存至所述第一缓存单元;

分片数据同步单元,用于将所述第一缓存单元中缓存的所述汇总后的分片数据同步至所述第二缓存单元。

进一步地,所述数据库中间件,还包括:

写入请求接收模块,用于接收所述应用终端发送的数据写入请求;

写入请求发送模块,用于将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求发送至对应的第二数据库节点,并反馈所述第二数据库节点返回的操作响应;

缓存数据检测模块,用于接收所述第二路由节点反馈的所述操作响应,并在所述操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据;

缓存数据删除模块,用于若所述缓存单元中存在对应的第二缓存数据,则删除所述缓存单元中的第二缓存数据。

优选地,所述写入请求发送模块,具体用于将所述数据写入请求发送至数据库中间件的第二路由节点,以使得所述第二路由节点根据第二预设路由规则将所述数据写入请求分片发送至对应的第二数据库节点,并对所述第二数据库节点返回的操作响应进行汇总,反馈汇总后的操作响应;

相应地,所述缓存数据检测模块,具体用于接收所述第二路由节点反馈的所述汇总后的操作响应,并在所述汇总后的操作响应为数据写入成功时,检测所述缓存单元中是否存在对应的第二缓存数据。

可选地,所述查询请求发送模块404,还用于根据负载均衡策略确定所述数据库中间件中接收所述数据查询请求的第一路由节点,并将所述数据查询请求发送至所述第一路由节点。

进一步地,所述查询请求发送模块404,包括:

路由节点获取单元,用于通过zookeeper管理中心获取可接收所述数据查询请求的所有路由节点;

第一路由节点确定单元,用于根据负载均衡策略在所获取的所有路由节点中确定接收所述数据查询请求的第一路由节点。

图5是本发明实施例三提供的数据查询设备的示意图。如图5所示,该实施例的数据查询设备500包括:处理器501、存储器502以及存储在所述存储器502中并可在所述处理器501上运行的计算机程序503,例如数据查询程序。所述处理器501执行所述计算机程序503时实现上述各个数据查询方法实施例中的步骤,例如图2所示的步骤s201至步骤s205。或者,所述处理器501执行所述计算机程序503时实现上述各装置实施例中各模块/单元的功能,例如图4所示的模块401至模块405的功能。

示例性的,所述计算机程序503可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器502中,并由所述处理器501执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序503在所述数据查询设备500中的执行过程。例如,所述计算机程序503可以被分割成查询请求接收模块、缓存数据判断模块、缓存数据发送模块、查询请求发送模块、数据发送模块,各模块具体功能如下:

查询请求接收模块,用于接收应用终端发送的数据查询请求;

缓存数据判断模块,用于根据所述数据查询请求判断数据库中间件的缓存单元中是否存在对应的第一缓存数据;

缓存数据发送模块,用于若所述缓存单元中存在对应的第一缓存数据,将所述第一缓存数据发送至所述应用终端;

查询请求发送模块,用于若所述缓存单元中不存在对应的第一缓存数据,将所述数据查询请求发送至数据库中间件的第一路由节点,以使得所述第一路由节点根据第一预设路由规则将所述数据查询请求发送至对应的第一数据库节点,并反馈所述第一数据库节点返回的数据;

数据发送模块,用于接收所述第一路由节点反馈的所述数据,将所述数据发送至所述应用终端,并将所述数据缓存至所述缓存单元。

所述数据查询设备500可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述数据查询设备500可包括,但不仅限于,处理器501、存储器502。本领域技术人员可以理解,图5仅仅是数据查询设备500的示例,并不构成对数据查询设备500的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述数据查询设备500还可以包括输入输出设备、网络接入设备、总线等。

所述处理器501可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器502可以是所述数据查询设备500的内部存储单元,例如数据查询设备500的硬盘或内存。所述存储器502也可以是所述数据查询设备500的外部存储设备,例如所述数据查询设备500上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器502还可以既包括所述数据查询设备500的内部存储单元也包括外部存储设备。所述存储器502用于存储所述计算机程序以及所述数据查询设备500所需的其他程序和数据。所述存储器502还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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