CN114706918B - 一种多类型数据库兼容方法、装置、设备、存储介质 - Google Patents
一种多类型数据库兼容方法、装置、设备、存储介质 Download PDFInfo
- Publication number
- CN114706918B CN114706918B CN202210611860.3A CN202210611860A CN114706918B CN 114706918 B CN114706918 B CN 114706918B CN 202210611860 A CN202210611860 A CN 202210611860A CN 114706918 B CN114706918 B CN 114706918B
- Authority
- CN
- China
- Prior art keywords
- plug
- database
- preset
- type
- different
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种多类型数据库兼容方法、装置、设备、存储介质,应用于handler处理器,涉及数据库技术领域,包括:当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。通过本申请的技术方案,可以解决系统的多数据库兼容问题。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种多类型数据库兼容方法、装置、设备、存储介质。
背景技术
在大多数面向企业的项目中,经常会出现不同的客户对系统的数据库类型有不同的要求。在数据库方面,不同的数据库之间会存在一些差异性,比如关键字的区别,又比如部分数据库执行SQL(Structured Query Language:结构化查询语言)语句时,表名必须加上引号等;而针对不同类型的数据,不同的客户也可能会有不同的要求,比如大多数业务数据直接使用关系型数据库即可,但针对日志数据很多客户会要求使用非关系型数据库存储,此时就出现了一个项目中需要兼容多种数据库的需求。目前绝大多数系统都无法做到友好的兼容各类数据库,想要在系统中同时兼容多种数据库,正常的处理方式需要对每种数据库的操作进行定制开发,即针对每一种数据库分出一个单独的分支去开发,这样极大的增加了系统的开发和维护的成本,且随着业务的发展,这个问题会愈发严峻,很可能会导致整个系统需要推倒重构。市场上更多的做法是自行开发一套框架去支持,但是成本高且成效较低,方向上也主要针对非国产的关系型数据库。
为了解决以上描述中针对不同数据库需要单独开分支去定制开发所带来的时间成本及维护的困难程度问题,业内也出现过其他一些解决的方案,主流方式如下:
(1)360的QuickSql引擎,该引擎对外提供统一的查询范式,屏蔽底层数据源和操作细节,让业务人员摆脱加工数据的技术束缚,其使用Apache Calcite(开源SQL解析工具)作为上层解析器,通过多一次解析搞清楚用户的查询意图,再向对应引擎解释路由,让合适的引擎做合适的事儿。虽然QuickSql引擎可以通过多一次解析的方式解决不同数据库之间的兼容问题,但也同样会引出其它问题:因为其引擎相对较重不够轻量化,所以在项目集成中成本较高;因为多一次的解析在实际业务中也会对系统的执行效率产生一定影响,特别是在某些对效率要求较高的业务中,该问题可能会造成系统的瓶颈;由于增加了执行引擎,系统的稳定性会受到引擎的影响,假如引擎出现故障,将导致整个系统出现瘫痪。
(2)在CN113742558A中,包含了另一类数据库兼容的方案,其出发点在于对查询关键字的解析,并不依赖于SQL解析,这个方案在实现上其实并不如第一种SQL解析的方式简单,它需要提取关键词生成查询关键字段,并根据查询关键字段生成与各数据库对应的查询该查询关键字段的数据库查询语句,获取含有查询关键字段的信息并对这些信息进行排序,生成各数据库的分序表以及整合的总序表,对分序表和总序表进行可视化处理后推送到舆情分析平台,实现同时对多数据库信息进行查询。该方式可支持非关系型数据库的操作,但也同样因为需要对关键字段提取和解析相当于其需要自行开发一套类似ApacheCalcite的解析框架,由于该框架还需要实现对非关系型数据库的支持,其实现成本和后期维护扩展的成本将会大大提高。
综上,如何轻量化的实现多种关系型数据库与非关系型数据库的兼容,并且降低对系统稳定性的影响是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种多类型数据库兼容方法、装置、设备、存储介质,能够轻量化的实现多种关系型数据库与非关系型数据库的兼容,并且降低对系统稳定性的影响。其具体方案如下:
第一方面,本申请公开了一种多类型数据库兼容方法,应用于handler处理器,包括:
当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;
根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;
基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。
可选的,所述当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型之前,还包括:
在所述业务系统启动时根据所述预设配置文件加载所述预设插件库;
将所述预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例以键值对的记录方式进行存储,以得到所述映射数据集。
可选的,所述在所述业务系统启动时根据所述预设配置文件加载所述预设插件库,包括:
在所述业务系统启动时根据所述预设配置文件利用所述串行外设接口机制加载所述预设插件库。
可选的,所述当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型,包括:
当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的对所述数据库进行增加、检索、更新以及删除中的一项或多项的操作类型。
可选的,所述基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作,包括:
向所述业务系统中添加包含所述对所述数据库进行增加、检索、更新以及删除操作的预置接口;
基于串行外设接口机制,通过所述预置接口根据所述插件实例对所述数据库执行相应的增加、检索、更新或删除操作。
可选的,所述根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例,包括:
根据预设配置文件中的配置项获取目标插件类型;
确定出所述目标插件类型中与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例。
可选的,所述的多类型数据库兼容方法,还包括:
当所述预设插件库中的当前插件存在故障时,生成错误日志并通知所述业务平台,以便所述业务平台将所述当前插件的类型切换为其他的插件类型。
第二方面,本申请公开了一种多类型数据库兼容装置,应用于handler处理器,包括:
操作类型确定模块,用于当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;
插件实例获取模块,用于根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;
操作执行模块,用于基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。
第三方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如前所述的多类型数据库兼容方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如前所述的多类型数据库兼容方法。
本申请中,应用于handler处理器,当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。可见,系统从发起操作到真正对数据库执行相应的操作时,利用handler处理器监测业务系统对数据库的操作请求,当有对数据库的操作请求时,从预设配置文件中匹配与当前操作对应的目标插件,进而在预设插件库中获取对应的插件实例。由于预设插件库中所有的插件都是独立的,所以系统基于串行外设接口机制配合插件化的方式,不仅可以使系统能方便的支持兼容包含国产数据库及非关系型数据库,还可以在加载和使用的过程中有部分插件出现故障时,不会直接导致系统瘫痪;另外,可根据预设配置文件动态管理插件的加载与匹配,不必让整个系统必须具备所有数据库的执行能力,按需加载即可,从而使得系统更加轻量化。如此一来,使业务系统屏蔽了各种数据库的差异性,业务开发者不需要再针对不同的数据库增加开发及维护的成本,解决系统的多数据库兼容问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种多类型数据库兼容方法流程图;
图2为本申请公开的一种多类型数据库兼容方法逻辑示意图;
图3为本申请公开的一种具体的多类型数据库兼容方法流程图;
图4为本申请公开的一种通过预置接口以SPI方式操作数据库的示意图;
图5为本申请公开的一种具体的多类型数据库兼容方法示意图;
图6为本申请公开的一种多类型数据库兼容装置结构示意图;
图7为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,在大多数面向企业的项目中,经常会出现不同的客户对系统的数据库类型有不同的要求,但是绝大多数系统都无法做到友好的兼容各类数据库。
为此,本申请提供了一种多类型数据库兼容方案,能够轻量化的实现多种关系型数据库与非关系型数据库的兼容,并且降低对系统稳定性的影响。
本发明实施例公开了一种多类型数据库兼容方法,参见图1所示,应用于handler处理器,该方法包括:
步骤S11:当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型。
本申请实施例中,业务系统指各种软件程序的业务功能代码模块,比如电商系统中的商品模块、订单模块、库存模块等。当业务系统中有需要对数据库进行操作的操作请求时,会确定出与操作请求对应的操作类型。
需要指出的是,业务系统发起的操作请求可以为CRUD操作,指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)的操作,也即,当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的对所述数据库进行增加、检索、更新以及删除中的一项或多项的操作类型。可以理解的是,在对数据库进行操作时,可以不止只进行一次操作,可以进行多次操作,所以需要确定出CRUD操作中的一项或多项操作类型。
步骤S12:根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件。
本申请实施例中,当确定出与操作请求对应的操作类型后,handler处理器会根据预设配置文件中的配置项找到当前操作匹配的目标插件名称,需要指出的是,handler处理器集成了一段针对某个功能的逻辑处理代码,可以是一个简单的方法,也可以是一个相对复杂的功能,当业务系统发起CRUD操作时,先将操作指令发送给handler处理器,在handler处理器在接收到包含对数据库进行CRUD操作的指令后则会根据预设配置文件中的配置项检索出当前操作所匹配的插件名称。
本申请实施例中,业务系统在启动时,会根据预设配置文件加载预设插件库;其中,预设插件库中保存了与不同类型的数据库对应的不同的插件,可以是不同关系型数据库中的不同插件,也可以是不同非关系型数据库中的不同插件,在此不作具体限定。需要指出的是,将预设插件库中不同的插件名称和与不同的插件名称对应的插件实例以键值对的记录方式进行存储,得到映射数据集。如此一来,从映射数据集中可以获取与所述目标插件名称对应的插件实例。
本申请实施例中,利用串行外设接口(Service Provider Interface,SPI)机制根据预设配置文件加载预设插件库,可以理解的是,配置文件是一种计算机文件,可以为一些计算机程序配置参数和初始设置,在软件开发中常用于储存程序启动时需要加载的数据。由于SPI机制正常会将所有插件同时加载,所以利用预设配置文件可自行定制加载方法按需加载。
本申请实施例中,预设插件库中的所有插件都是独立的,在加载和使用的过程中,当有部分插件出现故障时,如果是正在使用的当前插件存在故障,最坏的情况也只是当前类型的数据库操作无法执行,而不会直接导致系统瘫痪。所以可以进一步的生成错误日志并通知所述业务平台,以便所述业务平台将所述当前插件的类型切换为其他的插件类型。
步骤S13:基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。
本申请实施例中,以SPI的方式去实现各种数据库的具体操作方法的实现逻辑,也即,基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。
需要指出的是,在业务系统中会定义一个预置接口,该接口类中应包含常用的对数据库进行增加、检索、更新以及删除操作的接口方法,如此一来,可以基于串行外设接口机制,通过所述预置接口根据所述插件实例对所述数据库执行相应的增加、检索、更新或删除操作。
如图2所示为本申请实施例中实现多数据库兼容的逻辑处理图,首先在系统中提供抽象的CRUD接口;以SPI方式实现项目所需的各类数据库的具体操作逻辑;程序启动时需根据配置文件加载当前所需的插件类型,当业务系统发起CRUD操作时,先将操作指令发送给handler处理器,handler处理器在接收到指令后会根据配置文件中的配置项检索出当前操作所匹配的插件;根据返回的插件类型再从插件库中获取插件实例及对应的操作具体实现方法;通过插件提供的方法向数据库发起具体的CRUD操作。需要指出的是,系统从发起操作到真正执行CRUD操作,中间经过了handler处理器和具体的插件实现方法,正常情况下只需要执行具体方法即可,方案中多了一层handler处理器,但在handler处理器中仅仅只操作了从配置文件中匹配插件的逻辑,在实际业务中对效率的影响微乎其微,不会在此处给系统带来瓶颈。
本申请中,应用于handler处理器,当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。可见,系统从发起操作到真正对数据库执行相应的操作时,利用handler处理器监测业务系统对数据库的操作请求,当有对数据库的操作请求时,从预设配置文件中匹配与当前操作对应的目标插件,进而在预设插件库中获取对应的插件实例。由于预设插件库中所有的插件都是独立的,所以系统基于串行外设接口机制配合插件化的方式,不仅可以使系统能方便的支持兼容包含国产数据库及非关系型数据库,还可以在加载和使用的过程中有部分插件出现故障时,不会直接导致系统瘫痪;另外,可根据预设配置文件动态管理插件的加载与匹配,不必让整个系统必须具备所有数据库的执行能力,按需加载即可,从而使得系统更加轻量化。如此一来,使业务系统屏蔽了各种数据库的差异性,业务开发者不需要再针对不同的数据库增加开发及维护的成本,解决系统的多数据库兼容问题。
本申请实施例公开了一种具体的多类型数据库兼容方法,参见图3所示,该方法包括:
步骤S21:当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型。
其中,关于上述步骤S21更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
步骤S22:根据预设配置文件中的配置项获取目标插件类型。
由于一个业务系统并不需要同时支持所有插件,所以本申请实施例中,业务系统在启动时可以根据预设配置文件加载当前所需的插件类型。例如当前业务系统有对数据库进行增加的操作请求,则可以根据预设配置文件中的配置项可以获取不同类型数据库中有关增加类型的目标插件类型。
步骤S23:确定出所述目标插件类型中与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例。
本申请实施例中,当确定出目标插件类型后,再确定出目标插件类型中与所述操作类型匹配的目标插件名称。例如,确定出对数据库进行增加操作的目标插件类型后,再确定出对哪个数据库进行增加数据的操作,如对MySQL数据库进行增加操作的目标插件名称,然后根据映射数据集中的映射关系获取与目标插件名称对应的插件实例。
如图4、图5所示为一种具体的以Java语言为例实现多类型数据库的方法。图4中在系统定义一个接口BaseDao,该接口类中应包含常用的CRUD接口方法,另起一个插件模块,以SPI的方式去实现各种数据库的具体操作方法的实现逻辑,如MysqlDaoImpl、EsDaoImpl等;图5中,业务系统在启动时根据配置文件中的配置去加载插件库,加载后的插件会以插件名称对应具体插件实例的形式存入handler处理器中的一个Map集合中,当系统通过BaseDao的实例去执行CRUD方法时,会将指令传入handler处理器;handler处理器根据配置文件中的配置找到当前操作匹配的插件名称;handler处理器根据具体的插件名称从Map集合中获取对应的插件实例并以该实例向数据库发起真正的CRUD操作。
步骤S24:基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。
其中,关于上述步骤S24更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请中,应用于handler处理器,当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;根据预设配置文件中的配置项获取目标插件类型;确定出所述目标插件类型中与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。可见,系统从发起操作到真正对数据库执行相应的操作时,利用handler处理器监测业务系统对数据库的操作请求,当有对数据库的操作请求时,从预设配置文件中匹配与当前操作对应的目标插件,进而在预设插件库中获取对应的插件实例。由于预设插件库中所有的插件都是独立的,所以系统基于串行外设接口机制配合插件化的方式,不仅可以使系统能方便的支持兼容包含国产数据库及非关系型数据库,还可以在加载和使用的过程中有部分插件出现故障时,不会直接导致系统瘫痪;另外,可根据预设配置文件动态管理插件的加载与匹配,不必让整个系统必须具备所有数据库的执行能力,按需加载即可,从而使得系统更加轻量化。如此一来,使业务系统屏蔽了各种数据库的差异性,业务开发者不需要再针对不同的数据库增加开发及维护的成本,解决系统的多数据库兼容问题。
相应的,本申请实施例还公开了一种多类型数据库兼容装置,应用于handler处理器,参见图6所示,该装置包括:
操作类型确定模块11,用于当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;
插件实例获取模块12,用于根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;
操作执行模块13,用于基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,通过本实施例的上述方案,应用于handler处理器,当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件;基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作。可见,系统从发起操作到真正对数据库执行相应的操作时,利用handler处理器监测业务系统对数据库的操作请求,当有对数据库的操作请求时,从预设配置文件中匹配与当前操作对应的目标插件,进而在预设插件库中获取对应的插件实例。由于预设插件库中所有的插件都是独立的,所以系统基于串行外设接口机制配合插件化的方式,不仅可以使系统能方便的支持兼容包含国产数据库及非关系型数据库,还可以在加载和使用的过程中有部分插件出现故障时,不会直接导致系统瘫痪;另外,可根据预设配置文件动态管理插件的加载与匹配,不必让整个系统必须具备所有数据库的执行能力,按需加载即可,从而使得系统更加轻量化。如此一来,使业务系统屏蔽了各种数据库的差异性,业务开发者不需要再针对不同的数据库增加开发及维护的成本,解决系统的多数据库兼容问题。
进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中内容不能认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的多类型数据库兼容方法中的相关步骤。另外,本实施例中的电子设备20具体可以为计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,数据223可以包括各种各样的数据。存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的多类型数据库兼容方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存取存储器(Random Access Memory,RAM)、内存、只读存储器(Read-Only Memory,ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、磁碟或者光盘或技术领域内所公知的任意其他形式的存储介质。其中,所述计算机程序被处理器执行时实现前述多类型数据库兼容方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的多类型数据库兼容或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种多类型数据库兼容方法、装置、设备、存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种多类型数据库兼容方法,其特征在于,应用于handler处理器,包括:
当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;
根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件,包括不同关系型数据库中的不同插件和不同非关系型数据库中的不同插件;
基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作;
其中,所述当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型之前,还包括:在所述业务系统启动时根据所述预设配置文件加载所述预设插件库;将所述预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例以键值对的记录方式进行存储,以得到所述映射数据集;
所述在所述业务系统启动时根据所述预设配置文件加载所述预设插件库,包括:在所述业务系统启动时根据所述预设配置文件利用所述串行外设接口机制加载所述预设插件库;
所述基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作,包括:向所述业务系统中添加包含所述对所述数据库进行增加、检索、更新以及删除操作的预置接口;基于串行外设接口机制,通过所述预置接口根据所述插件实例对所述数据库执行相应的增加、检索、更新或删除操作;
所述根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例,包括:根据预设配置文件中的配置项获取目标插件类型;确定出所述目标插件类型中与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例。
2.根据权利要求1所述的多类型数据库兼容方法,其特征在于,所述当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型,包括:
当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的对所述数据库进行增加、检索、更新以及删除中的一项或多项的操作类型。
3.根据权利要求1或2所述的多类型数据库兼容方法,其特征在于,还包括:
当所述预设插件库中的当前插件存在故障时,生成错误日志并通知所述业务系统,以便所述业务系统将所述当前插件的类型切换为其他的插件类型。
4.一种多类型数据库兼容装置,其特征在于,应用于handler处理器,包括:
操作类型确定模块,用于当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型;
插件实例获取模块,用于根据预设配置文件中的配置项确定出与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例;其中,所述映射数据集为将预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例进行存储的数据集;所述预设插件库中保存了与不同类型的数据库对应的不同的插件,包括不同关系型数据库中的不同插件和不同非关系型数据库中的不同插件;
操作执行模块,用于基于串行外设接口机制,根据所述插件实例对所述数据库执行相应的操作;
其中,所述多类型数据库兼容装置,还用于当监测到业务系统中存在对数据库进行操作的操作请求时,确定与所述操作请求对应的操作类型之前,在所述业务系统启动时根据所述预设配置文件加载所述预设插件库;将所述预设插件库中不同的插件名称和与不同的所述插件名称对应的插件实例以键值对的记录方式进行存储,以得到所述映射数据集;
所述多类型数据库兼容装置,具体还用于在所述业务系统启动时根据所述预设配置文件利用所述串行外设接口机制加载所述预设插件库;
所述操作执行模块,具体用于向所述业务系统中添加包含所述对所述数据库进行增加、检索、更新以及删除操作的预置接口;基于串行外设接口机制,通过所述预置接口根据所述插件实例对所述数据库执行相应的增加、检索、更新或删除操作;
所述插件实例获取模块,具体用于根据预设配置文件中的配置项获取目标插件类型;确定出所述目标插件类型中与所述操作类型匹配的目标插件名称,并从映射数据集中获取与所述目标插件名称对应的插件实例。
5.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至3任一项所述的多类型数据库兼容方法。
6.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的多类型数据库兼容方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210611860.3A CN114706918B (zh) | 2022-06-01 | 2022-06-01 | 一种多类型数据库兼容方法、装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210611860.3A CN114706918B (zh) | 2022-06-01 | 2022-06-01 | 一种多类型数据库兼容方法、装置、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114706918A CN114706918A (zh) | 2022-07-05 |
CN114706918B true CN114706918B (zh) | 2022-09-16 |
Family
ID=82176568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210611860.3A Active CN114706918B (zh) | 2022-06-01 | 2022-06-01 | 一种多类型数据库兼容方法、装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114706918B (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020147A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
CN104200402A (zh) * | 2014-09-11 | 2014-12-10 | 国家电网公司 | 一种电网多个数据源的源数据发布方法及系统 |
CN104834860A (zh) * | 2015-05-09 | 2015-08-12 | 福建六壬网安股份有限公司 | 一种安全事件动态入库方法 |
CN107025134A (zh) * | 2017-03-02 | 2017-08-08 | 北京三快在线科技有限公司 | 数据库服务系统及兼容多种数据库的方法 |
CN111026735A (zh) * | 2019-12-10 | 2020-04-17 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置、设备及介质 |
US10671410B1 (en) * | 2019-05-28 | 2020-06-02 | Oracle International Corporation | Generating plug-in application recipe extensions |
CN111552678A (zh) * | 2020-03-30 | 2020-08-18 | 平安医疗健康管理股份有限公司 | 数据权限的配置方法、装置及计算机设备 |
CN111708523A (zh) * | 2020-05-20 | 2020-09-25 | 广州太平洋电脑信息咨询有限公司 | 一种基于NodeJs的开发方法、系统及存储介质 |
CN111736826A (zh) * | 2020-06-16 | 2020-10-02 | 中国科学院空天信息创新研究院 | 多源遥感数据工程工具集系统及集成方法 |
CN111897570A (zh) * | 2020-07-15 | 2020-11-06 | 杭州安恒信息技术股份有限公司 | 一种基于Maven插件的多依赖项文件提取方法及装置 |
CN112860238A (zh) * | 2021-02-19 | 2021-05-28 | 中国建设银行股份有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN113312191A (zh) * | 2021-06-04 | 2021-08-27 | 西安未来国际信息股份有限公司 | 数据分析方法、装置、设备及存储介质 |
CN113742558A (zh) * | 2021-08-30 | 2021-12-03 | 武汉海昌信息技术有限公司 | 多种数据库兼容和并存的查询方法、系统、设备及介质 |
CN114258539A (zh) * | 2019-08-30 | 2022-03-29 | 甲骨文国际公司 | 用于客人语言的数据库环境 |
CN114265638A (zh) * | 2021-12-24 | 2022-04-01 | 北京天融信网络安全技术有限公司 | 基于插件兼容的通信方法、装置、设备及存储介质 |
WO2022104611A1 (zh) * | 2020-11-18 | 2022-05-27 | 京东方科技集团股份有限公司 | 数据分发系统及数据分发方法 |
CN114547083A (zh) * | 2022-02-28 | 2022-05-27 | 联想(北京)有限公司 | 数据处理方法、装置及电子设备 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7184995B2 (en) * | 2003-02-26 | 2007-02-27 | America Online Inc. | Data interoperability between open standard directory service and proprietary database |
US20080178202A1 (en) * | 2007-01-18 | 2008-07-24 | General Instrument Corporation | Interface For Supporting an Element Management System |
US20100049694A1 (en) * | 2008-08-20 | 2010-02-25 | Ca, Inc. | Method and system for extending a relational schema |
CN103761136A (zh) * | 2014-02-25 | 2014-04-30 | 上海斐讯数据通信技术有限公司 | 一种基于插件的数据模型动态加载的方法 |
US9619537B2 (en) * | 2014-04-15 | 2017-04-11 | Sap Se | Converting data objects from single- to multi-source database environment |
US9971794B2 (en) * | 2014-07-08 | 2018-05-15 | Sap Se | Converting data objects from multi- to single-source database environment |
US10776349B2 (en) * | 2017-01-31 | 2020-09-15 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing dynamic macros within a multi-tenant aware structured query language |
US10846272B2 (en) * | 2017-12-22 | 2020-11-24 | Microsoft Technology Licensing, Llc | Metadata model for supporting customizations of a database schema |
CN109117174B (zh) * | 2018-07-04 | 2022-03-29 | 北京德惠众合信息技术有限公司 | 兼容不同引擎的前端页面的系统及方法 |
US10963434B1 (en) * | 2018-09-07 | 2021-03-30 | Experian Information Solutions, Inc. | Data architecture for supporting multiple search models |
CN109725885A (zh) * | 2018-11-16 | 2019-05-07 | 国网江苏省电力有限公司盐城供电分公司 | 一种基于移动平台的应用开发架构 |
US11023896B2 (en) * | 2019-06-20 | 2021-06-01 | Coupang, Corp. | Systems and methods for real-time processing of data streams |
CN111125218A (zh) * | 2019-12-13 | 2020-05-08 | 成都安恒信息技术有限公司 | 一种基于协议解析的数据库兼容方法及其兼容性代理装置 |
US11494202B2 (en) * | 2020-01-08 | 2022-11-08 | Salesforce.Com, Inc. | Database replication plugins as a service |
US11467927B2 (en) * | 2020-04-17 | 2022-10-11 | Netapp, Inc. | Methods and systems for protecting multitenant databases in networked storage systems |
CN111625227A (zh) * | 2020-06-08 | 2020-09-04 | 成都信息工程大学 | 一种兼容多种数据库的系统设计方法 |
CN113656875A (zh) * | 2021-08-19 | 2021-11-16 | 贵州百胜工程建设咨询有限公司 | 一种bim模型轻量化实现方法 |
CN114138879A (zh) * | 2021-11-03 | 2022-03-04 | 浪潮软件集团有限公司 | 一种基于国产cpu的数据库兼容方法 |
CN114265577A (zh) * | 2021-12-01 | 2022-04-01 | 金蝶征信有限公司 | 业务数据处理方法、装置、计算机设备和存储介质 |
CN114461181A (zh) * | 2022-02-08 | 2022-05-10 | 北京北信源软件股份有限公司 | 兼容多种数据库的方法及装置 |
-
2022
- 2022-06-01 CN CN202210611860.3A patent/CN114706918B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020147A (zh) * | 2012-11-22 | 2013-04-03 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
CN104200402A (zh) * | 2014-09-11 | 2014-12-10 | 国家电网公司 | 一种电网多个数据源的源数据发布方法及系统 |
CN104834860A (zh) * | 2015-05-09 | 2015-08-12 | 福建六壬网安股份有限公司 | 一种安全事件动态入库方法 |
CN107025134A (zh) * | 2017-03-02 | 2017-08-08 | 北京三快在线科技有限公司 | 数据库服务系统及兼容多种数据库的方法 |
US10671410B1 (en) * | 2019-05-28 | 2020-06-02 | Oracle International Corporation | Generating plug-in application recipe extensions |
CN114258539A (zh) * | 2019-08-30 | 2022-03-29 | 甲骨文国际公司 | 用于客人语言的数据库环境 |
CN111026735A (zh) * | 2019-12-10 | 2020-04-17 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置、设备及介质 |
CN111552678A (zh) * | 2020-03-30 | 2020-08-18 | 平安医疗健康管理股份有限公司 | 数据权限的配置方法、装置及计算机设备 |
CN111708523A (zh) * | 2020-05-20 | 2020-09-25 | 广州太平洋电脑信息咨询有限公司 | 一种基于NodeJs的开发方法、系统及存储介质 |
CN111736826A (zh) * | 2020-06-16 | 2020-10-02 | 中国科学院空天信息创新研究院 | 多源遥感数据工程工具集系统及集成方法 |
CN111897570A (zh) * | 2020-07-15 | 2020-11-06 | 杭州安恒信息技术股份有限公司 | 一种基于Maven插件的多依赖项文件提取方法及装置 |
WO2022104611A1 (zh) * | 2020-11-18 | 2022-05-27 | 京东方科技集团股份有限公司 | 数据分发系统及数据分发方法 |
CN112860238A (zh) * | 2021-02-19 | 2021-05-28 | 中国建设银行股份有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN113312191A (zh) * | 2021-06-04 | 2021-08-27 | 西安未来国际信息股份有限公司 | 数据分析方法、装置、设备及存储介质 |
CN113742558A (zh) * | 2021-08-30 | 2021-12-03 | 武汉海昌信息技术有限公司 | 多种数据库兼容和并存的查询方法、系统、设备及介质 |
CN114265638A (zh) * | 2021-12-24 | 2022-04-01 | 北京天融信网络安全技术有限公司 | 基于插件兼容的通信方法、装置、设备及存储介质 |
CN114547083A (zh) * | 2022-02-28 | 2022-05-27 | 联想(北京)有限公司 | 数据处理方法、装置及电子设备 |
Non-Patent Citations (4)
Title |
---|
LKJ监控记录插件改进升级方案的探讨;傅友亮;《上海铁道科技》;20111225(第04期);全文 * |
关系数据库中无模式数据存取实现方法;索剑等;《中山大学学报(自然科学版)》;20130715(第04期);全文 * |
兼容异构实时数据库的接入接口和访问接口的设计与实现;方云辉等;《华东电力》;20130424(第04期);全文 * |
智能网计费模块兼容Informix和Oracle数据库;陈刚等;《电脑编程技巧与维护》;20100618(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114706918A (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7401085B2 (en) | System and method for controlling the release of updates to a database configuration | |
US8244780B1 (en) | Parameter oriented automated database command | |
US20100185645A1 (en) | Structured query language syntax rewriting | |
US20210209098A1 (en) | Converting database language statements between dialects | |
US11226978B2 (en) | Systems and methods for dynamic creation of schemas | |
US11474812B1 (en) | Automated data store access source code review | |
US8756205B2 (en) | System and method for rule-based data object matching | |
CN113821496B (zh) | 数据库迁移方法、系统、设备及计算机可读存储介质 | |
US7970757B2 (en) | Computer program product for database query optimization | |
US20230259358A1 (en) | Documentation enforcement during compilation | |
US10592391B1 (en) | Automated transaction and datasource configuration source code review | |
US10678785B1 (en) | Automated SQL source code review | |
US20220292090A1 (en) | Object-based search processing | |
CN116414774A (zh) | 文件迁移方法、装置、设备及存储介质 | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
CN105550342B (zh) | 一种全透明的分布式数据库的数据处理方法 | |
US11526501B2 (en) | Materialized views assistant | |
US20240111521A1 (en) | Code processing method and system, and computer cluster, medium, and program product | |
US11693859B2 (en) | Systems and methods for data retrieval from a database indexed by an external search engine | |
CN117421302A (zh) | 一种数据处理方法及相关设备 | |
CN114706918B (zh) | 一种多类型数据库兼容方法、装置、设备、存储介质 | |
CN116414855A (zh) | 信息处理方法及装置、电子设备和计算机可读存储介质 | |
CN116010461A (zh) | 数据血缘关系解析方法及装置、存储介质及电子设备 | |
CN113626423B (zh) | 业务数据库的日志管理方法、装置、系统 | |
US11620285B2 (en) | Automatic database query translation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |