掌桥专利:专业的专利平台
掌桥专利
首页

数据库查询方法、装置、电子设备及可读取存储介质

文献发布时间:2023-06-19 19:37:02


数据库查询方法、装置、电子设备及可读取存储介质

技术领域

本申请涉及数据处理技术领域,具体而言,涉及一种数据库查询方法、装置、电子设备及可读取存储介质。

背景技术

随着大数据时代的到来,各种信息系统中的数据库所容纳的数据体量不断上升,因此,数据库的查询速度成为制约信息系统运行性能的重要因素。

目前的数据库管理系统采用的管理方式各不相同,例如,基于Nginx、Redis等组件对数据库进行查询,或者通过将SQL(Structured Query Language,结构化查询语言)语句复用方法和装置嵌入客户端来对数据库的查询进行加速等。但是,这些查询方式中,需要设置多个组件,成本较高,且会对客户端或服务端的环境进行改造,兼容性较低,导致目前数据库的查询效率仍旧较低,无法适用于多种应用场景。

发明内容

有鉴于此,本申请实施例的目的在于提供一种数据库查询方法、装置、电子设备及可读取存储介质,以改善现有技术中存在的数据库查询效率较低的问题。

为了解决上述问题,第一方面,本申请实施例提供了一种数据库查询方法,所述方法包括:

对接收的目标请求数据进行解析,得到目标查询条件;

基于所述目标查询条件,在缓存表中进行匹配;

根据所述目标查询条件,在所述缓存表中的匹配结果,确定目标语句结果集;

对所述目标语句结果集进行封装,得到查询结果;

其中,所述缓存表中包括多个历史查询条件和对应的历史语句结果集。

在上述实现过程中,通过在缓存表中存储多个历史查询条件和历史语句结果集,能够在对客户端发送的目标请求数据进行查询时,对目标请求数据进行相应地解析处理,以解析得到目标查询条件,从而根据目标查询条件在缓存表中进行查询匹配,获取相应的匹配结果。并根据匹配结果确定相应的目标语句结果集进行封装,作为对客户端发出的查询请求进行反馈的查询结果。在缓存表中进行匹配的查询方式,不会对数据库的客户端和服务端造成修改,不改变网络的拓扑结构,减少了硬件成本和运维成本,支持多个客户端同时进行查询,有效地提高对数据库进行查询的效率,适用于多种类型的数据库和应用场景。

可选地,所述对接收的目标请求数据进行解析,得到目标查询条件,包括:

根据传输控制协议,对接收的客户端发送的目标请求数据进行结构重组,得到目标结构数据;

基于通讯协议,对所述目标结构数据的数据库类型进行识别,得到目标类型和目标语句信息;

基于所述目标类型对应的解析算法,对所述目标语句信息进行解析,确定所述目标查询条件。

在上述实现过程中,可以在数据库的代理端对客户端发送的目标请求数据进行接收,并根据传输控制协议将目标请求数据重组为符合代理端结构要求的目标结构数据,以便于后续进行处理。通过通讯协议对目标结构数据的数据库类型进行识别,能够识别出对应的目标类型和目标语句信息,并基于目标类型对应的解析算法对目标语句信息进行词法解析,确定对应的操作及操作的库表列信息,分析出具体的目标查询条件。能够对目标请求数据进行协议分析,以确定其中对应的目标查询条件,有效地提高了目标查询条件的准确性。

可选地,所述基于所述目标查询条件,在缓存表中进行匹配,包括:

将所述目标查询条件与所述缓存表中的所有所述历史查询条件进行对比;

若所述目标查询条件与所述缓存表中的任一所述历史查询条件相同,则判定所述匹配结果为匹配成功;

若所述目标查询条件与所述缓存表中的所有所述历史查询条件均不相同,则判定所述匹配结果为匹配失败。

在上述实现过程中,由于缓存表中存储有多个历史查询条件,因此,在进行查询时,可以将解析得到的目标查询条件与缓存表中的所有历史查询条件进行对比,以根据目标查询条件与目标查询条件是否相同判定相应的匹配结果,从而确定目标查询条件是否存储在缓存表中。能够根据查询条件之间的数据对比确定相应的匹配结果,提高了匹配结果的准确性和有效性。

