一种数据库查询方法和装置
技术领域
本说明书涉及计算机技术领域,尤其涉及一种数据库查询方法和装置。
背景技术
异构数据库系统是相关的多个数据库的集合,可以实现数据的共享和透明访问,每个数据库在加入异构数据库系统之前本身就已经存在,拥有自己的数据库管理系统DBMS。
在大业务量、高并发、多数据库的业务场景下,同一套业务逻辑需支持多个数据库,但由于各数据库分页的初始值是不一样的,例如:orcale系统顺序分配为从查询返回的行的编号是从1开始的,而mysql返回的前几条或中间某几行数据是从0开始的,导致现有技术不支持基于不同源的数据库进行的分页操作。
发明内容
本说明书实施例提供一种可数据库查询方法,用以解决现有技术不支持不同源的数据库进行分页操作的问题,
本说明书实施例提供一种数据库查询方法,包括:
接收携带有结构查询语句的查询请求;
在所述结构查询语句的XML字段中写入配置文件,所述配置文件用于描述参与所述查询请求对应的目标业务的数据库对应的分页参数;
将所述查询请求分配至所述参与所述目标业务的一个或多个数据库,以使所述一个或多个数据库基于对应的分页参数响应所述查询请求。
可选的,所述在所述结构查询语句的XML字段中写入配置文件包括:
确定参与所述目标业务的数据库以及对应的分页规则;
基于所述参与所述目标业务的数据库对应的分页规则确定配置文件;
将所述配置文件写入至所述结构查询语句的XML字段中。
可选的,在将所述查询请求分配至所述参与所述目标业务的一个或多个数据库之后,还包括:
在接收到切换指令时,基于所述切换指令将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第一数据库;
接收所述第一数据库基于所述第一数据库对应的分页参数响应所述查询请求返回的查询结果。
可选的,在将所述查询请求分配至所述参与所述目标业务的一个或多个数据库之后,还包括:
若检测获知所述一个或多个数据库的缓存中心中出现指示参数,则将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第二数据库;
接收所述第二数据库基于所述第二数据库对应的分页参数响应所述查询请求返回的查询结果;
其中,所述缓存中心用于缓存所述一个或多个数据库响应所述查询请求输出的数据,所述指示参数用于指示对应的数据库无法正常响应查询请求。
可选的,所述将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第二数据库包括:
依据预建立的优先级规则,将所述查询请求切换至所述参与所述目标业务的数据库中的第二数据库;
其中,所述优先级规则用于描述所述参与所述目标业务的数据库对应的优先级,所述第二数据库为所述参与所述目标业务的数据库中除所述一个或多个数据库之外优先级最高的数据库。
可选的,所述优先级规则为根据所述参与所述目标业务的数据库的负载状态和/或负载性能建立的。
可选的,所述配置文件包括参与所述目标业务的数据库的标识以及与标识对应的分页参数值;
其中,所述分页参数值包括对应数据库的分页参数的起始值和结束值。
可选的,所述配置文件包括参与所述目标业务的数据库的标识以及与标识对应的分页参数值;
其中,所述分页参数值包括对应数据库的分页参数的偏移值。
可选的,所述参与所述目标业务的数据库为同构数据库或异构数据库。
本说明书实施例提供一种数据库查询装置,包括:
确定单元,用于接收携带有结构查询语句的查询请求;
写入单元,用于在所述结构查询语句的XML字段中写入配置文件,所述配置文件用于描述参与所述查询请求对应的目标业务的数据库对应的分页参数;
分配单元,用于将所述查询请求分配至所述参与所述目标业务的一个或多个数据库,以使所述一个或多个数据库基于对应的分页参数响应所述查询请求。
可选的,所述写入单元,用于确定参与所述目标业务的数据库以及对应的分页规则;基于所述参与所述目标业务的数据库对应的分页规则确定配置文件;将所述配置文件写入至所述结构查询语句的XML字段中。
可选的,所述分配单元,用于在接收到切换指令时,基于所述切换指令将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第一数据库;接收所述第一数据库基于所述第一数据库对应的分页参数响应所述查询请求返回的查询结果。
可选的,所述分配单元,用于若检测获知所述一个或多个数据库的缓存中心中出现指示参数,则将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第二数据库;接收所述第二数据库基于所述第二数据库对应的分页参数响应所述查询请求返回的查询结果;其中,所述缓存中心用于缓存所述一个或多个数据库响应所述查询请求输出的数据,所述指示参数用于指示对应的数据库无法正常响应查询请求。
可选的,所述分配单元,用于依据预建立的优先级规则,将所述查询请求切换至所述参与所述目标业务的数据库中的第二数据库;其中,所述优先级规则用于描述所述参与所述目标业务的数据库对应的优先级,所述第二数据库为所述参与所述目标业务的数据库中除所述一个或多个数据库之外优先级最高的数据库。
可选的,所述优先级规则为根据所述参与所述目标业务的数据库的负载状态和/或负载性能建立的。
可选的,所述配置文件包括参与所述目标业务的数据库的标识以及与标识对应的分页参数值;
其中,所述分页参数值包括对应数据库的分页参数的起始值和结束值。
可选的,所述配置文件包括参与所述目标业务的数据库的标识以及与标识对应的分页参数值;
其中,所述分页参数值包括对应数据库的分页参数的偏移值。
可选的,所述参与所述目标业务的数据库为同构数据库或异构数据库。
本说明书实施例提供一种数据库查询装置,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收携带有结构查询语句的查询请求;
在所述结构查询语句的XML字段中写入配置文件,所述配置文件用于描述参与所述查询请求对应的目标业务的数据库对应的分页参数;
将所述查询请求分配至所述参与所述目标业务的一个或多个数据库,以使所述一个或多个数据库基于对应的分页参数响应所述查询请求。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
在接收到外围设备发送的携带有结构查询语句的查询请求后,将参与目标业务的数据库对应的分页参数以配置文件的形式写入到结构查询语句的XML字段中,并将查询请求发送至参与所述目标业务的一个或多个数据库中,以使一个或多个数据库数据库读取对应的分页参数,并基于分页参数响应查询请求。进而达到在同一业务中支持不同源的数据库进行分页操作的目的。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的应用场景图;
图2为本说明书实施例1提供的数据库查询方法流程示意图;
图3为本说明书实施例1提供的写入配置文件步骤的流程示意图;
图4为本说明书实施例2提供的第一种数据库切换方法流程示意图;
图5为本说明书实施例2提供的第二种数据库切换方法流程示意图;
图6为本说明书实施例3提供的数据库查询装置的结构示意图;
图7为本说明书实施例4提供的数据库查询系统的结构示意图;
图8为本说明书实施例5提供的电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
图1为本说明书实施例提供的应用场景图,下面参见图1对本说明书的应用场景进行详细说明:
业务场景的参与方一般包括:辅助输入设备、典型的三层架构和数据库。其中:
辅助输入装置举例为鼠标、键盘等;
参与业务场景的数据库可以为单一源的数据库,可以为同源的多个数据库构成的同构数据库系统,也可以为不同源的多个数据库组成的异构数据库系统。
三层架构包括:表示层ui、业务逻辑层service和数据访问层dao。
表示层,又被称为UI界面,用于与用户进行交互,例如:显示数据和接收用户输入的数据。
业务逻辑层,又称为领域层或者领域层和应用层的集合,其处于表示层和数据访问层之间,其承上启下的作用,对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。数据访问层,又称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。简单来说,可实现对数据表的选择Select,插入Insert,更新Update,删除Delete的操作等。
参与方基于业务场景对应的操作流程进行的数据流如下:
表示层接收用户基于辅助输入设备进行的查询操作生成的查询请求,并将查询请求发送至业务逻辑层。其中,查询操作可具体为基于编辑工具编写的结构查询语句SQL,并携带在查询请求中。结构查询语句SQL举例为:
SELECT*FROM tb_stu WHERE age BETWEEN 0 AND18
其中,SELECT为选取指令,FROM为表名,WHERE为字段名、查询条件表达式,BETWEEN为初始值0和终止值18之间的数据宽度。
业务逻辑层基于业务对应的操作流程调用关联的服务,例如:调用数据访问层对应的某代理服务器执行相关操作;
数据访问层基于业务逻辑层的调用将查询请求发送至数据库中,以使数据库响应查询请求,并基于分页操作返回查询结果。
表示层接收数据库返回的查询结果,并展示给用户。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
实施例1
图2为本说明书实施例1提供的数据库查询方法流程示意图,参见图2,该方法包括如下步骤:
步骤22、接收携带有结构查询语句的查询请求;
需要说明的是,实现步骤22的一种情况可以为:在处理目标业务时,用户通过外围设备以及编辑工具编写结构查询语句,并携带在查询请求中上传至业务逻辑层,业务逻辑层调用数据访问层。数据访问层确定接收到的查询请求。
其中,结构查询语句可采用结构查询语言(Structured Query Language,简称SQL)编写,SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
步骤24、在所述结构查询语句的XML字段中写入配置文件,所述配置文件用于描述参与所述查询请求对应的目标业务的数据库对应的分页参数;
需要说明的是,本步骤中参与目标业务的数据库可以包括同源的数据库、同构的数据库;也可以包括orcale数据库、mysql数据库、oceanbase(下述简称为ob)数据库、access数据库中的至少一个,由于来源不同,当包括至少两个或两个以上时构成异构数据库系统。
参见图3,步骤24具体可以包括如下内容:
步骤32、确定参与所述目标业务的数据库以及对应的分页规则;
步骤34、基于所述参与所述目标业务的数据库对应的分页规则确定配置文件;
步骤36、将所述配置文件写入至所述结构查询语句的XML字段中。
需要说明的是,对于不同的数据库,其分页规则可能并不相同,例如:orcale的分页参数rownum的起始值为1,mysql的分页参数limit的起始值为0。
其中,rownum和limit分别为oracle和ob基于查询请求返回的查询结果的行的编号。
在确定出参与所述目标业务的数据库后,基于确定的数据库对应的分页规则构建配置文件,构建的配置文件包括:参与目标业务的数据库的标识及其对应的分页参数值。例如:
确定参与所述目标业务场景的数据库包括orcale数据库和ob数据库,则基于orcale数据库和ob数据库对应的分页规则构建的配置文件包括:orcale和ob的标识,可以为对应的分页参数rownum和limit,以及rownum和limit对应的分页参数值。其中,为不同数据库构建分页参数值的方式有两种,如下:
第一种、为不同数据库的分页参数配置起始值和终止值,例如:
对于结构查询语句为SELECT*FROM tb_stu WHERE age BETWEEN 1AND18的查询请求。配置文件包括:在结构查询语句的XML字段中,写入ob数据库的limit对应的分页参数值包括:起始值0和终止值17;oracle数据库的rownum对应的分页参数包括:起始值1和终止值18。
或者,
对于结构查询语句为关键词+每页显示N条数据的查询请求,配置文件的作用为指示ob数据库返回基于关键词查询后得到的数据列表中前N条数据,即编号为0-(N-1)条的数据;指示oracle数据库返回基于关键词查询后得到的数据列表中前N条数据,即编号为1-N条的数据。
第二种、为不同数据库的分页参数配置偏移值,例如:
对于结构查询语句为SELECT*FROM tb_stu WHERE age BETWEEN 1AND18的查询请求。配置文件包括:配置文件包括:在结构查询语句的XML字段中,写入ob数据库的limit对应的分页参数值包括:偏移值为0,即ob数据库读取偏移值0,然后,保持起始值1和终止值18的数据宽度返回对应的数据;oracle数据库的rownum对应的分页参数包括:偏移值为1,即oracle数据库读取偏移值1,然后,在起始值0和终止值18的基础上偏移1得到起始值1和终止值19,然后,基于起始值1和终止值19的数据宽度返回对应的数据。
或者,
对于结构查询语句为关键词+每页显示N条数据的查询请求,配置文件的作用为指示ob数据库返回基于关键词查询后得到的数据列表中前N条数据,即偏移值为1,取编号为0-(N-1)条的数据;指示oracle数据库返回基于关键词查询后得到的数据列表中前N条数据,即偏移值为0,取编号为1-N条的数据。
另外,对于上述两种方法,若用户输入的结构查询语句中还携带有查询第M页的指示,则ob数据库返回编号为(N*(M-1))-(M*N-1)的数据,oracle数据库返回编号为(N*(M-1)+1)-(M*N)的数据。
不难理解的是,对于其他未列出的数据库,基于其分页规则,适应性地配置对应的分页参数值即可,此处不再赘述。
步骤26、将所述查询请求分配至所述参与所述目标业务的一个或多个数据库,以使所述一个或多个数据库基于对应的分页参数响应所述查询请求。
需要说明的是,参与目标业务的数据库可能不唯一,例如:包括5个不同源的数据库。相应地,
步骤26的一种实现方式可以为:则基于预定的选取规则,从参与目标业务的数据库中选取出一个或多个数据库,并将查询请求发送至选取的数据库中,由选取的数据库响应查询请求。
步骤26的另一种实现方式可以为:不限制执行查询请求的数据库的范围,有任意个或者全部数据库来响应查询请求。
其中,数据库响应查询请求的实现方式有多个,举例如下:
一种实现方式可以为:XML字段携带在结构查询语句中。相应地,数据库直接从查询请求中读取到数据库对应的分页参数,然后,基于对应的分页参数返回查询结果。
另一种实现方式可以为:XML字段存储在结构查询语句之外的存储器或服务器中,XML字段可以通过映射的方式与结构查询语句连接关联关系。相应地,数据库从存储有结构查询语句的存储器中提取对应的分页参数,或者,向存储有结构查询语句的服务器发起查询请求,并获取服务器返回的数据库对应的分页参数。然后,基于对应的分页参数返回查询结果。
另外,本实施例中的目标业务可能存在需要多次查询-响应的过程,则可重复执行上述步骤或者相似步骤,直至完成目标业务。由于重复执行步骤的过程与上述描述相似或相同,故,此处不再赘述。
可见,本说明书实施例1在接收到携带有结构查询语句的查询请求后,将参与目标业务的数据库对应的分页参数以配置文件的形式写入到结构查询语句的XML字段中,并将查询请求发送参与所述目标业务的一个或多个数据库中,以遍一个或多个数据库读取对应的分页参数,并基于分页参数响应查询请求,实现分页查询。进而达到同一业务中支持不同源的数据库进行分页操作的目的。
而且,本说明书实施例仅在结构查询语句的XML字段写入几个参数值即可实现支持不同源数据库分页操作的目的,具有代码改动量少、维护成本低的有点。而且,也不会对上层业务代码造成影响。
实施例2
本实施例包括实施例1中的全部内容,且还可以包括:在当前响应查询请求的一个或多个数据库无法正常响应查询请求时,将一个或多个数据库切换至其他数据库,或者,自主地将一个或多个数据库动态切换至其他数据库的步骤,具体可以包括如下两种方案:
参见图4,第一种方案具体可以包括如下步骤:
步骤42、在接收到切换指令时,基于所述切换指令将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第一数据库;
步骤44、接收所述第一数据库基于所述第一数据库对应的分页参数响应所述查询请求返回的查询结果。
需要说明的是,第一种方案的实现方式可以为:在一个或多个数据库响应查询请求中,监测该一个或多个数据库的状态,若监测到其中有数据库返回的数据出现问题,则输入切换指令。然后,数据访问层基于切换指令通过drm推不同的值实现数据库的动态切换。
相应地,切换后的第一数据库从查询请求中读取第一数据库对应的分页参数,并基于分页参数返回查询结果。
其中,切换指令可以为将一个或多个数据库切换至其他数据库的指令,由数据访问层自行选择数据库并切换;也可以为携带有第一数据库的标识、指示数据访问层基于第一数据库的标识切换至第一数据库。
参见图5,第二种方案具体可以包括如下步骤:
步骤52、若检测获知所述一个或多个数据库的缓存中心中出现指示参数,则将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第二数据库;
步骤54、接收所述第二数据库基于所述第二数据库对应的分页参数响应所述查询请求返回的查询结果;
其中,所述缓存中心用于缓存所述一个或多个数据库响应所述查询请求输出的数据,所述指示参数用于指示对应的数据库无法正常响应查询请求。缓存中心中可以存储有数据库的标识及其对应的数据库缓存输出的数据,以实现分别对数据库的输出数据进行监测的目的。
需要说明的是,在一个或多个数据库响应查询请求的过程中,监测一个或多个数据库的缓存中心,若监测缓存中心出现指示一个或多个数据库中的一个或者多个数据库无法正常响应查询请求的指示参数时,适应性地从异构数据库系统中选择出第二数据库,并将查询请求切换至第二数据库中。
其中,指示参数为数据库响应状态的一部分,数据库响应状态包括:0和1,分别对应于正常和异常,当异常时,数据库输出指示参数1;当正常时,数据库输出正常参数0。
另外,不难理解的是,切换数据库时,可仅切换出现问题的数据库,也可切换出现问题和未出现问题的数据库。如下:
在当前响应查询请求的数据库为一个时,在该数据库出现问题时,将查询请求切换至参与所述目标业务的其他数据库。
或者,
在当前响应查询请求的数据库为多个时,若接收到切换指令且切换指令中携带有需要切换的有问题的数据库的标识,则仅将将多个数据库中有问题的数据库切换至参与所述目标业务的其他数据库。
下面对步骤42和步骤52中切换数据库的过程进行示例说明:
切换数据库时,适应性选择其他数据库的方法可以为优先级规则、随机规则等,下面以由当前响应查询请求的一个数据库切换至第二数据库为例进行说明:
优先级规则可以包括:
首先,在确定出参与目标业务的数据库之后,建立优先级规则,以为数据库的设置优先级。其中,优先级为根据所述参与所述目标业务的数据库的负载状态和/或负载性能建立的。例如:负载最小且负载性能最强的数据库,则将其作为优先级最高的数据库;负载最大且负载性能最小的数据库,则将其作为优先级最小的数据库。
然后,在接收到切换当前响应查询请求的一个数据库的指令,或者,监测到该数据库无法正常响应查询请求时,依据优先级规则,将查询请求分配至所述参与所述目标业务的数据库中的第二数据库;
其中,所述优先级规则用于描述所述参与所述目标业务的数据库对应的优先级,所述第二数据库为所述参与所述目标业务的数据库中除所述一个或多个数据库之外优先级最高的数据库。
另外,为了增加优先级的精度,除了在确定出参与目标业务的数据库之后,为数据库的设置优先级,还可以在当前响应查询请求的数据库无法正常响应时,对当前参与所述目标业务的数据库的负载和/或性能进行再次检测,并基于当前的负载和/或性能更新参与目标业务的数据库的优先级,并基于更新后的优先级进行切换。
随机规则可以为:
在分配查询请求时排除主观上有意识地抽取调查数据库,基于每个数据库以概率均等的原则,随机地分配/切换数据库。例如:可以使用随机数表等来保证随机性。
不难理解的是,当前响应查询请求的数据库可以为系统默认的数据库,即,当接收到查询请求后默认直接发送至该数据库。或者,当接收到查询请求后,从参与目标业务的数据库中选出优先级最高的数据库作为该数据库,并将查询请求发送至该数据库。然后,在切换时,遵从上述优先级规则或者随机规则。
可见,本说明书实施例通过人为或者自动监测当前响应查询请求的数据库的响应状态,以在当前响应查询请求的数据库的响应状态出现问题需要切换数据库时或者主动地切换数据库时,基于上述两种切换方法对将当前响应查询请求的数据库切换为参与目标业务的数据库中的其他数据库,以保证正常且高效率的响应查询请求。
而且,由于查询请求中写入有参与目标业务的异构数据库中数据库的分页参数。因此,即便将查询请求切换至其他源的数据库,其他源的数据库依然可以通过读取查询请求中携带对应的分页参数响应查询请求进行分页操作。更进一步地,参与目标业务的数据库无论是同构数据库还是异构数据库,都可适用上述的切换方式,因此,本说明书实施例能实现提高数据库查询的效率的目的。
需要说明的是,对于实施例1和实施例2所提供的方法,各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤22和步骤24的执行主体可以为设备1,步骤26的执行主体可以为设备2;又比如,步骤22的执行主体可以为设备1,步骤24和步骤26的执行主体可以为设备2;等等。
另外,对于方法实施方式,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施方式并不受所描述的动作顺序的限制,因为依据本发明实施方式,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施方式均属于优选实施方式,所涉及的动作并不一定是本发明实施方式所必须的。
实施例3
图6为本说明书实施例3提供的数据库查询装置的结构示意图,参见图6,该装置包括:
确定单元61,用于接收携带有结构查询语句的查询请求;
写入单元62,用于在所述结构查询语句的XML字段中写入配置文件,所述配置文件用于描述参与所述查询请求对应的目标业务的数据库对应的分页参数;
其中,参与所述目标业务的数据库包括orcale数据库、mysql数据库、ob数据库、access数据库中的至少一个。
分配单元63,用于将所述查询请求分配至所述参与所述目标业务的一个或多个数据库,以使所述一个或多个数据库基于对应的分页参数响应所述查询请求。
需要说明的是,确定单元61在接收到外围设备发送的查询请求后,将查询请求发送至写入单元62,由写入单元62在查询请求携带的结构查询语句的XML字段中写入配置文件,并将处理后的查询请求发送至分配单元63,分配单元63基于预定的分配规则,将查询请求分配至参与目标业务的数据库中的一个或多个数据库中。进而,该一个或多个数据库从结构查询语句的XML中的配置文件中读取出对应的分页参数,并基于对应的分页参数响应查询请求,实现分页查询。
可见,本说明书实施例3在接收到携带有结构查询语句的查询请求后,将参与目标业务的数据库对应的分页参数以配置文件的形式写入到结构查询语句的XML字段中,并将查询请求发送参与所述目标业务的一个或多个数据库中,以遍一个或多个数据库读取对应的分页参数,并基于分页参数响应查询请求,实现分页查询。进而达到同一业务中支持不同源的数据库进行分页操作的目的。
下面对本实施例中的各功能单元的功能原理进行详细说明:
写入单元62的功能原理可以为:
确定参与所述目标业务的数据库以及对应的分页规则;基于所述参与所述目标业务的数据库对应的分页规则确定配置文件;将所述配置文件写入至所述结构查询语句的XML字段中。
其中,写入配置文件的方式可以有两种,如下:
第一种、在XML字段中写入参与所述目标业务的数据库的标识及其对应的分页参数值,分页参数值包括对应数据库分页参数的起始值和结束值。
第二种、在XML字段中写入参与所述目标业务的数据库的标识及其对应的分页参数值,分页参数值包括对应数据库分页参数的的偏移值。
分配单元63的功能原理可以为:
将查询请求发送至一个或多个数据库。在将查询请求发送至一个或多个数据库后,还用于实现切换数据库,具体可以包括如下两种切换方式:
第一种切换方式可以为:在接收到切换指令时,基于所述切换指令将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第一数据库;接收所述第一数据库基于所述第一数据库对应的分页参数响应所述查询请求返回的查询结果。
第二种切换方式可以为:若检测获知所述一个或多个数据库的缓存中心中出现指示参数,则将所述查询请求切换至所述参与所述目标业务的数据库中除所述一个或多个数据库之外的第二数据库;接收所述第二数据库基于所述第二数据库对应的分页参数响应所述查询请求返回的查询结果。
其中,所述缓存中心用于缓存所述一个或多个数据库数据库响应所述查询请求输出的数据,所述指示参数用于指示对应的数据库无法正常响应查询请求。
另外,分配单元63切换数据库的规则可以为:
依据预建立的优先级规则,将所述查询请求切换至所述参与所述目标业务的数据库中的第二数据库;其中,所述优先级规则用于描述所述参与所述目标业务的数据库对应的优先级,所述第二数据库为所述参与所述目标业务的数据库中除所述一个或多个数据库之外优先级最高的数据库。
其中,优先级规则为根据所述参与所述目标业务的数据库的负载状态和/或负载性能建立的。
可见,本说明书实施例通过人为或者自动监测当前响应查询请求的数据库的响应状态,以在当前响应查询请求的数据库的响应状态出现问题需要切换数据库时,或者主动地切换数据库时,基于上述两种切换方法对将当前响应查询请求的数据库切换为参与所述目标业务的数据库中的其他数据库,以保证正常且高效率的响应查询请求。
而且,由于查询请求中写入有参与目标业务的异构数据库中数据库的分页参数。因此,即便将查询请求切换至其他源的数据库,其他源的数据库依然可以通过读取查询请求中携带对应的分页参数响应查询请求进行分页操作。更进一步地,参与目标业务的数据库无论是同构数据库还是异构数据库,都可适用上述的切换方式。因此,本说明书实施例能实现提高数据库查询的效率的目的。
需要说明的是,对于实施例3提供的装置,由于其与方法实施方式基本相似,所以描述的比较简单,相关之处参见方法实施方式的部分说明即可。
应当注意的是,在本发明的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合。
实施例4
图7为本说明书实施例4提供的数据库查询系统的结构示意图,参见图7,该系统包括:外围设备、应用层、代理层、去o组件和异构数据库,其中:
外围设备为计算机系统中除主机外的其他设备。包括输入和输出设备、外存储器、模数转换器、数模转换器、外围处理机等。是计算机与外界进行通信的工具。例如打印机、磁盘驱动器或键盘。
应用层对应于三层架构的业务逻辑层。
代理层和去o组件对应于三层架构的数据访问层。
异构数据库包括:orcale、mysql、ob、access等数据库。
相应地,系统的工作原理如下:
用户通过外围设备向编辑工具输入结构查询语句并发起携带有结构查询语句的查询请求,并将查询请求上传至应用层,应用层访问调用代理层。
代理层对结构查询语句的XML字段进行写入处理,并将写入处理后的查询请求发送至去o组件,由去o组件解析所述查询请求获取SQL脚本,并选择性地将查询请求发送至对应的数据库,例如:orcale。
Orcale基于查询请求搜索对应的数据,并将搜索到的数据作为查询结果返回至外围设备,由外围设备展示给用户。
其中,写入处理的过程与实施例1-4中写入配置文件的过程相对应,故,此处不再对写入处理进行赘述。
可见,本系统接收到外围设备发送的携带有结构查询语句的查询请求后,将参与目标业务的数据库对应的分页参数以配置文件的形式写入到结构查询语句的XML字段中,并将查询请求发送至参与所述目标业务的一个或多个数据库中,以使一个或多个数据库数据库读取对应的分页参数,并基于分页参数响应查询请求。进而达到在同一业务中支持不同源的数据库进行分页操作的目的。
实施例5
图8为本说明书实施例5提供的一种电子设备的结构示意图,参见图8,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据库查询管理装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
网络接口、处理器和存储器可以通过总线系统相互连接。总线可以是ISA(Industry StandardArchitecture,工业标准体系结构)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended IndustryStandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器可能包含高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器。
处理器,用于执行所述存储器存放的程序,并具体执行:
接收携带有结构查询语句的查询请求;
在所述结构查询语句的XML字段中写入配置文件,所述配置文件用于描述参与所述查询请求对应的目标业务的数据库对应的分页参数;
将所述查询请求分配至所述参与所述目标业务的一个或多个数据库,以使所述一个或多个数据库基于对应的分页参数响应所述查询请求。
上述如本说明书图2-5和图6-7所示实施例揭示的数据库查询管理装置或管理者(Master)节点执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
数据库查询管理装置还可执行图2的方法,并实现管理者节点执行的方法。
对于上述装置实施方式而言,由于其与方法实施方式基本相似,所以描述的比较简单,相关之处参见方法实施方式的部分说明即可。
应当注意的是,在本发明的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合。
实施例6
基于相同的发明创造,本说明书实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行实施例1和2提供的数据库查询方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。其中,计算机是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能,是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。