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

数据库操作方法、装置、计算机设备和存储介质

文献发布时间:2024-04-18 19:58:21


数据库操作方法、装置、计算机设备和存储介质

技术领域

本申请涉及数据库技术领域,特别是涉及一种数据库操作方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

数据库方言(Database Language)指用于表示数据库结构和性质的一组语法规则和数据结构,是数据库理论中的重要概念之一,用来构建各种类型的数据库,包括关系型数据库和非关系型数据库;开发人员在开发应用程序时,通过会用到多种类型的数据库,因此,如何能够保证对多个多种类型的数据库的统一操作是亟待解决的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够实现多种类型的数据库设备的通用性的数据库操作方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种数据库操作方法。所述方法包括:

通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;

通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作,包括:

通过所述调用接口,确定第二类型归档包;

若确定所述第二类型归档包中的原生结构化查询语言语句支持跨数据库设备转换,则基于所述目标对象对所述原生结构化查询语言语句进行转换,得到目标结构化查询语言语句;

基于所述目标结构化查询语言语句,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述基于所述目标对象对所述原生结构化查询语言语句进行转换,得到目标结构化查询语言语句,包括:

基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型;

通过方言组件以及所述原生结构化查询语言语句,将所述目标对象的各字段名转换为,与所述目标数据库类型相匹配的语法结构,得到所述目数据库类型的目标结构化查询语言语句。

在其中一个实施例中,所述通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作,包括:

若确定所述第二类型归档包中的原生结构化查询语言语句不支持跨数据库设备转换,则基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型,并确定与所述目标数据库类型匹配的第二类型归档包;

通过所述与所述目标数据库类型匹配的第二类型归档包,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述方法还包括:

在确定所述目标对象是针对目标数据库设备的目标操作的情况下,通过所述目标中间件包含的函数使用所述目标对象,对所述数据库设备进行目标操作。

在其中一个实施例中,所述目标操作包括增加操作、查询操作、删除操作以及修改操作中的一种或者多种。

第二方面,本申请还提供了一种数据库操作装置。所述装置包括:

编写模块,用于通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

接口定义模块,用于在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;

调用模块,用于通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述调用模块具体用于:

通过所述调用接口,确定第二类型归档包;

若确定所述第二类型归档包中的原生结构化查询语言语句支持跨数据库设备转换,则基于所述目标对象对所述原生结构化查询语言语句进行转换,得到目标结构化查询语言语句;

基于所述目标结构化查询语言语句,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述调用模块还具体用于:

基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型;

通过方言组件以及所述原生结构化查询语言语句,将所述目标对象的各字段名转换为,与所述目标数据库类型相匹配的语法结构,得到所述目数据库类型的目标结构化查询语言语句。

在其中一个实施例中,所述调用模块具体用于:

若确定所述第二类型归档包中的原生结构化查询语言语句不支持跨数据库设备转换,则基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型,并确定与所述目标数据库类型匹配的第二类型归档包;

通过所述与所述目标数据库类型匹配的第二类型归档包,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述装置还包括:

函数操作模块,用于在确定所述目标对象是针对目标数据库设备的目标操作的情况下,通过所述目标中间件包含的函数使用所述目标对象,对所述数据库设备进行目标操作。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;

通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;

通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;

通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。

上述数据库操作方法、装置、计算机设备、存储介质和计算机程序产品,该方法包括:通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。通过采用本方法,可以将数据库设备层从数据包的角度进行分层,得到多个独立层,并通过多个独立对象将对数据库设备的操作转换为转换成对对像操作,实现对单个数据库设备或者是多个数据库设备的统一操作,且实现对不同类型的数据库设备的适配,提升通用性。

附图说明

图1为一个实施例中数据库操作方法的流程示意图;

图2为一个实施例中进行转换得到目标sql步骤的流程示意图;

图3为一个实施例中确定数据库设备的类型步骤的流程示意图;

图4为一个实施例中进行目标操作步骤的流程示意图;

图5为一个实施例中运行实例的结构示意图;

图6为另一个实施例中数据库操作方法的流程示意图;

图7为一个实施例中数据库操作装置的结构框图;

图8为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,提供了一种数据库操作方法,本实施例以该方法应用于数据库客户端进行举例说明,可以理解的是,数据库系统可以包括多个数据库客户端以及与该数据客户端对应的数据库服务器,即数据库设备;数据库服务器用于存储数据,数据库客户端与数据库服务器之间可以通过网络进行通信。数据库客户端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑等,数据库服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,如图1所示,以应用于数据库客户端为例进行举例说明,该数据库操作方法包括以下步骤:

步骤102,通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象。

其中,目标中间件可以是中间件(Middleware)可以是提供系统软件和应用软件之间连接的软件,用于实现软件各部件之间的数据交互,中间件可以是第三方应用的ORM中间件,例如可以是mybatis,或者是beetlsql。第一类型归档包可以是服务类型的归档包,例如可以是service jar包,目标模块可以是第一类型归档包中的运行的模块,例如可以是model模型,目标对象可以是承载用户账户对数据库设备的多种类型的指令,通过java编写得到的对象,例如可以是java对象。

具体地,数据库客户端可以通过第三方应用的ORM中间件,在service jar包中的model模块进行编写,得到目标对象。在一个示例中,数据库客户端可以基于第三方应用的ORM中间件,在service jar包中的model模块进行编写,得到java对象。

步骤104,在确定目标对象是针对多个数据库设备的目标操作的情况下,在第一类型归档包中定义调用接口。

其中,目标操作可以是对数据库设备进行处理的指令,例如可以包括增删改查等指令,例如可以是对数据库设备中的数据进行增加数据的指令、删除数据库设备中的数据的指令、还可以是修改数据库设备中数据的指令,也可以是查询数据库设备中数据的指令,例如可以是通过查询数据库设备的数据的指令;针对多个数据库设备可以是通过一个指令对多个数据库设备进行处理;调用接口可以是DAO接口,该调用接口用于实现目标语法的实现,例如可以是实现mysql语法。在一个示例中,目标操作可以是单表dql操作,或者也可以是针对于多表dql操作。

具体地,数据库客户端对目标对象所操作的数据库设备进行判断,若数据库客户端确定目标对象是针对多个数据库设备的操作的情况下,会确定该操作的具体类型,并在第一类型归档包中定义用于实现mysql语法的调用接口,例如,调用接口可以是DAO接口,该DAO接口可以是数据访问对象DAO(Data Access Object)。

步骤106,通过调用接口以及目标对象,对各目标数据库设备进行目标操作。

具体地,数据库客户端可以基于定义好的调用接口,通过对目标对象进行操作,实现对一个目标数据库设备的目标操作,或者是对于多个目标数据库设备的目标操作,以得到进行目标操作处理后的一个目标数据库设备或者是多个目标数据库设备。

上述数据库操作方法中,通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象。在确定目标对象是针对多个数据库设备的目标操作的情况下,在第一类型归档包中定义调用接口。通过调用接口以及目标对象,对各目标数据库设备进行目标操作。通过采用本方法,可以将数据库设备层从数据包的角度进行分层,得到多个独立层,并通过多个独立对象将对数据库设备的操作转换为转换成对对像操作,实现对单个数据库设备或者是多个数据库设备的统一操作,且实现对不同类型的数据库设备的适配,提升通用性。

在一个实施例中,如图2所示,步骤“通过调用接口以及目标对象,对各目标数据库设备进行目标操作”的具体处理过程,包括:

步骤202,通过调用接口,确定第二类型归档包。

其中,调用接口可以是用于实现mysql语法的接口,第二类型归档包可以是在Mapper类型的Jar包,该第二类型归档包也是可以用于实现mysql语法的层。

具体地,数据库客户端可以通过定义在第一类型归档包中的调用接口,通过该调用接口确定用于实现mysql语法的第二类型归档包,即确定mapper层的Mapper类型的Jar包。

步骤204,若确定第二类型归档包中的原生结构化查询语言语句支持跨数据库设备转换,则基于目标对象对原生结构化查询语言语句进行转换,得到目标结构化查询语言语句。

其中,原生SQL(Structured Query Language,结构化查询语言)可以是应用程序在运行的情况下生成的;该原生sql(Native SQL)是指使用关系型数据库管理系统(RDBMS)进行数据管理和查询的语言。跨数据库设备可以是跨多个不同的数据库设备进行处理,也可以是跨多种类型的数据库设备进行转换;对原生sql进行转换可以是将原生sql转换为目标方言类型的,目标sql可以是与各个数据库设备的类型相匹配的sql语句。