可选地,所述根据所述目标查询条件,在所述缓存表中的匹配结果,确定目标语句结果集,包括:

若所述匹配结果为匹配成功,则获取与所述目标查询条件相同的所述历史查询条件对应的所述历史语句结果集,作为所述目标语句结果集;

若所述匹配结果为匹配失败,则对所述目标请求数据进行封装,得到封装请求数据;获取服务端根据所述封装请求数据确定的查询语句结果集;将所述目标查询条件和所述查询语句结果集存储在所述缓存表中,以所述查询语句结果集作为所述目标语句结果集。

在上述实现过程中,由于匹配结果不同,即目标查询条件是否存储在缓存表中的结果不同,因此,在匹配结果为匹配成功时,则表征目标查询结果存储在缓存表中,可以直接获取与目标查询条件相同的历史查询条件所对应的历史语句结果集,作为查询得到的目标语句结果集。在匹配结果为匹配失败时,则表征目标查询结果未存储在缓存表中,可以对目标请求数据进行封装,以将封装得到的封装请求数据发送到数据库的服务端中进行查询,获取服务端查询得到的查询语句结果集,并将目标查询条件和查询语句结果集存储到缓存表中,以对缓存表进行实时地更新处理,从而以查询语句结果集作为查询得到的目标语句结果集。能够根据不同的匹配结果确定对应的目标语句结果集,在缓存表中查询不到相应结果时,还可以获取服务端查询的结果并进行实时地更新处理,有效地扩大了缓存表的数据范围,从而提高从缓存表中匹配成功的概率,进一步地提高了数据库的查询效率。

可选地,所述对所述目标语句结果集进行封装,得到查询结果,包括:

根据数据库协议和传输控制协议,对所述目标语句结果集的关键信息进行封装,得到所述查询结果;其中,所述关键信息包括网络地址、通信端口、包序号中的至少一种;

将所述查询结果反馈至客户端。

在上述实现过程中,需要根据数据库协议和传输控制协议分别对目标语句结果集的关键信息进行封装,以使获取的查询结果能够满足通讯协议的各种需求,并将查询结果反馈给客户端进行处理。能够将目标语句结果集封装为符合通讯协议和需求的查询结果,提高了查询结果的有效性。

可选地,其中,所述缓存表通过以下方式生成:

对接收的客户端发送的历史请求数据进行解析,得到所述历史查询条件和对应的所述历史语句结果集;

将多个所述历史查询条件和所述历史语句结果集作为键值对进行存储,得到所述缓存表。

在上述实现过程中,可以根据客户端发送的历史请求数据进行相同地协议解析,以解析得到对应的历史查询条件和对应的历史语句结果集,从而将历史查询条件作为查询键,将对应的历史语句结果集作为键值,即将关联的历史查询条件和历史语句结果集作为键值对在哈希表中进行存储,以得到具有多个键值对信息的缓存表。能够根据协议解析对历史数据进行分析,有效地提高了解析得到的历史查询条件与历史语句结果集的准确性和关联性,从而提高了缓存表中信息的准确性。

可选地,其中,所述缓存表通过以下方式修改:

根据预设的时间阈值和请求次数阈值,对每个所述键值对进行验证;

若所述键值对的缓存时间大于所述时间阈值且所述键值对的请求次数小于所述请求次数阈值时,则判定所述键值对为无效键值对;

在所述缓存表中对所述无效键值对进行删除。

在上述实现过程中,为了保证缓存表中存储的信息的有效性,可以根据预设的时间阈值和请求次数阈值,与每个键值对的缓存时间和请求次数进行对比,以对每个键值对是否有效进行验证。能够在键值对存储时间过长且请求次数较少时,则判定为无效键值对,以对无效键值对进行实时地删除处理,从而有效地节约缓存表的内存空间,提高缓存表中存储的多个键值对的有效性。

