基于动态多数据源的数据库适配装置及方法与流程

文档序号:29495180发布日期:2022-04-06 14:58阅读:来源:国知局

技术特征:
1.基于动态多数据源的数据库适配装置,其特征在于用于封装底层数据库差异,所述装置包括:内存数据库,所述内存数据库用于存储数据源信息,所述数据源信息包括数据源编码和数据源具体信息,所述数据源具体信息包括数据库类型和数据库连接信息;数据库关键字库,所述数据库关键字库用于存储已适配数据库类型的所有关键字;语法差异库,所述语法差异库用于存储语法差异,所述语法差异为关系型数据库之间语法内容的差异;语法适配器,所述语法适配器与所述内存数据库、数据库关键字库以及语法差异库交互,用于接收由sql语句和数据库信息组成的参数,所述数据库信息为数据库编码或数据源具体信息,用于基于数据库信息获取数据库类型,并基于数据库类型对sql语句进行语法解析和转换,得到适配sql语句;sql执行器,所述sql执行器与所述语法适配器交互,用于基于数据库类型加载驱动对应的数据库,数据库执行适配sql语句后输出执行结果。2.根据权利要求1所述的基于动态多数据源的数据库适配装置,其特征在于所述语法差异的内容包括:分页差异,所述分页差异为不同数据库之间的分页语法;字段映射,所述字段映射为不同数据库不同字段类型映射,字段映射用于ddl语句执行,支撑数据库表创建;函数差异,所述函数差异为各类数据库内置函数映射信息,函数信息用于查询sql执行;所述语法差异的内容分别以库表的形式存储于语法差异库中。3.根据权利要求1或2所述的基于动态多数据源的数据库适配装置,其特征在于所述语法适配器用于通过如下步骤得到适配sql语句:基于数据库关键字库中已适配数据库类型的所有关键字,对sql语句进行语句关键字解析,得到解析后sql语句;如果数据库信息为数据源编码,则从内存数据库中查询对应的数据库类型,如果数据库信息为数据源具体信息,则读取数据库类型;基于数据库类型从语法差异库中查询对应的sql语句模板;基于解析后sql语句对sql语句模板进行变量替换,得到适配sql语句。4.根据权利要求1或2所述的基于动态多数据源的数据库适配装置,其特征在于所述sql执行器用于通过如步骤实现基于数据库类型加载驱动对应的数据库:如果接收的数据库信息为数据源编码,从内存数据库中查询对应的数据库连接信息,如果接收的数据库信息为数据源具体信息,则读取数据库连接信息;基于数据库连接信息,判断连接池中是否存在连接;如果存在,将适配后sql语句加载至对应数据库,以便于对应数据库执行适配后sql语句并返回执行结果;如果不存在,基于数据库连接信息动态创建数据库驱动,并基于数据库驱动创建连接,建立连接后,将适配后sql语句加载至对应数据库,以便于对应数据库执行适配sql语句后输出执行结果。
5.根据权利要求1或2所述的基于动态多数据源的数据库适配装置,其特征在于所述装置适配有数据服务接口,所述数据服务接口保存于数据库配置表中,用于基于多源数据库表配置查询接口的出参、入参、请求方式以及请求url信息,并用于基于出参及入参生成对应的sql语句;所述装置启动时,基于数据源信息调用对应的数据服务接口,并将数据服务接口信息加载至内存数据库中,在内存数据库中,key为请求url,value为对应的数据源信息或对应的数据源信息和sql语句,所述装置基于传入的url查询对应的sql语句和数据源信息,将所述sql语句和数据源信息作为接收参数。6.基于动态多数据源的数据库适配方法,其特征在于应用于如权利要求1-5任一项所述的基于动态多数据源的数据库适配装置,所述方法包括如下步骤:在内存数据库中预存储数据源信息,所述数据源信息包括数据源编码和数据源具体信息,所述数据源具体信息包括数据库类型和数据库连接信息;在数据库关键字库中预存储已适配数据库类型的所有关键字;在语法差异库中预存储语法差异,所述语法差异为关系型数据库之间语法内容的差异;接收由sql语句和数据库信息组成的参数,所述数据库信息为数据库编码或数据源具体信息,基于数据库信息获取数据库类型,并基于数据库类型对sql语句进行语法解析和转换,得到适配sql语句;基于数据库类型加载驱动对应的数据库,数据库执行适配sql语句后输出执行结果。7.根据权利要求6所述的基于动态多数据源的数据库适配方法,其特征在于所述语法差异的内容包括:分页差异,所述分页差异为不同数据库之间的分页语法;字段映射,所述字段映射为不同数据库不同字段类型映射,字段映射用于ddl语句执行,支撑数据库表创建;函数差异,所述函数差异为各类数据库内置函数映射信息,函数信息用于查询sql执行;所述语法差异的内容均以库表的形式存储于语法差异库中。8.根据权利要求6或7所述的基于动态多数据源的数据库适配方法,其特征在于通过如下步骤得到适配sql语句:基于数据库关键字库中已适配数据库类型的所有关键字,对sql语句进行语句关键字解析,得到解析后sql语句;如果数据库信息为数据源编码,则从内存数据库中查询对应的数据库类型,如果数据库信息为数据源具体信息,则读取数据库类型;基于数据库类型从语法差异库中查询对应的sql语句模板;基于解析后sql语句对sql语句模板进行变量替换,得到适配sql语句。9.根据权利要求6或7所述的基于动态多数据源的数据库适配方法,其特征在于通过如步骤实现基于数据源编码加载驱动对应的数据库:如果接收的数据库信息为数据源编码,从内存数据库中查询对应的数据库连接信息,如果接收的数据库信息为数据源具体信息,则读取数据库连接信息;
基于数据库连接信息,判断连接池中是否存在连接;如果存在,将适配后sql语句加载至对应数据库,以便于对应数据库执行适配sql语句后输出执行结果;如果不存在,基于数据库连接信息动态创建数据库驱动,并基于数据库驱动创建连接,建立连接后,将适配后sql语句加载至对应数据库,以便于对应数据库执行适配sql语句后输出执行结果。10.根据权利要求6或7所述的基于动态多数据源的数据库适配方法,其特征在于所述装置启动时,基于数据源信息调用对应的数据服务接口,并将数据服务接口信息加载至内存数据库中,在内存数据库中,key为请求url,value为对应的数据源信息或对应的数据源信息和sql语句,所述装置基于传入的url查询对应的sql语句和数据源信息,将所述sql语句和数据源信息作为接收参数;所述数据服务接口保存于数据库配置表中,用于基于多源数据库表配置查询接口的出参、入参、请求方式以及请求url信息,并用于基于出参及入参生成对应的sql语句。

技术总结
本发明公开了基于动态多数据源的数据库适配装置及方法,属于数据库技术领域,要解决的技术问题为如何解决动态对接多源数据执行开发复杂度高。包括:内存数据库,用于存储数据源信息;数据库关键字库,用于存储已适配数据库类型的所有关键字;语法差异库,用于存储语法差异,所述语法差异为关系型数据库之间语法内容的差异;语法适配器,用于基于数据库信息获取数据库类型,并基于数据库类型对SQL语句进行语法解析和转换,得到适配SQL语句;SQL执行器,所述SQL执行器与所述语法适配器交互,用于基于数据库类型加载驱动对应的数据库,数据库执行适配SQL语句后,输出执行结果。输出执行结果。输出执行结果。


技术研发人员:周双 张兆勇
受保护的技术使用者:浪潮软件股份有限公司
技术研发日:2021.12.06
技术公布日:2022/4/5
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1