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

数据库的路由方法、中间件、系统、设备及存储介质

文献发布时间:2024-04-18 20:00:50


数据库的路由方法、中间件、系统、设备及存储介质

技术领域

本说明书一个或多个实施例涉及数据路由技术领域,尤其涉及一种数据库的路由方法、数据库中间件、数据库系统、电子设备及计算机可读存储介质。

背景技术

在数据库系统中,可能存在多个数据源存储着相同的数据。为保证应用的稳定性和可用性,数据查询时需要在多个数据源之间灵活选择可靠的查询方式,即通过运行数据路由方法确定最佳数据源,并将用户的查询请求发送到最佳数据源进行处理。相关技术的数据应用开发中,多数据源路由方法是在应用代码中开发的,需要开发人员针对于每一次的多数据源路由过程编写数据路由代码,这往往给开发人员带来繁琐又易错的工作量。

发明内容

有鉴于此,本说明书一个或多个实施例提供一种数据库的路由方法、数据库中间件、数据库系统、电子设备及计算机可读存储介质。

为实现上述目的,本说明书一个或多个实施例提供技术方案如下:

根据本说明书一个或多个实施例的第一方面,提出了一种数据库的路由方法,应用于与数据库对接的数据库中间件;所述数据库中间件支持通过预设的路由语法来进行数据路由,所述路由语法用于规定路由语句的组成部分,所述路由语句的组成部分包括路由部分和路由策略部分,所述路由部分用于指定数据源,所述路由策略部分用于为所述数据源指定路由策略;所述方法包括:

接收外部应用发送的符合所述路由语法的目标路由语句;

确定所述目标路由语句的路由部分指定的多个数据源,并获取所述多个数据源中的各个数据源的决策影响信息;其中,所述决策影响信息用于描述各个数据源的影响决策所涉及的指标;

确定所述目标路由语句的路由策略部分为所述多个数据源指定的路由策略,并基于所述路由策略对与所述多个数据源对应的决策影响信息进行排序处理,以确定针对所述多个数据源的路由顺序;

根据针对所述多个数据源的路由顺序进行数据库查询。

在一种实现方式中,所述路由语句的组成部分还包括重试部分,所述重试部分用于指定重试次数;

所述根据所述多个数据源的路由顺序进行数据库查询,包括:

确定所述目标路由语句中是否包含重试部分;

若所述目标路由语句未包含重试部分,基于所述多个数据源的路由顺序指定的首个数据源进行数据库查询;

若所述目标路由语句包含重试部分,根据所述多个数据源的路由顺序依次进行数据库查询,直到获得查询结果或者达到所述目标路由语句的重试部分指定的重试次数。

在一种实现方式中,所述路由语法包括路由查询语法,所述路由查询语法至少用于规定路由查询语句的路由部分、路由策略部分和重试部分;

所述路由查询语句的路由部分具体用于通过至少两条数据库操作语句指定数据源;

所述符合所述路由语法的目标路由语句包括:符合所述路由查询语法的目标路由查询语句;

所述多个数据源中的各个数据源的决策影响信息包括:所述目标路由查询语句的路由部分中的多条数据库操作语句分别对应的数据源的决策影响信息;

针对所述多个数据源的路由顺序包括:针对所述目标路由查询语句的路由部分中的多条数据库操作语句的路由顺序。

在一种实现方式中,所述路由语法包括路由视图创建语法和路由视图查询语法,所述路由视图创建语法用于规定路由视图创建语句的路由部分、路由策略部分和重试部分;所述路由视图查询语法用于规定路由视图查询语句的组成部分;

所述接收外部应用发送的符合所述路由语法的目标路由语句,包括:

接收外部应用发送的符合所述路由视图创建语法的目标路由视图创建语句,以创建目标路由视图;以及接收外部应用发送的符合所述路由视图查询语法且针对于所述目标路由视图的目标路由视图查询语句;

所述根据针对所述多个数据源的路由顺序进行数据库查询,包括:

根据针对所述目标路由视图创建语句的路由部分指定的多个数据源的路由顺序和所述目标路由视图查询语句,进行数据库查询。

在一种实现方式中,所述接收外部应用发送的符合所述路由语法的目标路由语句,包括:

接收所述外部应用发送的查询语句,所述查询语句包括符合所述路由语法的目标路由语句和符合数据库语法的数据库查询语句;

所述方法还包括:

根据所述目标路由语句的查询结果和所述数据库查询语句进行数据库的多表联合查询;其中,所述目标路由语句的查询结果作为派生表参与多表联合查询。

在一种实现方式中,所述数据库中间件关联有路由策略表,所述路由策略表包括至少一种路由策略;

在所述确定所述目标路由语句的路由部分指定的多个数据源之前,还包括:

验证所述目标路由语句中的路由策略部分指定的路由策略是否存在于所述路由策略表中;

若是,执行确定所述目标路由语句的路由部分指定的多个数据源的步骤。

若否,输出路由策略报错提示信息。

在一种实现方式中,所述数据库中间件提供有扩展接口,以支持外部设备通过所述扩展接口增加路由策略;

则所述方法还包括:

接收外部设备通过调用所述扩展接口发送的路由策略扩展指令,所述路由策略扩展指令包括自定义策略;

将所述自定义策略存入所述路由策略表中。

在一种实现方式中,所述路由部分包括路由关键字和路由参数,所述路由参数用于描述不同数据源;

所述路由策略部分包括策略关键字和策略参数,所述策略参数用于描述针对不同数据源的路由策略;

所述重试部分包括重试关键字和重试参数,所述重试参数用于指定重试次数。

在一种实现方式中,所述数据源包括数据表和/或数据视图中的至少一种。

根据本说明书一个或多个实施例的第二方面,提出了一种数据库中间件,所述数据库中间件与数据库对接,所述数据库中间件支持通过预设的路由语法来进行数据路由,所述路由语法用于规定路由语句的组成部分,所述路由语句的组成部分包括路由部分和路由策略部分,所述路由部分用于指定数据源,所述路由策略部分用于为所述数据源指定路由策略;所述数据库中间件包括:

语句接收模块,用于接收外部应用发送的符合所述路由语法的目标路由语句;

决策影响信息收集模块,用于确定所述目标路由语句的路由部分指定的多个数据源,并获取所述多个数据源中的各个数据源的决策影响信息;其中,所述决策影响信息用于描述各个数据源的影响决策所涉及的指标;

路由执行模块,用于确定所述目标路由语句的路由策略部分为所述多个数据源指定的路由策略,并基于所述路由策略对与所述多个数据源对应的决策影响信息进行排序处理,以确定针对所述多个数据源的路由顺序;

查询模块,用于根据针对所述多个数据源的路由顺序进行数据库查询。

根据本公开实施例的第三方面,提供一种数据库系统,包括第二方面所述的数据库中间件和数据库,所述数据库中间件与所述数据库对接。

根据本公开实施例的第四方面,提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器执行所述可执行指令时,用于实现第一方面所述的方法。

根据本公开实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。

本公开的实施例提供的技术方案可以包括以下有益效果:

本公开实施例中,数据库中间件具有多数据源路由功能,支持通过预设的路由语法来进行数据路由,可以收集用户指定的多个数据源中的各个数据源的决策影响信息,接着基于为多个数据源指定的路由策略对与多个数据源对应的决策影响信息进行排序处理,以确定针对多个数据源的路由顺序,从而可以根据针对多个数据源的路由顺序进行数据库查询。通过预设的路由语法和路由策略,数据库中间件可以自动化地选择合适的数据源来进行查询,开发人员无需在应用程序中进行多数据源路由的代码开发,实现将多数据源路由功能与应用代码解耦,减少了开发人员的工作量,也提高数据查询的灵活性和可靠性,减少了人为错误的可能性;且在数据库中间件配置多数据源路由功能也有利于提高复用性,无需针对相同的路由需求重复进行代码开发。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

图1是一示例性实施例提供的一种应用场景的示意图。