第二方面,本申请实施例还提供了一种数据库查询装置,所述装置包括:解析模块、匹配模块、确定模块和封装模块;

所述解析模块用于对接收的目标请求数据进行解析,得到目标查询条件;

所述匹配模块用于基于所述目标查询条件,在缓存表中进行匹配;

所述确定模块用于根据所述目标查询条件,在所述缓存表中的匹配结果,确定目标语句结果集;

所述封装模块用于对所述目标语句结果集进行封装,得到查询结果;

其中,所述缓存表中包括多个历史查询条件和对应的历史语句结果集。

在上述实现过程中,通过解析模块对目标请求数据进行相应地解析处理,以解析得到目标查询条件,通过匹配模块根据目标查询条件在缓存表中进行查询匹配,获取相应的匹配结果,通过确定模块根据匹配结果确定相应的目标语句结果集进行封装,得到目标语句结果集,通过封装模块对目标语句结果集进行封装,作为对客户端发出的查询请求进行反馈的查询结果。

第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述5程序指令时,执行上述数据库查询方法中任一实现方式中的步骤。

第四方面,本申请实施例还提供了一种计算机可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述数据库查询方法中任一实现方式中的步骤。

综上所述,本申请实施例提供了一种数据库查询方法、装置、电子设备0及可读取存储介质,在缓存表中存储多个历史查询条件和结果集,在查询时

能够根据解析的查询条件在缓存表中进行查询匹配,从而根据匹配的结果,确定相应的语句结果集进行封装,作为反馈的查询结果,有效地提高了对数据库进行查询的效率,适用于多种类型的数据库和应用场景。

5附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来

讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附0图。

图1为本申请实施例提供的一种电子设备的方框示意图;

图2为本申请实施例提供的一种数据库查询方法的流程示意图;

图3为本申请实施例提供的一种步骤S200的详细流程示意图;

图4为本申请实施例提供的一种步骤S300的详细流程示意图;5图5为本申请实施例提供的一种步骤S400的详细流程示意图;

图6为本申请实施例提供的一种步骤S500的详细流程示意图;

图7为本申请实施例提供的另一种数据库查询方法流程示意图;

图8为本申请实施例提供的再一种数据库查询方法流程示意图;

图9为本申请实施例提供的一种数据库查询装置的结构示意图。

图标:100-电子设备;111-存储器;112-存储控制器;113-处理器;114-外设接口;115-输入输出单元;116-显示单元;700-数据库查询装置;710-解析模块;720-匹配模块;730-确定模块;740-封装模块。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请实施例的一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。

目前的数据库管理系统采用的管理方式各不相同,例如,基于Nginx、Redis等组件对数据库进行查询:使用Nginx反向代理服务器、Tomcat服务器、Redis缓存数据库和MySQL数据库等组件,多个客户端高并发地对Nginx反向代理服务器发送访问请求,Nginx反向代理服务器将这些请求进行分发,转发到Tomcat服务集群中的不同节点上,每个Tomcat服务器在收到请求后将实时数据发送到Redis数据库,Redis使用缓存队列对实时数据进行缓存,计算程序定时地从Redis缓存队列中取出数据进行计算,将数据转换成结构化数据保存在MySQL中。Nginx反向代理服务器在收到客户端请求时可以根据Tomcat服务器的IP地址和一定的调度算法将请求均衡地发送到各个Tomcat服务器上,本质上是采用了分治的思想缓解了数据库的压力,以提高数据库查询效率。但是,这种方式所使用的组件类型太多,除了MySQL数据库之外,使用的组件类型包括Nginx反向代理数据库、Tomcat服务器、Redis缓存数据库等,并且实际部署的Tomcat服务器不止一个,硬件成本和运维成本较高,无法满足用户的使用需求。

或者,现有技术中还可能通过将SQL语句复用方法和装置嵌入客户端来对数据库的查询进行加速:相对于现有数据库的查询操作,可以对指定的数据库表进行记录,可不必执行重复的查询操作,在不与数据库交互的情况下就可获取到查询结果,以减小查询时的时间。但是,这种方式运用在数据库的客户端中,需要通过将SQL语句复用方法和装置嵌入客户端来达到加速效果,改变了数据库客户端的环境,兼容性较低。还有一些指定的查询方案,但是仅支持基于HTTP/HTTPS的B\S系统,无法提供对其他系统进行支持,适用场景较少。

