一种多种数据库混合使用的代理方法及装置制造方法及图纸

技术编号:37606867 阅读:12 留言:0更新日期:2023-05-18 11:58
本发明专利技术的实施例公开了一种多种数据库混合使用的代理方法及装置,方法包括:采集多种数据库的信息,确定各项数据表的数据库来源和各项数据表对应的数据库信息,得到数据表配置;接收数据表查询请求,找到待查询的一个或多个数据库,启动对应数据库的连接通信,对数据库进行连接初始化动作;接收查询语句,使用预设的语法规则对所述查询语句进行解构,在对应的一个或多个数据库中找到调用的数据表。装置包括:配置中心模块,初始化模块,socket通信模块,语句解构模块,节点管理模块,执行调用模块和函数计算调用模块。本发明专利技术能够实现从不同的数据库进行查询并进行不同数据类型的关联和组合,解决了目前混用数据库无法进行统一管理的问题。理的问题。理的问题。

【技术实现步骤摘要】
一种多种数据库混合使用的代理方法及装置


[0001]本专利技术涉及计算机
,特别涉及一种多种数据库混合使用的代理方法及装置。

技术介绍

[0002]随着近些年来互联网和云计算的快速发展和普及,互联网业务数据量日渐庞大,很多服务端软件依赖的数据库从关系型数据库到文档型数据库,从单一数据库到多种数据库进行混合使用。
[0003]目前多数据库混合使用,绝大部分是通过orm框架来实现不同数据库的驱动,从而达到多数据库使用的目的。但是ORM有其自己的局限性:其一,不同的ORM适配不同类型的数据库,比如NoSQL数据库的ORM是很难在关系型数据库中使用的。其二,ORM无法达到定义一种数据结构,各字段的数据源自不同数据库。只能通过代码来进行实现。
[0004]还有一种办法是通过数据库代理中间件来解决。但目前数据库代理中间件通常面向的是数据库分库分表的代理层应用,解决的是海量数据情况的分库分表问题,而不是不同数据库的数据聚合问题,其简化了大数据量下单数据库操作的复杂度,并没有降低多种数据来源下操作的复杂度。

技术实现思路