具体地,数据库客户端可以确定第二类型归档包中的原生sql是否支持跨多个数据库设备的转换,或者是确定第二类型归档包中的原生sql是否支持跨多种类型的数据库设备的转换。若数据库客户端确定第二类型归档包中的原生sql支持跨多种类型的数据库设备的转换,则数据库客户端可以基于目标对象以及目标数据库设备的类型,对第二类型归档包中的原生sql进行转换处理,得到与目标数据库设备的类型匹配的sql,即目标结构化查询语言语句。

步骤206,基于目标结构化查询语言语句,对各目标数据库设备进行目标操作。

具体地,数据库客户端可以基于进行转换处理后的目标sql,执行对多种类型的数据库设备的目标操作,实现对多种类型的数据库设备的目标操作处理,得到进行目标操作处理后的各类型的目标数据库设备。

本实施例中,在确定归档包中的原生sql支持跨多种类型的数据库设备进行转换的情况下,基于得到的目标sql对数据库设备进行处理,保证与多种类型的数据库设备的适配,保证通用性。

在一个实施例中,如图3所示,步骤“基于目标对象对原生结构化查询语言语句进行转换,得到目标结构化查询语言语句”的具体处理过程,包括:

步骤302,基于目标对象的数据库连接信息,确定目标对象的目标数据库类型。

其中,数据库连接信息可以是数据源连接信息,该数据源连接信息用于表征目标对象所要操作的目标数据库设备的数据库类型的连接信息;在一个示例中,mysql的数据源连接信息可以是:jdbc:mysql://IP:port等等。

具体地,数据库客户端可以获取目标对象对应的目标数据库设备的数据源连接信息,并通过方言组件,基于目标对象的目标数据库类型。

步骤304,通过方言组件以及原生结构化查询语言语句,将目标对象的各字段名转换为,与目标数据库类型相匹配的语法结构,得到目标数据库类型的目标结构化查询语言语句。

其中,目标对象可以包括多种字段。

具体地,数据库客户端可以通过方言组件实现结构化查询语言语句的转换,数据库客户端可以通过方言组件以及原生sql,将用于描述目标操作的目标对象的各个字段名转换为,与基于数据库连接信息确定出的目标数据库类型相匹配的语法结构,得到目标结构化查询语言语句。

本实施例中,通过转像组件会解读java类的变量定义,并基于数据库连接信息将java类定义的字段名转换成目标数据库类型,从而实现根据java对像的定义向不同数据库类型进行转换,保证自动与不同类型的数据库设备的适配。

在一个实施例中,如图4所示,步骤“通过调用接口以及目标对象,对各目标数据库设备进行目标操作”的具体处理过程,包括:

步骤402,若确定第二类型归档包中的原生结构化查询语言语句不支持跨数据库设备转换,则基于目标对象的数据库连接信息,确定目标对象的目标数据库类型,并确定与目标数据库类型匹配的第二类型归档包。

具体地,数据库客户端在确定第二类型归档包中的原生sql不支持跨多个数据库设备的转换,则数据库客户端可以获取目标对象所要使用的目标数据库设备对应的数据库连接信息,并基于该数据库连接信息确定出目标对象所要使用的目标数据库设备的目标数据库类型,并确定与该目标数据库类型相匹配的第二类型归档包。在一个示例中,该第二类型归档包可以是mapper层jar包。

步骤404,通过与目标数据库类型匹配的第二类型归档包,对各目标数据库设备进行目标操作。

具体地,数据库客户端可以通过与目标数据库类型匹配的第二类型归档包,实现对各个类型的数据库设备进行目标操作,也就是说数据库客户端可以通过与目标数据库类型匹配的mapper层jar包,实现对各个类型的数据库设备进行目标操作。

本实施例中,通过转像组件会解读java类的变量定义,并基于数据库连接信息将java类定义的字段名转换成目标数据库类型,从而实现根据java对像的定义向不同数据库类型进行转换,保证自动与不同类型的数据库设备的适配。

在一个实施例中,该数据库操作方法还包括:

在确定目标对象是针对目标数据库设备的目标操作的情况下,通过目标中间件包含的函数使用目标对象,对数据库设备进行目标操作。

其中,目标中间件包含的函数可以是中间件内置的函数,例如可以是预先设置在中间件内部的操作函数,中间件可以是第三方的ORM中间件。

具体地,数据库客户端会确定目标操作对应的目标对象是针对于单个数据库设备的操作或者是多个数据库设备的操作。在数据库客户端确定当前的目标对象是针对于单个的目标数据库设备的目标操作的情况下,数据库客户端可以通过第三方的中间件中的内置函数,操作目标操作,实现对目标数据库设备的目标操作。也就是说,数据库客户端可以通过mybatis中的Provider对DDL操作,或者是DML操作,转换成对目标对象的操作,实现对目标数据库设备的对像操作(CRUD操作),第三方中间件中的内置函数可以是mybatis中的Provider函数。

本实施例中,通过Java对象实现对数据库设备的CRUD操作,实现向不同类型的数据库设备的转换,适配于多种类型的数据库设备,降低开发人员的开发工作量,提升程序的开发效率以及开发质量。

在一个实施例中,目标操作包括增加操作、查询操作、删除操作以及修改操作中的一种或者多种。

具体地,目标操作可以是DDL(Data Definition Language,数据定义语言)操作,也可以是DQL(Data Query Language,数据查询语言)操作,目标操作可以是针对于单表(单个数据库设备)的DDL操作或者DQL操作,还可以是针对于多表(多个数据库设备)的DDL操作或者DQL操作,例如可以是CRUD操作(Create、Read、Update、Delete),可以是增加操作、删除操作、查询操作以及修改操作。DML Service操作可以包括所有的数据库DML操作,DDLService可以是用于创建表(可包括主表/子表)、索引等,Meta Data Service(元数据服务)适用于查询数据库结构、表(可包括主表/子表)结构、列属性等等。

本实施例中,通过在DAO包中实现的数据库持久层实现中,支持多种实现形态,可以将ddl操作或者是dql操作转换为针对于目标对象的操作,保证数据库设备的多种类型的统一处理,保证目标对象执行目标操作的通用性,提升数据库设备的处理效率。

以下,结合一个具体实施例详细描述,上述数据库操作方法的具体执行过程:

相关技术中,如何基于sql语句实现在不改动代码的条件下,实现多种类型的多数据库设备的运行。通本实施例提供的数据库操作方法,可以

当有sql将发送给数据库设备时,拦截包含sql的发送请求,对发送请求进行解析,得到sql,并通过方言组件转换为对应数据库类型的sql语法,得到目标sql,再向数据库发送包含目标sql的报文。因此,开发人员可以仅基于mysql的语法编写sql语句,在sql语句运行时,可以通过方言组件实现将sql脚本向多种数据库类型的语法的转换,通过方言组件实现了不同数据库语法差异的转换,动态实现向不同数据库语法转换,可使得开发人员无需了解不同数据库的差异,保证开发人员的开发效率。

如图5所示,每一个运行实例包括插件JAR包、oracle mapper层jar包、mysqlmapper层jar包以及业务实现jar包;该运行实例还可以通过dql工具中的sql转换工具与插件jar包进行数据传输,以及与oracle mapper层jar包进行数据传输,sql转换工具可以通过指定方言对sql模版进行转换生成DAOIMP,也就是与编码方式转换生成jar包或class。

业务实现jar包可以包括model模块、serive模块serivelmpl模块以及IXxxDAO模块,该model模块是数据库对像定义,serive模块是业务逻辑定义,serivelmpl模块可以是业务逻辑实现,IXxxDAO模块可以是接口定义,实现对接口的定义。oracle mapper层jar包是通过daolmpl持久化实现,mysql mapper层jar包是通过XxxDAOlmpl实现mapper持久化实现。oracle mapper层jar包和mysql mapper层jar包军事依赖于插件JAR包持久化实现的,插件JAR包包括方言插件(dialect)、jpa规范插件、orm插件以及jdbc插件。

具体地,业务包与Mapper包设计成两个jar,Mapper包实现业务包里的接口DAO定义的方法,Mapper可以是mybaits的接口,也可以是实现类。继承DAO的Mapper,可以是接口,也可以是实现类。如果是接口可以是mybatis的mapper定义,其方法上的sql可以是基于默认数据库语法确定为的方言的语义语法,是由方言插件根据数据库的连接信息,在运行时通过Interceptor拦截mybatis。DQL工具包仅包括jar,仅工具类使用,可以基于方言的语义语法开发sql;DQL工具包根据语义生成其它类型的数据库设备的Mapper包。本实施例提供的JDBC插件包,是在面向运行时,面向动态的数据源、表、列,采用领域驱动充血模型,设计DataRow和DataSet两个数据结构。通过DataRow处理表字段与map的映射处理,DataRow处理查询集与Map映射处理。数据库JDBC插件针对map数据结构提供数据访问服务,其提供DMLService操作、DDLService、MetaDataService等基础数据库操作。

具体地,还可以通过ORM思想,括展mybatis的Provider对DDL操作,DML操作转换成对对像操作,在转成对java对像操作后,开发人员可以仅确定java对像定义,数据库客户端可以通过转像组件会解读java类的变量定义,再由数据库连接信息,判断出系统连接的数据库类型,然后交方言组件将java类定义的字段名转换成相应数据库的insert,update,delete,select sql语法。从而实现根据java对像的定义通过方言组件向不同数据库转换成sql语言,间接的由系统自动完成了不同数据库的适配。

如图6所示,详细描述上述数据库操作方法的具体执行过程:

S01:使用第三方ORM,在service jar的model模块下编写java对像。具体地,是可以通过项目要求集成的第三方ORM中间件,在service jar的model模块下编写java对像,比如mybatis。

S02:针对单表的增删查改,可使用ORM的内置函数操作java对像。具体地,可以通过mybatis plus提供的API实现对java对象的操作。

S03:如果编写复杂多表SQL查询,在service jar定义DAO接口,在Mapper Jar包下实现mysq语法的实现。具体地,对于hibernate、beetl SQL等,已实现对像的关联注解,联表操作也直接操作java对像。又如mybatis,使用原生SQL来完成多表查询。引时需在servicejar定义DAO接口,并在Mapper Jar包下实现mysq语法的实现。

S04:引入自研方言,检查mapper jar包下的sql是否支持跨数据库转换。如果支持结束;如果不支持,则执行S05。具体地,启动时会检查Mapper Jar包下的SQL是否支持跨数据库转换。

S05:如果个性化SQL使用了方言无法转换的函数,则针对具体函数实现不同数据库的适配Mapper层Jar。具体地,方言组件无法转换的函数是不跨平台的函数,比如months_between函数,或自定存储过程对应的函数等等。

具体地,使用第三方orm,在服务jqr的model模块下编写java对象;针对于单表的增删改查,可使用orm的内置函数操作java对象;如果编写复杂多表SQL查询语句,则在服务jar定义dao接口,在mapperjar包下实现mySQL的实现;检查mapper jar包下的SQL是否支持跨数据库转换,如果支持,就结束;如果不支持的话,则个性化SQL使用了方言无法转换的函数,则针对具体函数实现,不同数据库的适配mapper层jqr。

本实施例提供的数据库操作方法可以通过转像组件,解读java类的变量定义,再由数据库连接信息,判断出系统连接的数据库类型,然后交方言组件将java类定义的字段名转换成相应数据库的insert,update,delete,select SQL语法。从而实现根据java对像的定义通过方言组件向不同数据库转换成SQL语言,间接的由系统自动完成了不同数据库的适配。具体地,如果在确定可以能够通过对像操作库,先操作对像如DDL,DML操作;能用命名约定操作库就使用命名规范如单表DQL操作;多表DQL操作优先由方言插件自动转换sql;个性化sql模板使用方言工具包在编码时转换成对应数据库模板。

具体地,包结构上遵守设计“依赖倒置原则”原则,业务jar包定义持久化接口,DAO包完成实现。在DAO包中实现数据库持久层方案。在DAO包中实现数据库持久层实现中,支持两种实现形态:a)使用“数据库方言”方式,对mybatis实现方言插件,由方言完成90%的中跨数据库sql运行时转换。b)开发数据库转换工具,对于10%的使用了特殊数据库函数或功能的,借助方言定义完成编码级别的转换。通过ORM,对DDL,DML操作转换成对对像操作。对于复杂DQL操作,针对方言无法转换的sql,由工具包进行扫描,给与提供。由开发人员针对特殊的sql完成相应数据库的适配开发。

需要说明的是,数据库方言(Database Language)是指用于表示数据库结构和性质的一组语法规则和数据结构,是数据库理论中的重要概念之一,用来构建各种类型的数据库,包括关系型数据库和非关系型数据库,如以E-R图表示的数据库、基于9NF的图数据库等。本实施例中的数据库方言是根据数据库方言针对不同数据库的语法规则自研完成相应的数据结构设计及转换逻辑,可以包括一组表示数据关系和性质的语法规则,以及用于在数据库中定义这些数据的实体、属性、关系、查询和操作的规则。关系型数据库方言包括一组用于表示表格和数据的语法规则,如CREATE TABLE、INSERT、UPDATE、DELETE语句等。非关系型数据库方言则包括用于表示图、向量、向图的结构和属性、关系的语法规则。