因此,本申请发明人发现,目前上述的一些数据库的查询方法成本较高且兼容性较低,导致目前数据库的查询效率仍旧较低,无法适用于多种应用场景。

为了解决上述问题,本申请实施例提供了一种数据库查询方法,应用于服务器,服务器可以为个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备,能够对请求进行解析,以在具有多个历史查询条件和历史语句结果集的缓存表中对解析得到的目标查询条件进行查询匹配,以快速、准确地确定数据库的查询结果。

可选地,电子设备可以设置在数据库的代理端中,数据库的客户端、服务端可以通过代理端通信连接,以通过代理端完成数据库的查询和信息的反馈处理,通过数据库代理的模式,分担数据库服务端的工作压力。

可选地,请参阅图1,图1为本申请实施例提供的一种电子设备的方框示意图。电子设备100可以包括存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

上述的存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器113用于执行存储器中存储的可执行模块。

其中,存储器111可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器111用于存储程序,处理器113在接收到执行指令后,执行程序,本申请实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。

上述的处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器,也可以是任何常规的处理器等。

上述的外设接口114将各种输入/输出装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

上述的输入输出单元115用于提供给用户输入数据。输入输出单元115可以是,但不限于,鼠标和键盘等。

上述的显示单元116在电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。在本申请实施例中,显示单元116可以显示解析的目标查询条件、缓存表中的历史查询条件和历史语句结果集、匹配结果和查询得到的查询结果等多种信息。

本实施例中的电子设备可以用于执行本申请实施例提供的各个数据库查询方法中的各个步骤。下面通过几个实施例详细描述数据库查询方法的实现过程。

请参阅图2,图2为本申请实施例提供的一种数据库查询方法的流程示意图,该方法可以包括步骤S200-S500。

步骤S200,对接收的目标请求数据进行解析,得到目标查询条件。

其中,目标请求数据为数据库的客户端发送至服务端的查询请求的相关数据,可以包括查询时的流量、地址、身份等多种信息。代理端能够在网络中接收目标请求数据,并对目标请求数据进行解析,以提取其中的目标查询条件,目标查询条件可以为SQL的查询条件。

步骤S300,基于目标查询条件,在缓存表中进行匹配。

其中,缓存表中可以包括多个历史查询条件和对应的历史语句结果集。可以根据解析的目标查询条件在缓存表中进行查询匹配,以确定目标查询条件是否存储在缓存表中的匹配结果。

可选地,缓存表可以为HASH表等多种具有缓存功能的表,由于历史查询条件和历史语句结果集都存储在缓存表中,因此,无需使用额外的缓存数据库对数据进行存储,降低了数据库的硬件成本和运维成本,且减少了额外缓存数据库所造成的网络IO,提升了整体的运行效率。

步骤S400,根据目标查询条件,在缓存表中的匹配结果,确定目标语句结果集。

其中,由于目标查询条件可能存储在缓存表中,也可能未存储在缓存表中,即具有不同的匹配结果。因此,可以根据不同的匹配结果,确定相应的目标语句结果集,目标语句结果集可以为SQL结果集。

步骤S500,对目标语句结果集进行封装,得到查询结果。

其中,为了保持数据的一致性,可以对目标语句结果集进行封装,以使得到的查询结果能够符合通信需求,以便于对查询结果进行反馈。