图2是一示例性实施例提供的一种数据库的路由方法的流程示意图。

图3是一示例性实施例提供的路由策略验证的示意图。

图4是一示例性实施例提供的一种电子设备的结构示意图。

图5是一示例性实施例提供的一种数据库中间件的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

在数据应用开发场景中,可能存在多个数据源存储着相同的数据。而数据源可能存在流量限制、偶发故障、调用限制等因素,导致数据查询失败;或者根据数据源响应情况、数据质量、数据源收费标准,需要根据不同需求选择不同的数据源。为保证应用的稳定性和可用性,数据查询时需要在多个数据源之间灵活选择可靠的查询方式。相关技术的数据应用开发中,多数据源路由方法是在应用代码中开发的,需要开发人员针对于每一次的多数据源路由过程编写数据路由代码,这往往给开发人员带来繁琐又易错的工作量。

基于此,本说明书实施例提供了一种数据库的路由方法,应用于与数据库对接的数据库中间件。请参阅图1,数据库中间件是位于应用程序和数据库之间的一个软件层,它提供了对数据库的访问和管理的功能。数据库中间件的存在可以简化应用程序与数据库之间的交互,提供更高的性能、可扩展性和可靠性。

示例性的,数据库中间件可以具备以下功能:(1)连接池管理:中间件可以维护一个连接池,用于管理数据库连接。连接池可以减少连接的建立和断开的开销,提高数据库的响应速度和并发处理能力。(2)查询优化:中间件可以对应用程序发送的查询进行优化,包括重写查询语句、选择合适的索引、优化查询计划等,以提高查询性能。(3)缓存管理:中间件可以维护一个缓存区域,将频繁访问的数据缓存到内存中,减少对数据库的访问次数,降低查询的延迟。(4)分布式事务管理:中间件可以提供分布式事务管理的功能,确保多个数据库操作的一致性和隔离性。(5)负载均衡和故障转移:中间件可以根据负载情况动态地将数据库请求分配到多个数据库节点上,实现负载均衡,同时还可以监控数据库节点的健康状态,当某个节点故障时,自动将请求转移到其他可用的节点上。(6)安全性和权限管理:中间件可以提供对数据库的访问控制和权限管理功能,确保只有经过授权的用户可以对数据库进行操作。

通过使用数据库中间件,可以将应用程序与底层数据库解耦,提高系统的可扩展性和可维护性。同时,中间件还可以提供一些额外的功能和性能优化,提升数据库的性能和可靠性。

本说明书实施例提供的数据库中间件具有多数据源路由功能,可以收集用户指定的多个数据源中的各个数据源的决策影响信息,接着基于为多个数据源指定的路由策略对与多个数据源对应的决策影响信息进行排序处理,以确定针对多个数据源的路由顺序,从而可以根据针对多个数据源的路由顺序进行数据库查询。开发人员无需在应用程序中进行多数据源路由的代码开发,实现将多数据源路由功能与应用代码解耦,减少了开发人员的工作量,且在数据库中间件配置多数据源路由功能也有利于提高复用性,无需针对相同的路由需求重复进行代码开发。

本说明书实施例提供的数据库中间件支持通过预设的路由语法来进行数据路由,所述路由语法用于规定路由语句的组成部分,所述路由语句的组成部分包括路由部分和路由策略部分,所述路由部分用于指定数据源,所述路由策略部分用于为所述数据源指定路由策略。

示例性的,数据源包括数据表和/或数据视图中的至少一种。多种数据源包括不同的数据表和/或不同的数据视图。其中,不同的数据表可以存储在不同的数据库或相同的数据库中,不同的数据视图可以存储在不同的数据库或相同的数据库中,本实施例对此不做任何限制。举个例子,不同的数据表和/或不同的数据视图可以存储在分布式数据库的不同数据库节点中。

请参阅图2,图2示出了本说明书实施例提供的一种数据库的路由方法的流程示意图。应用于与至少一个数据库对接的数据库中间件,所述方法包括:

在S101中,接收外部应用发送的符合所述路由语法的目标路由语句。

示例性的,数据库中间件在接收外部应用发送的目标路由语句之后,首先对该目标路由语句进行解析得到解析结果,进而基于解析结果确定该目标路由语句是否符合数据库中间件支持的路由语法,比如是否存在路由部分和路由策略部分;在确定目标路由语句符合路由语法的情况下,执行S102。

在S102中,确定所述目标路由语句的路由部分指定的多个数据源,并获取所述多个数据源中的各个数据源的决策影响信息;其中,所述决策影响信息用于描述各个数据源的影响决策所涉及的指标。

示例性的,各个数据源的决策影响信息是指各个数据源的影响决策所涉及的指标,这些指标包括但不限于性能、负载、地理位置、数据一致性级别、成本因素以及容错能力等。通过分析这些信息,数据库中间件可以有效地确定最佳的数据源以满足查询需求,保证高效性和可靠性。

在S103中,确定所述目标路由语句的路由策略部分为所述多个数据源指定的路由策略,并基于所述路由策略对与所述多个数据源对应的决策影响信息进行排序处理,以确定针对所述多个数据源的路由顺序。

示例性的,路由策略为有关于性能、负载、地理位置、数据一致性级别、成本因素以及容错能力等的数据源选择策略,可以基于指定的路由策略对与所述多个数据源对应的决策影响信息进行排序处理,以确定所述多个数据源的路由顺序。

在S104中,根据针对所述多个数据源的路由顺序进行数据库查询。

本实施例中,通过预设的路由语法和路由策略,数据库中间件可以自动化地选择合适的数据源来进行查询,而无需开发人员手动编写数据路由代码,这样可以提高数据查询的灵活性和可靠性,减少了人为错误的可能性。通过获取各个数据源的决策影响信息,并根据路由策略对这些信息进行排序处理,确定最佳的数据源路由顺序,这一过程的自动化处理减轻了开发人员的工作负担,并且可以根据实时情况动态调整数据源的选择。

在一些实施例中,数据源的决策影响信息包括但不限于以下内容:

(1)性能指标:包括各个数据源的性能指标,比如延迟、吞吐量、响应时间等。这些指标可以用来评估各个数据源的查询效率,从而选择最佳的数据源进行路由。

(2)负载状况:描述各个数据源当前的负载情况,比如当前的并发连接数、CPU使用率、内存占用等。这些信息对于选择一个负载较低的数据源来平衡系统负载至关重要。

(3)地理位置:如果涉及到分布在不同地理位置的数据源,决策影响信息可能包括与各个数据源相关的地理位置信息,以便选择就近的数据源来减少网络延迟。

(4)数据一致性级别:如果系统要求强一致性或者最终一致性,决策影响信息可能包括各个数据源当前的数据一致性状态,以便选择合适的数据源以满足一致性需求。

(5)成本因素:描述各个数据源的使用成本,包括存储成本、网络通信成本等,以便选择在成本效益上更有优势的数据源。

(6)容错能力:描述各个数据源的容错能力,包括故障发生的概率、数据备份情况等,以便选择具有较高可靠性的数据源。

可以综合上述因素,设计并实现多样化的路由策略,以适应不同场景下的需求。例如,可以采用加权轮询、最小连接数、故障转移、就近访问等策略来对数据源进行选择和调度,从而实现更为智能和高效的数据路由。在一个例子中,路由策略为按照各个数据源的负载状态进行数据源选择。在另一个例子中,路由策略为就近访问原则,即按照各个数据源的地理位置进行数据源选择。

在一些实施例中,数据库中间件设置有默认的数据源路由顺序,在目标路由语句中未指定路由策略的情况下,默认按照路由部分中指定的多个数据源的指定顺序进行数据库查询。