本实施例提供的数据库操作方法可以实现不同数据库的适配。规范开发人员的编程方式,提供sql的动态和离线转换工具。从而降低迁移成本,和软件迭代过程中的维护成本,可以提升各第三方中间件的开发效率,保证错误提示的准确性,还可以支持跨数据库平台,保证通用性。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据库操作方法的数据库操作装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据库操作装置实施例中的具体限定可以参见上文中对于数据库操作方法的限定,在此不再赘述。

在一个实施例中,如图7所示,提供了一种数据库操作装置700,包括:编写模块701、接口定义模块702和调用模块703,其中:

编写模块701,用于通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

接口定义模块702,用于在确定目标对象是针对多个数据库设备的目标操作的情况下,在第一类型归档包中定义调用接口;

调用模块703,用于通过调用接口以及目标对象,对各目标数据库设备进行目标操作。

在其中一个实施例中,所述调用模块具体用于:

通过所述调用接口,确定第二类型归档包;

若确定所述第二类型归档包中的原生结构化查询语言语句支持跨数据库设备转换,则基于所述目标对象对所述原生结构化查询语言语句进行转换,得到目标结构化查询语言语句;

基于所述目标结构化查询语言语句,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述调用模块还具体用于:

基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型;

通过方言组件以及所述原生结构化查询语言语句,将所述目标对象的各字段名转换为,与所述目标数据库类型相匹配的语法结构,得到所述目数据库类型的目标结构化查询语言语句。

在其中一个实施例中,所述调用模块具体用于:

若确定所述第二类型归档包中的原生结构化查询语言语句不支持跨数据库设备转换,则基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型,并确定与所述目标数据库类型匹配的第二类型归档包;

通过所述与所述目标数据库类型匹配的第二类型归档包,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,所述装置还包括:

函数操作模块,用于在确定所述目标对象是针对目标数据库设备的目标操作的情况下,通过所述目标中间件包含的函数使用所述目标对象,对所述数据库设备进行目标操作。

上述数据库操作装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库设备的相关数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库操作方法。

本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:

第一方面,本申请提供了一种数据库操作方法。所述方法包括:

通过目标中间件,在第一类型归档包中的目标模块进行编写,得到目标对象;

在确定所述目标对象是针对多个数据库设备的目标操作的情况下,在所述第一类型归档包中定义调用接口;

通过所述调用接口以及所述目标对象,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,该计算机程序被处理器执行时还被用于实现以下步骤:

通过所述调用接口,确定第二类型归档包;

若确定所述第二类型归档包中的原生结构化查询语言语句支持跨数据库设备转换,则基于所述目标对象对所述原生结构化查询语言语句进行转换,得到目标结构化查询语言语句;

基于所述目标结构化查询语言语句,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,该计算机程序被处理器执行时还被用于实现以下步骤:

基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型;

通过方言组件以及所述原生结构化查询语言语句,将所述目标对象的各字段名转换为,与所述目标数据库类型相匹配的语法结构,得到所述目数据库类型的目标结构化查询语言语句。

在其中一个实施例中,该计算机程序被处理器执行时还被用于实现以下步骤:

若确定所述第二类型归档包中的原生结构化查询语言语句不支持跨数据库设备转换,则基于所述目标对象的数据库连接信息,确定所述目标对象的目标数据库类型,并确定与所述目标数据库类型匹配的第二类型归档包;

通过所述与所述目标数据库类型匹配的第二类型归档包,对各所述目标数据库设备进行目标操作。

在其中一个实施例中,该计算机程序被处理器执行时还被用于实现以下步骤:

在确定所述目标对象是针对目标数据库设备的目标操作的情况下,通过所述目标中间件包含的函数使用所述目标对象,对所述数据库设备进行目标操作。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

相关技术
  • 移动设备操作方法、装置、计算机设备及存储介质
  • 数据库操作方法、装置、电子设备及存储介质
  • 数据库事务处理方法、装置、设备和计算机可读存储介质
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 医疗数据库建立方法、装置、计算机设备和存储介质
  • 数据库操作方法、装置、计算机设备及可读存储介质
  • 数据库操作方法、装置、计算机设备和存储介质
技术分类

06120116483090