需要说明的是,本申请的数据库查询方法中的各个设备和装置透明部署,无需对客户端或者服务端进行改造,且支持多种不同类型的系统,例如B/S、C/S系统,能够为多个系统同时提供查询服务,避免了不同数据库管理系统的特异性,降低了开发、硬件和部署成本,扩大了查询方案的适用范围,增加数据库对于应用的并发能力,减轻数据库的压力。示例地,在本申请的数据库查询方法应用于数据防泄漏系统时,能够有效地提升数据防泄漏系统的性能,例如:在数据防泄漏系统配置了脱敏策略时,可以选择相应的数据库代理端进行查询。在客户端请求送检后命中脱敏策略,根据策略生成新的数据库访问请求,将请求数据发送至数据库代理端中。数据库代理端能够根据通讯协议解析请求数据,得到SQL查询条件后直接从HASH表中获取对应的SQL结果集,对SQL结果集进行封装后进行反馈。由于数据防泄漏系统接收到的查询结果是已经脱敏后的数据,可以直接返回给客户端。

在图2所示的实施例中,在缓存表中进行匹配的查询方式,不会对数据库的客户端和服务端造成修改,不改变网络的拓扑结构,减少了硬件成本和运维成本,支持多个客户端同时进行查询,有效地提高对数据库进行查询的效率,适用于多种类型的数据库和应用场景。

可选地,请参阅图3,图3为本申请实施例提供的一种步骤S200的详细流程示意图,步骤S200中还可以包括步骤S210-S230。

步骤S210,根据传输控制协议,对接收的客户端发送的目标请求数据进行结构重组,得到目标结构数据。

其中,代理端能够通过底层对指定的服务访问端口进行监听,并且随机分配重定向端口,以在网络中对客户端的查询请求进行监听,通过监听端口接收客户端中发送的完整的目标请求数据。由于客户端与代理端中数据结构可能不同,因此,可以根据传输控制协议,即TCP(Transmission Control Protocol)对目标请求数据的结构进行重组,以得到符合代理端中结构要求的目标结构数据。

步骤S220,基于通讯协议,对目标结构数据的数据库类型进行识别,得到目标类型和目标语句信息。

其中,可以根据通讯协议对目标结构数据的数据库类型进行识别,以确定目标结构数据的数据库的目标类型以及其中包含的目标语句信息。目标类型可以为MySQL,Oracle,DM,Kingbase,SQLserver等多种数据库的类型,目标语句信息可以为目标结构数据中包含的SQL语句。

步骤S230,基于目标类型对应的解析算法,对目标语句信息进行解析,确定目标查询条件。

其中,不同的数据库对应的解析算法也不相同,因此,可以预先根据多个数据库预设多个相应的解析算法,在确定目标类型时,则调用目标类型所对应的解析算法,对目标语句信息中的报文字段进行词法解析,以获取对应的操作及操作的库表列信息,分析出具体的目标查询条件。

在图3所示的实施例中,能够对目标请求数据进行协议分析,以确定其中对应的目标查询条件,有效地提高了目标查询条件的准确性。

可选地,请参阅图4,图4为本申请实施例提供的一种步骤S300的详细流程示意图,步骤S300中还可以包括步骤S310-S330。

步骤S310,将目标查询条件与缓存表中的所有历史查询条件进行对比。

其中,由于缓存表中存储有多个历史查询条件,因此,在进行查询时,可以将解析得到的目标查询条件与缓存表中的所有历史查询条件进行对比。

步骤S320,若目标查询条件与缓存表中的任一历史查询条件相同,则5判定匹配结果为匹配成功。

其中,在目标查询条件与缓存表中的任一历史查询条件相同时,则说明目标查询条件已存储在缓存表中,则匹配结果为匹配成功。

步骤S330,若目标查询条件与缓存表中的所有历史查询条件均不相同,则判定匹配结果为匹配失败。

0其中,在目标查询条件与缓存表中的所有历史查询条件均不相同时,则说明目标查询条件未存储在缓存表中,则匹配结果为匹配失败。

在图4所示的实施例中,能够根据查询条件之间的数据对比确定相应的匹配结果,提高了匹配结果的准确性和有效性。

可选地,请参阅图5,图5为本申请实施例提供的一种步骤S400的详5细流程示意图,步骤S400中还可以包括步骤S410-S440。

步骤S410,若匹配结果为匹配成功,则获取与目标查询条件相同的历史查询条件对应的历史语句结果集,作为目标语句结果集。

其中,在目标查询条件的匹配结果成功时,则表征目标查询结果存储在

