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

访问数据库的方法、装置、中间件及计算机可读存储介质

文献发布时间:2023-06-19 11:22:42


访问数据库的方法、装置、中间件及计算机可读存储介质

技术领域

本公开涉及信息技术领域,特别涉及访问数据库的方法、装置、中间件及计算机可读存储介质。

背景技术

灰度发布,是在应用及数据库开发过程中平滑过渡的一种数据发布方式。具体来说,灰度发布让部分用户继续使用旧版本应用及数据库,另一部分用户试用新版本应用及数据库。如果试用用户没有反对意见,那么逐步把所有用户都迁移到新版本应用上来。灰度发布可以包括应用和数据库两个层面。

对于数据库的灰度发布,所有用户的数据库请求产生的数据,需要同时向新旧版本数据库实例进行分发。在完成发布或回滚时只需删除某一个数据库实例,就可以保证灰度发布过程业务数据的完整性。目前数据库灰度发布主要是通过应用层实现数据的分发。

发明内容

本公开解决的一个技术问题是,如何降低开发新版本应用及新版本数据库的复杂度。

根据本公开实施例的一个方面,提供了一种访问数据库的方法,包括:中间件解析应用发送的数据库访问请求,获得数据库访问请求中的目标访问元素;中间件利用目标访问元素匹配数据库变更信息表,得到目标访问元素的匹配结果;数据库变更信息表包含新版数据库与旧版数据库之间的各项元素变更信息,元素变更信息包括变更前的元素及变更后的元素;中间件根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库。

在一些实施例中,目标访问元素的匹配结果为目标访问元素对应的元素变更信息;中间件根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库包括:中间件复制数据库访问请求,得到原数据库访问请求和复制的数据库访问请求;若目标访问元素为匹配结果中变更前的元素,中间件将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更后的元素;中间件将复制的数据库访问请求路由至新版数据库,并将原数据库访问请求路由至旧版数据库。

在一些实施例中,中间件根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库还包括:若目标访问元素为匹配结果中变更后的元素,中间件将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更前的元素;中间件将复制的数据库访问请求路由至旧版数据库,并将原数据库访问请求路由至新版数据库。

在一些实施例中,中间件根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库包括:目标访问元素的匹配结果空,中间件将数据库访问请求分别路由至新版数据库及旧版数据库。

在一些实施例中,该方法还包括:利用新版数据库中变更后的一个元素与对应的旧版数据库中变更前的一个元素,构建新版数据库与旧版数据库之间的一项元素变更信息;利用新版数据库与旧版数据库之间的各项元素变更信息,构建数据库变更信息表。

根据本公开实施例的另一个方面,提供了一种中间件,包括:请求解析模块,被配置为解析应用发送的数据库访问请求,获得数据库访问请求中的目标访问元素;信息匹配模块,被配置为利用目标访问元素匹配数据库变更信息表,得到目标访问元素的匹配结果;数据库变更信息表包含新版数据库与旧版数据库之间的各项元素变更信息,元素变更信息包括变更前的元素及变更后的元素;路由模块,被配置为根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库。

在一些实施例中,目标访问元素的匹配结果为目标访问元素对应的元素变更信息;路由模块包括:请求复制单元,被配置为复制数据库访问请求,得到原数据库访问请求和复制的数据库访问请求;请求修改单元,被配置为:若目标访问元素为匹配结果中变更前的元素,将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更后的元素;请求路由单元,被配置为:将复制的数据库访问请求路由至新版数据库,并将原数据库访问请求路由至旧版数据库。

在一些实施例中,请求修改单元还被配置为:若目标访问元素为匹配结果中变更后的元素,将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更前的元素;请求路由单元还被配置为:将复制的数据库访问请求路由至旧版数据库,并将原数据库访问请求路由至新版数据库。

在一些实施例中,目标访问元素的匹配结果空,路由模块被配置为:将数据库访问请求分别路由至新版数据库及旧版数据库。

在一些实施例中,该中间件还包括信息表构建模块,被配置为:利用新版数据库中变更后的一个元素与对应的旧版数据库中变更前的一个元素,构建新版数据库与旧版数据库之间的一项元素变更信息;利用新版数据库与旧版数据库之间的各项元素变更信息,构建数据库变更信息表。

根据本公开实施例的又一个方面,提供了一种访问数据库的装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述的访问数据库的方法。

根据本公开实施例的再一个方面,提供了一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现前述的访问数据库的方法。

本公开能够在不修改应用的前提下实现应用向不同数据库进行数据分发,从而减少了开发新版本应用及新版本数据库的约束,降低了开发新版本应用及新版本数据库的复杂度。

通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。

附图说明

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

图1示例性的示出了传统的数据库灰度发布技术中的数据发布流程示意图。

