一种数据查询方法、装置和电子设备与流程

文档序号:30056147发布日期:2022-05-17 18:16阅读:49来源:国知局
一种数据查询方法、装置和电子设备与流程

1.本技术涉及数据库技术领域,并且更具体地,涉及一种数据查询方法、装置和电子设备。


背景技术:

2.分库分表查询时,在客户端访问数据库之前,客户端需要根据分库规则、各分库数据库的信息和请求的sql(structured query language,结构化查询语言)条件计算访问的目标分库数据库,然后连接目标分库数据库。客户端的分库规则和各分库数据库的信息是预先确定的,若分库数据库增多或者分库规则变化,客户端访问目标分库数据库的可实现性较差。


技术实现要素:

3.本技术实施例提供一种数据查询方法、装置和电子设备,以解决客户端访问目标分库数据库的可实现性较差的问题。
4.第一方面,本技术实施例提供了一种数据查询方法,包括:
5.接收客户端发送的数据查询请求;
6.响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识;
7.将所述目标分库数据库标识发送给所述客户端。
8.第二方面,本技术实施例还提供一种数据查询方法,包括:
9.向电子设备发送数据查询请求;
10.接收所述电子设备发送的响应于所述数据查询请求确定的目标分库数据库标识;
11.基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据。
12.第三方面,本技术实施例提供了一种电子设备,包括:
13.第一接收模块,用于接收客户端发送的数据查询请求;
14.确定模块,用于响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识;
15.第一发送模块,用于将所述目标分库数据库标识发送给所述客户端。
16.第四方面,本技术实施例提供了一种客户端,包括:
17.发送模块,用于向电子设备发送数据查询请求;
18.第一接收模块,用于接收所述电子设备发送的响应于所述数据查询请求确定的目标分库数据库标识;
19.获取模块,用于基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据。
20.第五方面,本技术实施例提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如本技术实施例第一方面公开的所述数据查询方法中的步骤,或者,所述程序或指令被所
述处理器执行时实现如本技术实施例第二方面公开的所述数据查询方法中的步骤。
21.这样,本实施例中,通过接收客户端发送的数据查询请求,响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识,将所述目标分库数据库标识发送给所述客户端,可以将客户端的数据查询请求对应的目标分库数据库信息返回给客户端,而不需要在客户端预先确定各分库数据库的分库规则和各分库数据库信息,使得客户端可以直接获取到目标分库数据库标识并与目标分库数据库建立连接来获取目标数据。从而,可以实现提高客户端访问目标分库数据库的可实现性的技术效果。
附图说明
22.为了更清楚地说明本技术实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1是本技术实施例提供的一种数据查询方法的流程示意图;
24.图2是本技术实施例提供的另一种数据查询方法的流程示意图;
25.图3是本技术实施例提供的一种数据查询系统的结构示意图;
26.图4是本技术实施例提供的另一种数据查询方法的流程示意图;
27.图5是本技术实施例提供的一种电子设备的结构示意图;
28.图6是本技术实施例提供的另一种电子设备的结构示意图;
29.图7是本技术实施例提供的另一种电子设备的结构示意图;
30.图8是本技术实施例提供的一种客户端的结构示意图;
31.图9是本技术实施例提供的另一种客户端的结构示意图;
32.图10是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
33.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
34.请参阅图1,图1是本技术实施例提供的一种数据查询方法的流程示意图,如图1所示,包括以下步骤:
35.步骤101、接收客户端发送的数据查询请求。
36.其中,上述客户端可以是数据请求端,例如:客户端的通讯应用、影音播放应用、地图导航应用和新闻资讯应用等。
37.其中,上述接收可以是数据库中间件接收的,例如:作为分库注册中心的电子设备,上述电子设备的一端可以与客户端连接,上述电子设备的另一端与各分库数据库保持连接,通过与各分库数据库的连接接收各分库数据库上报的信息,例如,各分库数据库的动态注册信息、注销信息和各分库数据库的分库规则等信息,可以通过上述接收到的各分库数据库信息对上述数据查询请求进行解析。另外,上述数据查询请求可以是sql
(structured query language,结构化查询语言)请求,例如:sql请求可以是用关键字、表名、列名等组合而成的一条来描述操作的语句,可以通过sql请求进行数据查询。
38.步骤102、响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识。
39.其中,上述数据查询请求可以包括分库字段,例如:通过各分库数据库信息以及解析上述数据查询请求可以判断目标数据所在的目标分库数据库,目标分库数据库与上述目标分库数据库标识可以一一对应,可以通过上述数据查询请求确定上述目标分库数据库标识。
40.步骤103、将所述目标分库数据库标识发送给所述客户端。
41.其中,上述客户端可以是数据查询请求端,通过获取所述目标分库数据库标识可以与对应的目标数据库建立连接,在目标数据库中获取到请求查询的数据。
42.本实施例中,通过接收客户端发送的数据查询请求,响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识,将所述目标分库数据库标识发送给所述客户端,可以将客户端的数据查询请求对应的目标分库数据库信息返回给客户端,而不需要在客户端预先确定各分库数据库的分库规则和各分库数据库信息,使得客户端可以直接获取到目标分库数据库标识并与目标分库数据库建立连接来获取目标数据。从而,可以实现提高客户端访问目标分库数据库的可实现性的技术效果。
43.另外,通过接收客户端发送的数据查询请求,响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识,将所述目标分库数据库标识发送给所述客户端,客户端不需要与各分库数据库保持交叉连接,可以收敛客户端各应用与各分库数据库交叉连接代理的海量连接。
44.可选的,步骤102中所述响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识之前,所述方法还包括:
45.接收多个分库数据库对应的分库数据库信息和分库规则,其中,所述分库数据库信息包括分库数据库标识。
46.其中,上述多个分库数据库对应的分库数据库信息和分库规则可以是通过分库数据库上的分库代理模块发送的,例如:在每个分库数据库上都安装分库代理,通过分库代理可以将分库代理与对应的分库数据库的分库数据库信息、分库规则等信息上报,上述分库数据库信息可以包括分库数据库与对应的分库代理模块的连接信息、分库数据库标识等。
47.另外,上述分库数据库信息和分库规则可以实时更新,例如:上述分库数据库信息可以包括分库数据库注册信息和分库数据库注销信息,随着分库数据库的增加,就会有更多的分库数据库对应的分库数据库信息和分库规则,并且对于某个分库数据库中的分库规则的变化,也可以进行动态更新。
48.该实施方式中,通过接收多个分库数据库对应的分库数据库信息和分库规则,不需要预先配置多个分库数据库对应的分库数据库信息和分库规则,可以获取分库数据库的动态信息,实现数据库的动态扩展。
49.可选的,步骤102中所述响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识,包括:
50.解析所述数据查询请求,获取所述数据查询请求的分库字段;
51.根据所述多个分库数据库对应的分库数据库信息和分库规则,确定所述分库字段对应的目标分库数据库标识。
52.其中,上述目标分库数据库标识与分库数据库可以是一一对应的关系,例如:各分库数据库对应一个数据库唯一标识号码,通过解析上述数据查询请求并多个分库数据库对应的分库数据库信息和分库规则,可以确定目标分库数据库,即确定对应的目标分库数据库标识。
53.该实施方式中,解析所述数据查询请求,根据接收的多个分库数据库对应的分库数据库信息和分库规则,确定所述数据查询请求对应的目标分库数据库标识,可以降低对数据库版本的依赖性。
54.可选的,步骤102中所述响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识之后,所述方法还包括:
55.将所述目标分库数据库对应的分库规则发送给所述客户端。
56.其中,上述分库规则可以与每个分库数据库对应的分库规则,通过目标分库数据库的分库规则可以实现快速查询到目标数据。
57.该实施方式中,通过将所述目标分库数据库对应的分库规则发送给所述客户端,所述客户端可以根据所述目标分库数据库标识和所述目标分库数据库对应的分库规则获取所述数据查询请求的目标数据,可以避免客户端对数据查询请求中复杂语法的处理,提高客户端获取目标数据的效率。
58.请参阅图2,图2是本技术实施例提供的另一种数据查询方法的流程示意图,如图2所示,包括以下步骤:
59.步骤201、向电子设备发送数据查询请求。
60.其中,上述电子设备可以作为数据查询请求端与数据库之间的中间件,例如:接收分库数据库信息的电子设备,可以通过接收的数据查询请求和分库数据库信息确定目标分库数据库,并将目标分库数据库信息返回到数据查询请求端。
61.步骤202、接收所述电子设备发送的响应于所述数据查询请求确定的目标分库数据库标识。
62.步骤203、基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据。
63.其中,上述目标数据可以通过上述目标分库数据库获取中安装的分库代理获取,例如:每个分库数据库都配置有分库代理模块,数据请求端与上述目标分库数据库的分库代理模块建立连接,上述目标分库数据库的分库代理模块与目标分库数据库保持连接,通过上述目标分库数据库的分库代理模块转发数据查询请求到目标分库数据库,目标分库数据库处理上述数据查询请求后返回结果到上述分库代理模块,再经过分库代理模块转发到数据请求端,完成数据查询,可以避免数据请求端与各分库数据库之间的交叉连接。
64.本实施例中,通过向电子设备发送数据查询请求,接收所述电子设备发送的响应于所述数据查询请求确定的目标分库数据库标识,再基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据,可以通过电子设备确定目标分库数据库,通过与所述目标分库数据库建立连接获取到目标数据,减少数据查询请求端的处理压力。
65.另外,通过电子设备确定目标分库数据库,可以避免在数据请求端预先配置分库
数据库的分库规则、分库数据库标识等信息,降低开发的负担。
66.可选的,步骤203中所述基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据之前,所述方法还可以包括:
67.接收所述电子设备发送的所述目标分库数据库对应的分库规则;
68.步骤203中所述基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据,可以包括:
69.基于所述目标分库数据库标识和所述目标分库数据库对应的分库规则,获取所述目标分库数据库中的目标数据。
70.其中,上述分库规则可以是各分库数据库对应的分库规则,通过目标分库数据库的分库规则可以实现快速查询到目标数据。
71.该实施方式中,通过接收所述电子设备发送的所述目标分库数据库对应的分库规则,基于所述目标分库数据库标识和所述目标分库数据库对应的分库规则,获取所述目标分库数据库中的目标数据,可以减少客户端与数据库之间的海量连接,实现连接轻量化。
72.作为一种具体的实施例,请参阅图3,图3示出了一种可以应用于本技术实施例的数据查询方法的系统架构300,如图3所示,系统架构300包括客户端的应用301和应用302、分库注册中心303、分库数据库3041、分库数据库3051、分库数据库3061、分库数据库3041对应的分库代理模块3042、分库数据库3051对应的分库代理模块3052和分库数据库3061对应的分库代理模块3062,以应用301发送sql请求,目标数据库为分库数据库3061作为示例,如图4所示,数据查询方法可以包括以下过程:
73.应用业务代码3011发送的sql请求提交到分库驱动模块3012;
74.分库驱动模块3012转发sql请求到分库注册中心303;
75.分库注册中心303通过分别读取分库代理模块3042、分库代理模块3052和分库代理模块3062上报的分库数据库信息,解析sql请求确定目标分库数据库为分库数据库3061,并将分库数据库3061的分库数据库信息返回给分库驱动模块3012;
76.分库驱动模块3012使用优化后的轻量级连接分库代理模块3062;
77.分库代理模块3062接收sql请求,并转发sql请求到分库数据库3061;
78.分库数据库3061执行sql请求并返回结果到对应的分库代理模块3062;
79.分库代理模块3062将结果返回给分库驱动模块3012;
80.分库驱动模块3012返回结果给应用业务代码3011。
81.其中,上述sql请求可以表示应用301发送的数据查询请求,通过将应用301的业务代码中的sql请求发送给上述分库注册中心303,应用301可以获取从上述分库注册中心303返回对应的目标数据库的相关信息,如分库数据库3061与对应的分库代理模块3062的连接信息、分库数据库3061的分库规则等信息。
82.其中,分库注册中心303可以读取分库代理模块3041、分库代理模块3051和分库代理模块3061上报的信息。通过在每个分库数据库上配置一个分库代理模块,分库代理模块保持与对应的分库数据库之间的连接,分库注册中心303可以接收分库数据库的注册信息、注销信息和分库规则等动态信息。
83.其中,上述分库驱动模块3012与上述分库代理模块3062之间可以通过轻量级连接重写jdbc(java database connectivity,java数据库连接)规范,上述分库驱动模块3012
与应用业务代码3011之间以及上述分库代理模块3062与上述分库数据库3061之间可以继续使用jdbc连接。另外,上述应用301和应用302与分库数据库3041、分库数据库3051和分库数据库3061之间不用保持交叉连接,在客户端的应用与分库数据库的数量都较多的情况下,如果保持交叉连接会导致连接数量过多,在通过上述分库注册中心303确定上述应用301的数据查询请求的目标分库数据库的情况下,应用301的分库驱动模块3012与目标分库数据库3061对应的分库代理模块3062复用同一个连接,收敛jdbc直接连接的海量连接数,减少分库数据库3061需要维护的线程数量,通过分库驱动模块3012与分库代理模块3062之间使用轻量级的连接方式,可以减少开销,提高效率,有效收敛应用与各分库数据库之间的连接。
84.其中,在上述分库注册中心303中解析sql请求时,可以对sql请求进行语句拆分,拆分语句时可以按select、from、where等关键字进行,再依据上述分库注册中心303读取上述分库代理模块3042、上述分库代理模块3052和分库代理模块3062分别上报的信息确定目标分库数据库,其中,上述上报的信息包括各分库代理模块对应的分库数据库信息和各分库数据库的分库规则等信息。
85.其中,上述分库数据库与对应的分库代理模块之间可以通过数据库连接池连接,例如:分库代理模块3042与分库数据库3041之间通过数据库连接池连接,分库代理模块3052与分库数据库3052之间通过数据库连接池连接,分库代理模块3062与分库数据库3061之间通过数据库连接池连接,将数据库连接作为对象存储在内存中,当客户端需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,客户端也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。
86.另外,上述应用302发送sql请求的过程与应用301发送sql请求的过程对应,在此不再赘述,图3还可以表示应用302发送数据查询请求,分库数据库306为目标数据库的系统架构图。
87.本技术实施例中,通过分库注册中心可以接收各分库代理模块的动态注册信息与注销信息,从而保持数据库的动态扩展。并且通过在各分库数据库上安装分库代理模块,所述分库注册中心根据接收到的分库代理模块发送的信息,对分库驱动模块发送的sql请求进行解析,确定目标分库数据库,分库注册信息将接收到的目标分库数据库信息再返回给分库驱动模块,各应用的分库驱动模块通过连接目标分库数据库对应的分库代理模块,所述目标分库数据库保持与对应的分库代理模块连接,收敛各应用和各分库数据库中交叉连接带来的海量连接,从而提高数据查询效率,并能够支撑更多的客户端与各分库数据库之间的连接信息。并且,通过分库注册中心303对接收的sql请求返回目标分库数据库信息到应用301,目标分库数据库3061对应的分库代理模块3062获取上述数据查询请求的查询结果后返回所述查询结果到应用301,可以减轻分库注册中心303的处理压力。
88.另外,通过所述分库注册中心根据数据查询请求和各分库数据库信息确定目标分库数据库,可以直接通过客户端应用和目标分库数据库对应的分库代理模块进行交互,可以有效利用去中心化技术提高数据查询效率。
89.请参阅图5,图5是本技术实施例提供的一种电子设备的结构示意图,如图5所示,电子设备500包括:
90.第一接收模块501,用于接收客户端发送的数据查询请求;
91.确定模块502,用于响应于所述数据查询请求,基于所述数据查询请求确定目标分库数据库标识;
92.第一发送模块503,用于将所述目标分库数据库标识发送给所述客户端。
93.可选的,如图6所示,电子设备500还可以包括:
94.第二接收模块504,用于接收多个分库数据库对应的分库数据库信息和分库规则,其中,所述分库数据库信息包括分库数据库标识。
95.可选的,确定模块502可以具体用于:
96.解析所述数据查询请求,获取所述数据查询请求的目标分库数据库字段;
97.根据所述多个分库数据库对应的分库数据库信息和分库规则,确定所述目标分库数据库字段对应的目标分库数据库标识。
98.可选的,如图7所示,电子设备500还可以包括:
99.第二发送模块505,用于将所述目标分库数据库对应的分库规则发送给所述客户端。
100.电子设备500能够实现图1的方法实施例中电子设备实现的各个过程,为避免重复,这里不再赘述。电子设备500可以达到提高客户端访问目标分库数据库的可实现性的技术效果。
101.请参阅图8,图8是本技术实施例提供的一种客户端的结构示意图,如图8所示,客户端800包括:
102.发送模块801,用于向电子设备发送数据查询请求;
103.第一接收模块802,用于接收所述电子设备发送的响应于所述数据查询请求确定的目标分库数据库标识;
104.获取模块803,用于基于所述目标分库数据库标识,获取所述目标分库数据库中的目标数据。
105.可选的,如图9所示,客户端800还包括:
106.第二接收模块804,用于接收所述电子设备发送的所述目标分库数据库对应的分库规则;
107.获取模块803具体可以用于:
108.基于所述目标分库数据库标识和所述目标分库数据库对应的分库规则,获取所述目标分库数据库中的目标数据。
109.客户端800能够实现图2的方法实施例中客户端实现的各个过程,为避免重复,这里不再赘述。客户端800可以达到提高客户端访问目标分库数据库的可实现性的技术效果。
110.请参阅图10,本技术实施例还提供一种电子设备,该电子设备1000包括处理器1001,存储器1002,存储在存储器1002上并可在处理器1001上运行的程序或指令,该程序或指令被处理器1001执行时实现上述数据查询方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
111.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该
要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
112.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例的方法。
113.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1