缓存表中,可以直接获取与目标查询条件相同的历史查询条件所对应的历0史语句结果集,作为查询得到的目标语句结果集。

步骤S420,若匹配结果为匹配失败,则对目标请求数据进行封装,得到封装请求数据。

其中,在目标查询条件的匹配结果失败时,则表征目标查询结果未存储在缓存表中,可以对目标请求数据进行封装,以使封装请求数据符合服务端5的通讯协议,保障IP地址与客户端一致,并将封装得到的封装请求数据发

送到数据库的服务端中进行查询。

步骤S430,获取服务端根据封装请求数据确定的查询语句结果集。

其中,服务端能够根据接收的封装请求数据进行解析和查询,在服务端根据封装请求数据查询到相应的查询语句结果集时,代理端能够基于通信连接获取服务端查询得到的查询语句结果集。查询语句结果集中可以包括解析得到的表名、列名、值等数据。

步骤S440,将目标查询条件和查询语句结果集存储在缓存表中,以查询语句结果集作为目标语句结果集。

其中,能够将目标查询条件和查询语句结果集存储到缓存表中,以在查询的过程中,对缓存表中未存储的数据进行实时地更新,进一步地扩大缓存表的数据范围,并以查询语句结果集作为查询得到的目标语句结果集。

在图5所示的实施例中,能够根据不同的匹配结果确定对应的目标语句结果集,在缓存表中查询不到相应结果时,还可以获取服务端查询的结果并进行实时地更新处理,有效地扩大了缓存表的数据范围,从而提高从缓存表中匹配成功的概率,进一步地提高了数据库的查询效率。

可选地,请参阅图6,图6为本申请实施例提供的一种步骤S500的详细流程示意图,步骤S500中还可以包括步骤S510-S520。

步骤S510,根据数据库协议和传输控制协议,对目标语句结果集的关键信息进行封装,得到查询结果。

其中,关键信息可以包括网络地址、通信端口、包序号中的至少一种。代理端可以先根据数据库协议对目标语句结果集进行封装,封装后,在根据传输控制协议进行封装,以使查询结果的网络地址、通信端口、包序号等信息符合TCP通信的要求。

步骤S520,将查询结果反馈至客户端。

其中,代理端可以将查询结构作为客户端本次访问的请求的结果,通过重定向端口将查询结果发送到通讯链路中,以反馈给客户端进行处理。

在图6所示的实施例中,能够将目标语句结果集封装为符合通讯协议和需求的查询结果,提高了查询结果的有效性。

可选地,请参阅图7,图7为本申请实施例提供的另一种数据库查询方法流程示意图,该方法还可以包括步骤S610-S620。

步骤S610,对接收的客户端发送的历史请求数据进行解析,得到历史查询条件和对应的历史语句结果集。

其中,可以根据客户端发送的历史请求数据进行协议解析,以解析得到对应的历史查询条件和对应的历史语句结果集,解析的方式与图3所示的实施例中的解析方式相同,不再进行赘述。

步骤S620,将多个历史查询条件和历史语句结果集作为键值对进行存储,得到缓存表。

其中,能够以目标查询条件为查询键,即Key,以目标查询条件对应的目标语句结果集为键值,即Value,即将关联的历史查询条件和历史语句结果集作为键值对存储在哈希表中,以得到具有多个键值对信息的缓存表。

在图7所示的实施例中,能够根据协议解析对历史数据进行分析,有效地提高了解析得到的历史查询条件与历史语句结果集的准确性和关联性,从而提高了缓存表中信息的准确性。

可选地,请参阅图8,图8为本申请实施例提供的再一种数据库查询方法流程示意图,该方法还可以包括步骤S630-S650。

步骤S630,根据预设的时间阈值和请求次数阈值,对每个键值对进行验证。

其中,为了保证缓存表中存储的信息的有效性,可以根据预设的时间阈值和请求次数阈值,与每个键值对的缓存时间和请求次数进行对比,以对每个键值对是否有效进行验证。