图2示例性示出了本公开访问数据库的方法的数据发布流程示意图。

图3示出了构建数据库变更信息表的一些实施例的流程示意图。

图4出了本公开访问数据库的方法的一些实施例的流程示意图。

图5出了中间件将数据库访问请求路由至数据库的一些实施例的流程示意图。

图6示出了本公开中间件的一些实施例的结构示意图。

图7示出了本公开访问数据库的装置的一些实施例的结构示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。

图1示例性的示出了传统的数据库灰度发布技术中的数据发布流程示意图。如图1所示,传统的数据库灰度发布技术中,旧版应用需要将旧版数据发布至旧版数据库和新版数据库,新版应用需要将新版数据发布至旧版数据库和新版数据库。发明人研究发现,传统的数据库灰度发布技术存在如下问题:一方面,数据分发需要在应用层实现,大幅度增加了设计开发的复杂度和工作量;另一方面,数据分发代码和业务逻辑代码混杂在一起,导致应用层的代码被污染而难以维护。

为解决这些问题,本公开在应用和数据库实例间增加中间件层。图2示例性示出了本公开访问数据库的方法的数据发布流程示意图。如图2所示,新版本应用和旧版本应用都通过中间件访问新旧版本数据库实例。

在实施本公开访问数据库的方法之前,需要构建数据库变更信息表。首先结合图3描述构建数据库变更信息表的一些实施例。

图3示出了构建数据库变更信息表的一些实施例的流程示意图。如图3所示,本实施例包括步骤S301~步骤S302。

在步骤S301中,利用新版数据库中变更后的一个元素与对应的旧版数据库中变更前的一个元素,构建新版数据库与旧版数据库之间的一项元素变更信息。

例如,可以通过DSL(Domain-Specific Languages,领域特定语言)定义新版数据库与旧版数据库之间的元素变更信息,从元素类型和新旧版本两个维度定义该元素变更信息以描述新旧版本数据库的变更策略。比如,新版数据库在旧版数据库基础上新增了某个字段,则元素变更信息中的元素类型为字段,旧版本的值为空,新版本值为新增字段名。再比如,新版数据库在旧版数据库基础上修改了某个字段名,则元素变更信息中的元素类型为字段,旧版本值为原字段名,新版本值为新字段名。

在步骤S302中,利用新版数据库与旧版数据库之间的各项元素变更信息,构建数据库变更信息表。

表1示例性示出了数据库变更信息表。将新版数据库与旧版数据库之间的各项元素变更信息组合在一起,形成数据库变更信息表,以便后续查询数据库变更信息表确定数据库访问请求中的目标访问元素(SQL语句要访问的目标元素)是否涉及新版数据库与旧版数据库之间的变更内容。

表1

下面结合图4描述本公开访问数据库的方法的一些实施例。

图4出了本公开访问数据库的方法的一些实施例的流程示意图。如图4所示,本实施例包括步骤S401~步骤S403。

在步骤S401中,中间件解析应用发送的数据库访问请求,获得数据库访问请求中的目标访问元素。

应用访问数据服务发送的数据库访问请求,包括新版应用发送的数据库访问请求和旧版应用发送的数据库访问请求。中间件对应用发送的数据库访问请求(来访的SQL语句)进行解析,能够得到SQL语句的请求类型(包括增加、删除、修改、查询)、SQL语句包含的对象(包括表、视图、函数、存储过程等)、SQL语句包含的字段(包括查询字段、条件字段等)。

在步骤S402中,中间件利用目标访问元素匹配数据库变更信息表,得到目标访问元素的匹配结果。

其中,数据库变更信息表包含新版数据库与旧版数据库之间的各项元素变更信息,元素变更信息包括变更前的元素及变更后的元素。比如,目标访问元素为A,则匹配结果为(字段,A,B);再比如,目标访问元素为D,则匹配结果为(字段,C,D)。

在步骤S403中,中间件根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库。

下面结合图5描述步骤S403中间件将数据库访问请求路由至数据库的过程。图5出了中间件将数据库访问请求路由至数据库的一些实施例的流程示意图。如图5所示,本实施例包括步骤S5031~步骤S5037。

在步骤S5030中,中间件判断是否匹配成功。

中间件根据SQL请求语句中的目标访问元素与数据库变更信息表的匹配结果,决定是否需要修改SQL请求语句中的内容。即,中间件判断SQL请求语句中的各个元素是否涉及新版数据库与旧版数据库之间的各项元素变更信息。

若匹配成功,目标访问元素的匹配结果为目标访问元素对应的元素变更信息。即,目标访问元素涉及变更,需要修改SQL请求语句,并修改SQL请求语句的情况决定SQL请求语句的路由终点。根据这种情况下执行步骤S5031。

在步骤S5031中,中间件复制数据库访问请求,得到原数据库访问请求和复制的数据库访问请求。

在步骤S5032中,中间件判断目标访问元素为匹配结果中变更前的元素还是变更后的元素。

若目标访问元素为匹配结果中变更前的元素,则执行步骤S5033~步骤S5034。

在步骤S5033中,中间件将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更后的元素。

本领域技术人员应理解,本实施例也支持表、字段等元素的新增或删除情况。如果新版数据库在旧版数据库的基础上新增加了字段,则可以将数据库访问请求中的新增加字段移除。

在步骤S5034中,中间件将复制的数据库访问请求路由至新版数据库,并将原数据库访问请求路由至旧版数据库。

若目标访问元素为匹配结果中变更后的元素,则执行步骤S5035~步骤S5036。

在步骤S5035中,中间件将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更前的元素。

在步骤S5036中,中间件将复制的数据库访问请求路由至旧版数据库,并将原数据库访问请求路由至新版数据库。

若匹配失败,目标访问元素的匹配结果空。即,目标访问元素不涉及变更,不需要修改SQL请求语句。这种情况下直接对数据库访问请求进行路由。

这种情况下执行步骤S5037。

在步骤S5037中,中间件将数据库访问请求分别路由至新版数据库及旧版数据库。

本实施例利用预先建立的数据库变更信息表,配合中间件对SQL请求的解析、匹配、动态修改、动态路由,能够在不修改应用的前提下实现应用向不同数据库进行数据分发。因此,本实施例不需要在应用层增加关于数据分发的代码,减少了开发新版本应用及新版本数据库的约束,降低了开发新版本应用及新版本数据库的复杂度。

下面结合图6描述本公开中间件的一些实施例。

图6示出了本公开中间件的一些实施例的结构示意图。如图6所示,本实施例中的中间件60包括:

请求解析模块601,被配置为解析应用发送的数据库访问请求,获得数据库访问请求中的目标访问元素;信息匹配模块602,被配置为利用目标访问元素匹配数据库变更信息表,得到目标访问元素的匹配结果;数据库变更信息表包含新版数据库与旧版数据库之间的各项元素变更信息,元素变更信息包括变更前的元素及变更后的元素;路由模块603,被配置为根据目标访问元素的匹配结果,将数据库访问请求路由至新版数据库或旧版数据库。

在一些实施例中,目标访问元素的匹配结果为目标访问元素对应的元素变更信息;路由模块603包括:请求复制单元6031,被配置为复制数据库访问请求,得到原数据库访问请求和复制的数据库访问请求;请求修改单元6032,被配置为:若目标访问元素为匹配结果中变更前的元素,将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更后的元素;请求路由单元6033,被配置为:将复制的数据库访问请求路由至新版数据库,并将原数据库访问请求路由至旧版数据库。

在一些实施例中,请求修改单元6032还被配置为:若目标访问元素为匹配结果中变更后的元素,将复制的数据库访问请求中的目标访问元素修改为匹配结果中变更前的元素;请求路由单元6033还被配置为:将复制的数据库访问请求路由至旧版数据库,并将原数据库访问请求路由至新版数据库。

在一些实施例中,目标访问元素的匹配结果空,路由模块603被配置为:将数据库访问请求分别路由至新版数据库及旧版数据库。

上述实施例利用预先建立的数据库变更信息表,配合中间件对SQL请求的解析、匹配、动态修改、动态路由,能够在不修改应用的前提下实现应用向不同数据库进行数据分发。因此,本实施例不需要在应用层增加关于数据分发的代码,减少了开发新版本应用及新版本数据库的约束,降低了开发新版本应用及新版本数据库的复杂度。

在一些实施例中,该中间件还包括信息表构建模块600,被配置为:利用新版数据库中变更后的一个元素与对应的旧版数据库中变更前的一个元素,构建新版数据库与旧版数据库之间的一项元素变更信息;利用新版数据库与旧版数据库之间的各项元素变更信息,构建数据库变更信息表。

下面结合图7描述本公开访问数据库的装置的一些实施例。

图7示出了本公开访问数据库的装置的一些实施例的结构示意图。如图7所示,该实施例的访问数据库的装置70包括:存储器710以及耦接至该存储器710的处理器720,处理器720被配置为基于存储在存储器710中的指令,执行前述任意一些实施例中的访问数据库的方法。

其中,存储器710例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。

访问数据库的装置70还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730、740、750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口。存储接口750为SD卡、U盘等外置存储设备提供连接接口。

本公开还包括一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述任意一些实施例中的访问数据库的方法。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

相关技术
  • 访问数据库的方法、装置、中间件及计算机可读存储介质
  • 数据库访问方法、装置、计算机可读存储介质和计算机设备
技术分类

06120112901160