在一些实施例中,数据库中间件关联有路由策略表,路由策略表包括至少一种路由策略。请参阅图3,数据库中间件在接收外部应用发送的目标路由语句之后,在验证目标路由语句符合预设的路由语法的情况下,还需进一步验证目标路由语句中的路由策略部分指定的路由策略是否存在于路由策略表中;若是,执行确定目标路由语句的路由部分指定的多个数据源的步骤(也即S102)。若否,表示数据库中间件无法对其进行路由,则输出路由策略报错提示信息。本实施例通过验证目标路由语句中的路由策略部分指定的路由策略是否存在于路由策略表中,可以确保所选择的数据源符合预定义的路由策略,避免了不符合规定的数据源被误选,有助于保证数据访问的合规性和安全性。当目标路由语句中的路由策略不存在于路由策略表中时,数据库中间件能够及时地输出路由策略报错提示信息,使应用开发人员能够更快速地发现和修复问题,提高了数据库中间件的可维护性和稳定性。通过对路由策略的验证,数据库中间件能够实现对路由行为的严格控制,确保路由行为的逻辑正确性,从而提高了可控性和稳定性。

在一些实施例中,数据库中间件提供有扩展接口,以支持外部设备通过扩展接口增加路由策略。外部设备可以基于用户需求,调用数据库中间件提供的扩展接口向数据库中间件发送路由策略扩展指令,路由策略扩展指令包括自定义策略;请参阅图3,数据库中间件接收外部设备通过调用扩展接口发送的路由策略扩展指令,将路由策略扩展指令携带的自定义策略存入路由策略表中,以便后续使用。

本实施例中,外部设备可以根据实际需求通过扩展接口向数据库中间件发送携带自定义策略的路由策略扩展指令,从而实现对路由策略的灵活扩展和定制,能够满足不同业务场景下的个性化需求,提高数据库中间件的适应性。并且无需修改数据库中间件的源代码或者进行复杂的集成操作,从而降低了集成的成本和难度。外部设备可以实时向数据库中间件发送路由策略扩展指令,数据库中间件能够及时地将自定义策略存入路由策略表中,从而实现对新的路由策略的快速响应和应用,有利于业务需求的快速变更和迭代,提升数据库中间件的可扩展性。

在一些实施例中,路由语法规定的路由语句的组成部分还包括重试部分,重试部分用于指定重试次数,也即最多可以路由重试的次数;一个数据源查询失败,路由到另一数据源,记为一次。其中,重试部分为可选项,不指定时默认不允许重试。

对于S104,在确定针对多个数据源的路由顺序之后,数据库中间件确定目标路由语句中是否包含重试部分;若目标路由语句未包含重试部分,基于多个数据源的路由顺序指定的首个数据源进行数据库查询,即只有一次数据源查询过程;若目标路由语句包含重试部分,根据多个数据源的路由顺序依次进行数据库查询,直到获得查询结果或者达到目标路由语句的重试部分指定的重试次数。

本实施例中,当目标路由语句中包含重试部分时,数据库中间件能够根据指定的重试次数依次对多个数据源进行查询,即使在首次查询未获得结果的情况下也能够通过重试机制提高查询成功的可能性,从而提高了数据查询的容错性和稳定性,有利于提供更加可信赖的数据服务,提高了查询成功率,增强了用户体验和满意度。并且数据库中间件的重试机制可以自动地根据目标路由语句的指定进行重试处理,无需人工干预,降低了人工操作的成本和错误风险。

在一些实施例中,路由语法规定的路由语句的组成部分包括路由部分、路由策略部分和重试部分。路由部分包括路由关键字(如ROUTE、ROUTE_VIEW等)和路由参数,路由参数用于描述不同数据源。路由策略部分包括策略关键字(如USING)和策略参数,策略参数用于描述针对不同数据源的路由策略。重试部分包括重试关键字(如RETRY)和重试参数,重试参数用于描述最多可以路由重试的次数。

在一些实施例中,示例性提供了两种路由语法,一种为路由查询语法,另一种为路由视图创建及查询语法。

这里对路由查询语法进行示例性说明:

路由查询语法用于规定路由查询语句的路由部分、路由策略部分和重试部分;路由查询语句的路由部分具体用于通过至少两条数据库操作语句来指定数据源;路由查询语句的路由策略部分用于为数据源指定路由策略;路由查询语句的重试部分用于指定重试次数,也即最多可以路由重试的次数。