可选地,时间阈值和请求次数阈值可以为根据历史情况设置的阈值,可以根据实际情况和需求对时间阈值和请求次数阈值进行修改。

步骤S640,若键值对的缓存时间大于时间阈值且键值对的请求次数小于请求次数阈值时,则判定键值对为无效键值对。

其中,在键值对存储时间过长且请求次数较少时,则表征该键值对长时间较少请求,因此,判定该键值对为无效键值对。

步骤S650,在缓存表中对无效键值对进行删除。

其中,能够对缓存表中判定为无效键值对的信息进行实时地删除。

在图8所示的实施例中,能够有效地节约缓存表的内存空间,以减小缓存表的内存压力,提高缓存表中存储的多个键值对的有效性。

请参阅图9,图9为本申请实施例提供的一种数据库查询装置的结构示意图,数据库查询装置700中可以包括:解析模块710、匹配模块720、确定模块730和封装模块740;

解析模块710用于对接收的目标请求数据进行解析,得到目标查询条件;

匹配模块720用于基于目标查询条件,在缓存表中进行匹配;

确定模块730用于根据目标查询条件,在缓存表中的匹配结果,确定目标语句结果集;

封装模块740用于对目标语句结果集进行封装,得到查询结果;

其中,缓存表中包括多个历史查询条件和对应的历史语句结果集。

在一可选的实施方式中,解析模块710中还可以包括重组子模块、识别子模块和解析子模块;

重组子模块用于根据传输控制协议,对接收的客户端发送的目标请求数据进行结构重组,得到目标结构数据;

识别子模块用于基于通讯协议,对目标结构数据的数据库类型进行识别,得到目标类型和目标语句信息;

解析子模块用于基于目标类型对应的解析算法,对目标语句信息进行解析,确定目标查询条件。

在一可选的实施方式中,匹配模块720中还可以包括对比子模块和判定子模块;

对比子模块用于将目标查询条件与缓存表中的所有历史查询条件进行对比;

判定子模块用于若目标查询条件与缓存表中的任一历史查询条件相同,则判定匹配结果为匹配成功;若目标查询条件与缓存表中的所有历史查询条件均不相同,则判定匹配结果为匹配失败。

在一可选的实施方式中,确定模块730中还可包括成功子模块和失败子模块;

成功子模块用于若匹配结果为匹配成功,则获取与目标查询条件相同的历史查询条件对应的历史语句结果集,作为目标语句结果集;

失败子模块用于若匹配结果为匹配失败,则对目标请求数据进行封装,得到封装请求数据;获取服务端根据封装请求数据确定的查询语句结果集;将目标查询条件和查询语句结果集存储在缓存表中,以查询语句结果集作为目标语句结果集。

在一可选的实施方式中,封装模块740中还可以包括封装子模块和反馈子模块;

封装子模块用于根据数据库协议和传输控制协议,对目标语句结果集的关键信息进行封装,得到查询结果;其中,关键信息包括网络地址、通信端口、包序号中的至少一种;

反馈子模块用于将查询结果反馈至客户端。

在一可选的实施方式中,数据库查询装置700中还可以包括存储模块,用于对接收的客户端发送的历史请求数据进行解析,得到历史查询条件和对应的历史语句结果集;将多个历史查询条件和历史语句结果集作为键值对进行存储,得到缓存表。

在一可选的实施方式中,数据库查询装置700中还可以包括修改模块,用于根据预设的时间阈值和请求次数阈值,对每个键值对进行验证;若键值对的缓存时间大于时间阈值且键值对的请求次数小于请求次数阈值时,则判定键值对为无效键值对;在缓存表中对无效键值对进行删除。

由于本申请实施例中的数据库查询装置700解决问题的原理与前述的数据库查询方法的实施例相似,因此本实施例中的数据库查询装置700的实施可以参见上述数据库查询方法的实施例中的描述,重复之处不再赘述。

本申请实施例还提供了一种计算机可读取存储介质,可读取存储介质中存储有计算机程序指令,计算机程序指令被一处理器读取并运行时,执行本实施例提供的数据库查询方法中任一项方法中的步骤。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术分类

06120115972528