[0005]有鉴于此,本专利技术实施例的目的在于提供一种多种数据库混合使用的代理方法及装置,能够实现从不同的数据库进行查询并进行不同数据类型的关联和组合,解决了目前混用数据库无法进行统一管理的问题。
[0006]第一方面,本专利技术实施例提供了一种多种数据库混合使用的代理方法,其中,包括:
[0007]采集多种数据库的信息,确定各项数据表的数据库来源和各项数据表对应的数据库信息,得到数据表配置。
[0008]接收数据表查询请求,在数据表配置中找到待查询的一个或多个数据库,启动对应数据库的连接通信,对数据库进行连接初始化动作。
[0009]接收用于调用数据表的查询语句,使用预设的语法规则对所述查询语句进行解构,在对应的一个或多个数据库中找到调用的数据表。
[0010]结合第一方面,本专利技术实施例提供了第一方面的第一种可能的实施方式,其中,所述各项数据表对应的数据库信息包括:
[0011]数据表对应的数据库类型。
[0012]数据表对应的数据库名。
[0013]数据表对应的数据库连接信息。
[0014]结合第一方面,本专利技术实施例提供了第一方面的第二种可能的实施方式,其中,所述启动对应数据库的连接通信,对数据库进行连接初始化动作,包括:
[0015]根据待查询的一个或多个数据库,启动对应的一个或多个数据库的socket通信端口。
[0016]根据所述数据表配置,获取待查询的一个或多个数据库的相关配置。
[0017]根据获取的相关配置,对待查询的一个或多个数据库进行连接初始化动作。
[0018]结合第一方面,本专利技术实施例提供了第一方面的第三种可能的实施方式,其中,接收用于调用数据表的查询语句后,根据当前网络连接的繁忙状态,判断是否进行对所述查询语句进行解构。
[0019]若网络连接超过阈值,则暂停对所述查询语句进行解构。
[0020]若网络连接未超过阈值,则继续对所述查询语句进行解构。
[0021]结合第一方面,本专利技术实施例提供了第一方面的第四种可能的实施方式,其中,所述使用预设的语法规则对所述查询语句进行解构,包括:
[0022]所述预设的语法规则采用MySQL词法或语法规则。
[0023]使用MySQL词法或语法规则对所述查询语句校验,若通过,则生成各项数据表节点之间运算关系的关系图。
[0024]在关系图的最底层级中找到需要调用的数据表,若没有找到,则返回所述查询语句不合法。
[0025]结合第一方面,本专利技术实施例提供了第一方面的第五种可能的实施方式,其中,所述在对应的一个或多个数据库中找到调用的数据表:
[0026]若所述查询语句查询的各数据表的节点属于同一个数据库,则直接通过MySQL执行,得到调用的数据表。
[0027]若所述查询语句查询的各数据表的节点属于不同数据库,则对各节点分别进行MySQL执行后,进行函数计算,得到调用的数据表结果集。
[0028]结合第一方面,本专利技术实施例提供了第一方面的第六种可能的实施方式,其中,所述函数计算包括:
[0029]根据各节点之间的运算关系进行笛卡尔积运算。
[0030]将运算后的节点数据进行标记,得到tmp节点。
[0031]将tmp节点进行向上递归运算,得到调用的数据表结果集。
[0032]结合第一方面,本专利技术实施例提供了第一方面的第七种可能的实施方式,其中,各项数据表节点之间的运算关系包括:
[0033]平级关联关系,所述平级关联关系包括各数据表节点之间的左联接(leftjoin)、右联接(rightjoin)和内部联接(join、innerjoin)。
[0034]指定连接关系,通过设置as关键字,临时在各数据表的节点之间生成指定tmp节点。
[0035]来源关系,通过设置from关键字,确定各数据表节点在数据库中对应的层级。
[0036]第二方面,本专利技术实施例还提供了一种多种数据库混合使用的代理装置,其中,包括:
[0037]配置中心模块,用于采集多种数据库的信息,确定各项数据表的数据库来源和各项数据表对应的数据库信息,得到数据表配置。
[0038]初始化模块,用于接收数据表查询请求,在数据表配置中找到待查询的一个或多
个数据库,启动对应数据库的连接通信,对数据库进行连接初始化动作。
[0039]socket通信模块,用于接收调用数据表的查询语句。
[0040]语句解构模块,用于使用MySQL词法或语法规则对所述查询语句进行解构,在对应的一个或多个数据库中找到调用的数据表。
[0041]节点管理模块,用于使用MySQL词法或语法规则对所述查询语句校验,若通过,则生成各项数据表节点之间运算关系的关系图。
[0042]执行调用模块,用于若所述查询语句查询的各数据表的节点属于同一个数据库,则直接通过MySQL执行,得到调用的数据表。
[0043]函数计算调用模块,用于若所述查询语句查询的各数据表的节点属于不同数据库,则对各节点分别进行MySQL执行后,进行函数计算,得到调用的数据表结果集。
[0044]结合第二方面,本专利技术实施例提供了第二方面的第一种可能的实施方式,其中,所述函数计算调用模块包括:
[0045]笛卡尔积运算单元,用于根据各节点之间的运算关系进行笛卡尔积运算。
[0046]节点标记单元,用于将运算后的节点数据进行标记,得到tmp节点。
[0047]递归运算单元,用于将tmp节点进行向上递归运算,得到调用的数据表结果集。
[0048]本专利技术实施例的有益效果是:
[0049]本专利技术通过预定义查询语句中表的来源,可以执行不同数据库来源(连表使用不同数据库来源)的增删改查语句。语法采用MySQL标准语法,减少使用成本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多种数据库混合使用的代理方法,其特征在于,包括:采集多种数据库的信息,确定各项数据表的数据库来源和各项数据表对应的数据库信息,得到数据表配置;接收数据表查询请求,在数据表配置中找到待查询的一个或多个数据库,启动对应数据库的连接通信,对数据库进行连接初始化动作;接收用于调用数据表的查询语句,使用预设的语法规则对所述查询语句进行解构,在对应的一个或多个数据库中找到调用的数据表。2.根据权利要求1所述的多种数据库混合使用的代理方法,其特征在于,所述各项数据表对应的数据库信息包括:数据表对应的数据库类型;数据表对应的数据库名;数据表对应的数据库连接信息。3.根据权利要求1所述的多种数据库混合使用的代理方法,其特征在于,所述启动对应数据库的连接通信,对数据库进行连接初始化动作,包括:根据待查询的一个或多个数据库,启动对应的一个或多个数据库的socket通信端口;根据所述数据表配置,获取待查询的一个或多个数据库的相关配置;根据获取的相关配置,对待查询的一个或多个数据库进行连接初始化动作。4.根据权利要求1所述的多种数据库混合使用的代理方法,其特征在于,接收用于调用数据表的查询语句后,根据当前网络连接的繁忙状态,判断是否进行对所述查询语句进行解构;若网络连接超过阈值,则暂停对所述查询语句进行解构;若网络连接未超过阈值,则继续对所述查询语句进行解构。5.根据权利要求1所述的多种数据库混合使用的代理方法,其特征在于,所述使用预设的语法规则对所述查询语句进行解构,包括:所述预设的语法规则采用MySQL词法或语法规则;使用MySQL词法或语法规则对所述查询语句校验,若通过,则生成各项数据表节点之间运算关系的关系图;在关系图的最底层级中找到需要调用的数据表,若没有找到,则返回所述查询语句不合法。6.根据权利要求5所述的多种数据库混合使用的代理方法,其特征在于,所述在对应的一个或多个数据库中找到调用的数据表:若所述查询语句查询的各数据表的节点属于同一个数据库,则直接通过MySQL执行,得到调用的数据表;若所述查询语句查询的各数据表的节点属于不同数据库,则对各节点分...

【专利技术属性】
技术研发人员:王显宇姚纪卫张东升
申请(专利权)人:安芯网盾北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1