示例性的,路由查询语法的语法结构如下:

路由部分ROUTE(sql_list),由路由关键字ROUTE和路由参数sql_list组成,其中sql_list可以包含至少两个能够单独完成执行的数据库操作语句,不同数据库操作语句之间用“;”间隔。

路由策略USING strategy,由关键字USING和路由策略参数strategy[(strategy_params)]组成。路由策略部分可以包括无参数路由策略,例如USING POLLING(表示未指定路由策略),以及含参数路由函数,例如USING ROUTE_FUNCTION(10, 3),ROUTE_FUNCTION(10,3)为指定的路由策略。其中,路由策略可以为可选项,不指定时默认为按路由列表中各条数据库操作语句的顺序进行路由查询。

重试部分由重试关键字RETRY和重试次数max_retry_count组成,其中重试次数为非负整数。重试次数表示最多可以路由重试的次数,一个数据资源查询失败,路由到另一数据资源,记为一次。重试策略为可选项,不指定时默认为不允许重试。

示例性的,符合路由查询语法的目标路由查询语句(路由部分包括2条数据库查询语句)如下:

其中,“select stu_id as id, stu_name as name, phone from student_table”表示从名为"student_table"的表中选择了"stu_id"、"stu_name"和"phone"三个字段,并将"stu_id"重命名为"id","stu_name"重命名为"name",最终返回这三个字段的数据。

“select t1.id, t1.name, t2.phone from stu_table t1 join person_tablet2 on t1.id = t2.id where t2.job='student'”表示查询出满足以下条件的学生信息,包括学生的ID、姓名和电话号码:(1)从"stu_table"中选择"id"和"name"字段;(2)从"person_table"中选择"phone"字段;(3)将这两张表基于"id"字段进行连接,即"t1.id=t2.id";(4)限定"person_table"中"job"为"student"的记录。

示例性的,数据库中间件接收外部应用发送的符合路由查询语法的目标路由查询语句;确定目标路由查询语句的路由部分指定的多条数据库操作语句分别对应的数据源,并获取多条数据库操作语句分别对应的数据源的决策影响信息;进而确定目标路由查询语句的路由策略部分为多条数据库操作语句分别对应的数据源指定的路由策略,并基于路由策略对与多条数据库操作语句分别对应的数据源的决策影响信息进行排序处理,以确定针对多条数据库操作语句的路由顺序,进而基于针对多条数据库操作语句的路由顺序进行数据库查询。

在进行数据库查询的过程中,数据库中间件可以确定目标路由查询语句中是否包含重试部分;若目标路由语句未包含重试部分,基于多条数据库操作语句的路由顺序指定的首条数据库操作语句进行数据库查询;若目标路由语句包含重试部分,根据多条数据库操作语句的路由顺序依次进行数据库查询,直到获得查询结果或者达到目标路由查询语句的重试部分指定的重试次数。

示例性的,为了保证目标路由查询语句有唯一的结果类型,要求目标路由查询语句的路由部分包括的各条数据库操作语句需要有相同的结果类型,即不同数据库操作语句的查询结果,比如结果字段数、字段名称、字段类型要保持一致,如上述的符合路由查询语法的目标路由查询语句的例子中,2条数据库操作语句的查询结果均包含3个字段,字段名称相同(id、name和phone)以及字段类型相同。

这里对路由视图的创建及查询语法进行示例性说明:

路由语法包括路由视图创建语法和路由视图查询语法。路由视图创建语法用于规定路由视图创建语句的路由部分、路由策略部分和重试部分;路由视图创建语句的路由部分用于指定数据源,路由策略部分用于为数据源指定路由策略,重试部分用于指定重试次数,也即指定最多可以路由重试的次数。路由视图查询语法用于规定路由视图查询语句的组成部分。

示例性的,路由视图创建语法的语法结构如下:

路由视图查询语法的语法结构如下:

其中,路由部分ROUTE_VIEW view_name ON data_identity_list,至少由路由关键字ROUTE_VIEW和路由参数data_identity_list组成,路由参数data_identity_list用于指定多个数据源。其中,路由视图创建语法要求路由参数data_identity_list指定的多个数据源具有相同的查询方法和数据返回结构。

路由策略部分和重试部分与上述的路由查询语法的相关定义相同,此处不再赘述。示例性的,数据库中间件接收外部应用发送的符合路由视图创建语法的目标路由视图创建语句,以创建目标路由视图;以及接收外部应用发送的符合路由视图查询语法且针对于目标路由视图的目标路由视图查询语句。然后确定目标路由视图创建语句的路由部分指定的多个数据源,并获取多个数据源中的各个数据源的决策影响信息;其中,决策影响信息用于描述各个数据源的影响决策所涉及的指标。接着确定目标路由视图创建语句的路由策略部分为多个数据源指定的路由策略,并基于路由策略对与多个数据源对应的决策影响信息进行排序处理,以确定针对多个数据源的路由顺序。

最后根据针对目标路由视图创建语句的路由部分指定的多个数据源的路由顺序和目标路由视图查询语句,进行数据库查询。比如数据库中间件可以确定目标路由视图创建语句中是否包含重试部分;若目标路由视图创建语句未包含重试部分,基于多个数据源中的首个数据源和目标路由视图查询语句进行数据库查询;若目标路由视图创建语句包含重试部分,根据多个数据源的路由顺序和目标路由视图查询语句依次进行数据库查询,直到获得查询结果或者达到目标路由视图创建语句的重试部分指定的重试次数。

在一些实施例中,路由语法在查询级别上等同于数据库SELECT语法,可以将查询结果做为派生表参与关联查询等多表联合查询。数据库中间件可以接收外部应用发送的查询语句,查询语句可以包括符合路由语法的目标路由语句和符合数据库语法的数据库查询语句,在执行步骤S102~S104得到目标路由语句的查询结果之后,可以根据目标路由语句的查询结果和数据库查询语句进行数据库的多表联合查询;其中,目标路由语句的查询结果作为派生表参与多表联合查询。

以路由查询语法为例,用于多表联合查询的查询语句的表示形式如下:

其中,路由查询语句用于检索员工的id和薪资信息。路由查询语句的路由部分中的第1个数据操作语句从名为"employee"的表中选择了"empId"字段,并将其重命名为"id",同时选择了"empSalary"字段,并将其重命名为"salary";路由查询语句的路由部分中的第2个数据操作语句从名为"yuangong_table"的表中选择了"yuangong_id"字段,并将其重命名为"id",同时选择了"gongzi"字段,并将其重命名为"salary"。

查询语句除路由查询语句的其他部分用于查询员工的姓名,并将路由查询语句的查询结果t2作为派生表与table1(或者说t1)的查询结果通过"id"字段进行连接。最终得到员工的id、姓名和薪资。

以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本说明书公开的范围。

图4是一示例性实施例提供的一种电子设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图5,数据库中间件可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,数据库中间件与数据库对接,所述数据库中间件支持通过预设的路由语法来进行数据路由,所述路由语法用于规定路由语句的组成部分,所述路由语句的组成部分包括路由部分和路由策略部分,所述路由部分用于指定数据源,所述路由策略部分用于为所述数据源指定路由策略;该数据库中间件可以包括:

语句接收模块201,用于接收外部应用发送的符合所述路由语法的目标路由语句。

决策影响信息收集模块202,用于确定所述目标路由语句的路由部分指定的多个数据源,并获取所述多个数据源中的各个数据源的决策影响信息;其中,所述决策影响信息用于描述各个数据源的影响决策所涉及的指标。

路由执行模块203,用于确定所述目标路由语句的路由策略部分为所述多个数据源指定的路由策略,并基于所述路由策略对与所述多个数据源对应的决策影响信息进行排序处理,以确定针对所述多个数据源的路由顺序。

查询模块204,用于根据针对所述多个数据源的路由顺序进行数据库查询。

在一些实施例中,所述路由语句的组成部分还包括重试部分,所述重试部分用于指定重试次数。

所述查询模块204,具体用于确定所述目标路由语句中是否包含重试部分;若所述目标路由语句未包含重试部分,基于所述多个数据源的路由顺序指定的首个数据源进行数据库查询;若所述目标路由语句包含重试部分,根据所述多个数据源的路由顺序依次进行数据库查询,直到获得查询结果或者达到所述目标路由语句的重试部分指定的重试次数。

在一些实施例中,所述路由语法包括路由查询语法,所述路由查询语法至少用于规定路由查询语句的路由部分、路由策略部分和重试部分。所述路由查询语句的路由部分具体用于通过至少两条数据库操作语句指定数据源。所述符合所述路由语法的目标路由语句包括:符合所述路由查询语法的目标路由查询语句。所述多个数据源中的各个数据源的决策影响信息包括:所述目标路由查询语句的路由部分中的多条数据库操作语句分别对应的数据源的决策影响信息。针对所述多个数据源的路由顺序包括:针对所述目标路由查询语句的路由部分中的多条数据库操作语句的路由顺序。

在一些实施例中,所述路由语法包括路由视图创建语法和路由视图查询语法,所述路由视图创建语法用于规定路由视图创建语句的路由部分、路由策略部分和重试部分;所述路由视图查询语法用于规定路由视图查询语句的组成部分。

所述语句接收模块201,具体用于接收外部应用发送的符合所述路由视图创建语法的目标路由视图创建语句,以创建目标路由视图;以及接收外部应用发送的符合所述路由视图查询语法且针对于所述目标路由视图的目标路由视图查询语句。

所述查询模块204,具体用于根据针对所述目标路由视图创建语句的路由部分指定的多个数据源的路由顺序和所述目标路由视图查询语句,进行数据库查询。

在一些实施例中,所述语句接收模块201,具体用于接收所述外部应用发送的查询语句,所述查询语句包括符合所述路由语法的目标路由语句和符合数据库语法的数据库查询语句;

所述数据库中间件还包括联合查询模块,用于根据所述目标路由语句的查询结果和所述数据库查询语句进行数据库的多表联合查询;其中,所述目标路由语句的查询结果作为派生表参与多表联合查询。

在一些实施例中,所述数据库中间件关联有路由策略表,所述路由策略表包括至少一种路由策略。所述数据库中间件还包括验证模块,用于验证所述目标路由语句中的路由策略部分指定的路由策略是否存在于所述路由策略表中;若是,执行确定所述目标路由语句的路由部分指定的多个数据源的步骤。若否,输出路由策略报错提示信息。

在一些实施例中,所述数据库中间件提供有扩展接口,以支持外部设备通过所述扩展接口增加路由策略。

所述数据库中间件还包括扩展模块,用于接收外部设备通过调用所述扩展接口发送的路由策略扩展指令,所述路由策略扩展指令包括自定义策略;将所述自定义策略存入所述路由策略表中。

在一些实施例中,所述路由部分包括路由关键字和路由参数,所述路由参数用于描述不同数据源;所述路由策略部分包括策略关键字和策略参数,所述策略参数用于描述针对不同数据源的路由策略;所述重试部分包括重试关键字和重试参数,所述重试参数用于描述最多可以路由重试的次数。

在一些实施例中,所述数据源包括数据表和/或数据视图中的至少一种。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

在一些实施例中,本说明书实施例还提供了一种数据库系统,包括上述的数据库中间件和数据库,所述数据库中间件与所述数据库对接。在一些实施例中,本说明书实施例还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现上述中任一项所述的方法。

在一些实施例中,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

相关技术
  • 一种检测小鼠唐菖蒲伯克霍尔德氏菌的荧光定量PCR方法
  • 唐菖蒲伯克霍尔德氏菌及米酵菌酸产毒株的检测方法、检测用荧光PCR引物和探针
技术分类

06120116544520