首页> 中国专利> 达梦数据库的适配方法、装置、存储介质及计算机设备

达梦数据库的适配方法、装置、存储介质及计算机设备

摘要

本申请实施例公开了一种达梦数据库的适配方法、装置、存储介质及计算机设备,涉及数据库管理领域。本申请的ORM框架具有支持node.js的能力,由于ORM框架本身支持sql数据库的操作,本申请通过在ORM框架中加载达梦数据库操作代码包,不需要单独进行编码,因此开发人员只需要一套代码即可支持sql数据库和达梦数据库的操作,减少开发成本和维护时间。

著录项

  • 公开/公告号CN114969179A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 远光软件股份有限公司;

    申请/专利号CN202210441507.5

  • 发明设计人 曾国栋;梁泽颖;

    申请日2022-04-25

  • 分类号G06F16/25(2019.01);G06F16/21(2019.01);G06F16/2452(2019.01);

  • 代理机构广东朗乾律师事务所 44291;

  • 代理人杨焕军

  • 地址 519085 广东省珠海市科技创新海岸远光软件园

  • 入库时间 2023-06-19 16:30:07

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):G06F16/25 专利申请号:2022104415075 申请日:20220425

    实质审查的生效

  • 2022-08-30

    公开

    发明专利申请公布

说明书

技术领域

本申请涉及数据库管理领域,尤其涉及一种达梦数据库的适配方法、装置、存储介质及计算机设备。

背景技术

达梦数据库数据管理系统(简称DM)是达梦公司推出的高性能数据库管理系统,具有通用型、高性能、高可用、跨平台和高可用性的特点,因此应用范围越来越广泛。由于达梦数据库不支持node.js相关的ORM(object relational mapping,对象关系映射)框架,因此node.js支持mysql数据库的管理,不支持达梦数据库,在使用node.js对达梦数据库进行管理时需要单独编写代码,存在工作量大和维护复杂的问题。

发明内容

本申请实施例提供了达梦数据库的适配方法、装置、存储介质及计算机设备,所述技术方案如下:

第一方面,本申请实施例提供了一种达梦数据库的适配方法,所述方法包括:

调用ORM框架中的达梦数据库操作代码包创建达梦数据库的数据库连接池;

通过所述数据库连接池数连接到所述达梦数据库;

将来自所述ORM框架的第一数据类型转换为所述达梦数据库支持的第二数据类型,创建所述达梦数据库支持的数据类型表,以及将来自所述ORM框架的请求语句的格式转换为所述达梦数据库支持的格式,将来自所述达梦数据库的返回结果的格式转换为所述ORM框架支持的格式。

第二方面,本申请实施例提供了一种达梦数据库的适配装置,所述装置包括:

创建单元,用于调用ORM框架中的达梦数据库操作代码包创建达梦数据库的数据库连接池;

连接单元,用于通过所述数据库连接池数连接到所述达梦数据库;

转换单元,用于将来自所述ORM框架的第一数据类型转换为所述达梦数据库支持的第二数据类型,创建所述达梦数据库支持的数据类型表,以及将来自所述ORM框架的请求语句的格式转换为所述达梦数据库支持的格式,将来自所述达梦数据库的返回结果的格式转换为所述ORM框架支持的格式。

第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。

第四方面,本申请实施例提供一种计算机设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。

本申请一些实施例提供的技术方案带来的有益效果至少包括:

ORM框架具有支持node.js的能力,由于ORM框架本身支持sql数据库的操作,本申请通过在ORM框架中加载达梦数据库操作代码包,不需要单独进行编码,因此开发人员只需要一套代码即可支持sql数据库和达梦数据库的操作,减少开发成本和维护时间。

附图说明

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

图1是本申请实施例提供的网络架构示意图;

图2是本申请实施例提供的达梦数据库的适配方法的流程示意图;

图3是本申请提供的一种达梦数据库的适配装置的结构示意图;

图4是本申请提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。

需要说明的是,本申请提供的达梦数据库的适配方法一般由计算机设备执行,相应的,达梦数据库的适配装置一般设置于计算机设备中。

图1示出了可以应用于本申请的达梦数据库的适配方法或达梦数据库的适配装置的示例性系统架构。

如图1所示,系统架构可以包括:计算机设备101和服务器102。计算机设备101和服务器102之间可以通过网络进行通信,网络用于上述各个单元之间提供通信链路的介质。网络可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆等,无线通信链路包括蓝牙通信链路、无线保真(WIreless-FIdelity,Wi-Fi)通信链路或微波通信链路等。

其中,计算机设备中安装有ORM框架,服务器102中部署有达梦数据库,计算机设备利用ORM框架访问达梦数据库。

需要说明的是,计算机设备101和服务器102可以是硬件,也可以是软件。当计算机设备101和服务器102为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当计算机设备101和服务器102为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。

本申请的计算机设备上可以安装有各种通信客户端应用,例如:视频录制应用、视频播放应用、语音交互应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。

计算机设备可以是硬件,也可以是软件。当计算机设备为硬件时,可以是具有显示屏的各种计算机设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等等。当计算机设备为软件时,可以是安装上述所列举的计算机设备中。其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。

当计算机设备为硬件时,其上还可以安装有显示设备和摄像头,显示设备显示可以是各种能实现显示功能的设备,摄像头用于采集视频流;例如:显示设备可以是阴极射线管显示器(cathode ray tube display,简称CR)、发光二极管显示器(light-emittingdiode display,简称LED)、电子墨水屏、液晶显示屏(liquid crystal display,简称LCD)、等离子显示面板(plasma display panel,简称PDP)等。用户可以利用计算机设备上的显示设备,来查看显示的文字、图片、视频等信息。

应理解,图1中的计算机设备、网络和服务器的数目仅是示意性的。根据实现需要,可以是任意数量的计算机设备、网络和服务器。

下面将结合附图2,对本申请实施例提供的达梦数据库的适配方法进行详细介绍。其中,本申请实施例中的达梦数据库的适配装置可以是图1所示的计算机设备。

请参见图2,为本申请实施例提供了一种达梦数据库的适配方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤:

S201、调用ORM框架中的达梦数据库操作代码包创建达梦数据库的数据库连接池。

其中,本申请的ORM框架包括但不限于ORM2、bookshelf和sequelize组件,数据库连接池用于与达梦数据库建立连接。下面以ORM框架为sequelize组件为例对创建数据库连接池的过程进行说明,其他ORM框架创建数据库连接池的方法可参照sequelize组件的描述。

sequelize组件的代码中增加有达梦数据库操作代码包,在达梦数据库启动后,通过调用达梦数据库操作代码包,达梦数据库操作代码包用于创建数据库连接池连接到达梦数据库、适配达梦数据库的语法、操作达梦数据库和处理达梦数据库的返回结果。可选的,达梦数据库操作代码包dmdb可以设置在sequelize组件的\lib\dialects\目录中,达梦数据库操作代码包可是对sequelize组件的\lib\dialects\mysql目录中的代码包进行改造得到的,该目录中包括如下文件:connection-manager.js、query.js、query-generator.js。

进一步的,创建数据库连接池的方法可以包括:通过sequelize组件的统一入口sequelize类中增加达梦数据库入口分类,获取达梦数据库的连接信息标识(用于唯一表示其身份)后,选择达梦数据库的连接入口,加载达梦数据库操作库,即加载目录dialects中的dmdb文件。计算机设备基于账号、密码和达梦数据库的服务地址进入到达梦驱动类中,调用该类中的createTableQuery方法执行创建实例的操作,该方法会使用达梦数据库的驱动中的createPoo连接数据库创建数据库连接池,并返回数据库连接实例。

S202、通过数据库连接池数连接到达梦数据库。

其中,数据库连接池中设置有多个数据库连接,计算机设备可以监测各个数据库连接的负荷状态,负荷状态可以使用吞吐率、IO操作数量等表示,将负荷状态最轻的数据库连接对接达梦数据库。

S203、将来自ORM框架的第一数据类型转换为达梦数据库支持的第二数据类型,创建达梦数据库支持的数据类型表,以及将来自ORM框架的请求语句的格式转换为达梦数据库支持的格式,将来自达梦数据库的返回结果的格式转换为ORM框架支持的格式。

其中,ORM框架具有数据类型转换、请求语句格式转换和返回结果转换的功能,下面以以ORM框架为sequelize组件为转换过程进行说明,其他ORM框架创建数据库连接池的方法可参照sequelize组件的描述。

代码数据库操作代码包中增加有达梦数据库所需的数据类型以及类型对应的适配语句。具体在sequelize目录下的data-types.js文件中增加达梦数据库所需的数据类型和适配语句,适配语句将第一数据类型转换为达梦数据库支持的第二数据类型,例如:第一数据类型包括VARCHAR2、NUMBER、DOUBLE、CLOB、BOOLEAN、BLOB等,每个数据类型创建一个key方法和tosql方法用于将该数据类型转换为达梦数据库支持的第二数据类型。sequelize组件中第一数据类型和第二数据类型的映射关系如下:

所述第一数据类型为INTEGER,所述第二数据类型为DMDB_NUMBER;或

所述第一数据类型为DOUBLE,所述第二数据类型为DMDB_DOUBLE;或

所述第一数据类型为TEXT,所述第二数据类型为DMDB_CLOB;或

所述第一数据类型为BOOLEAN,所述第二数据类型为DMDB_BOOLEAN;或

所述第一数据类型为BLOB,所述第二数据类型为DMDB_BLOB。

将该映射关系记录到sequelize模型库中,用于后续的数据类型的转换。

进一步的,计算机设备实现数据库表的同步,创建达梦数据库对应的数据类型表,通过sequelize组件的模型注册方法import注册到模型库中。使用同步方法sync同步数据表,import方法获取data-types.js中设置的数据类型和适配语句。根据创建的sql语句模板,通过表名、字段、类型拼接对应的表创建sql语句。例如:CRAET TABLE“user”(ID number(36)NOT NULL,MY_NAME varchar2(64)DEFAULTNULL)。生成sql语句后使用query方法执行该sql语句,query方法获取到sql语句后,一直往下执行最终会调用run方法,则run方法会通过调用一开始生成的连接实例对象来操作数据库,最终达到创建数据表的目的。

进一步的,来自sequelize组件的请求语句需转换为达梦数据库支持的格式,计算机设备通过sequelize组件对外暴露统一接口,例如:findALL、bulkCreat、create、destroy、execute等,创建DMDBQueryGenerator语句生成类继承于AbstractQueryGenerator,该类中内置每种接口的达梦数据库操作语句模板,根据传入不同参数进行sql语句生成(通过字符串拼接方法),生成后统一使用连接实例对象操作数据库实现sequelize组件接口的增加、删除、查找、修改达梦数据库的操作。

进一步的,来自达梦数据库的返回结果需转换为sequelize组件支持的格式,以保证返回接口的数据统一性。具体方法为:在最终执行语句run方法中操作达梦数据库,此处会返回达梦数据库的操作结果promise对象,在promise对象最后一个then来获取处理返回值,此处会调用formatResult方法转换返回值得到最终结果,转换时通过data-types.js中定义的映射关系进行转换。

本申请的实施例中,ORM框架具有支持node.js的能力,由于ORM框架本身支持sql数据库的操作,本申请通过在ORM框架中加载达梦数据库操作代码包,不需要单独进行编码,因此开发人员只需要一套代码即可支持sql数据库和达梦数据库的操作,减少开发成本和维护时间。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参见图3,其示出了本申请一个示例性实施例提供的达梦数据库的适配装置的结构示意图,以下简称装置3。该装置3可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。装置3包括:创建单元301、连接单元302、转换单元303。

创建单元301,用于调用ORM框架中的达梦数据库操作代码包创建达梦数据库的数据库连接池;

连接单元302,用于通过所述数据库连接池数连接到所述达梦数据库;

转换单元303,用于将来自所述ORM框架的第一数据类型转换为所述达梦数据库支持的第二数据类型,创建所述达梦数据库支持的数据类型表,以及将来自所述ORM框架的请求语句的格式转换为所述达梦数据库支持的格式,将来自所述达梦数据库的返回结果的格式转换为所述sequelize组件支持的格式。

在一个或多个可能的实施例中,所述调用ORM框架中的达梦数据库操作代码包创建达梦数据库的数据库连接池之前,还包括:

根据所述sequelize组件的\lib\dialects\mysql目录中的代码包生成达梦数据库操作代码包;

将所述达梦数据库操作代码包放置在所述sequelize组件的\lib\dialects\目录中。

在一个或多个可能的实施例中,

所述第一数据类型为INTEGER,所述第二数据类型为DMDB_NUMBER;或

所述第一数据类型为DOUBLE,所述第二数据类型为DMDB_DOUBLE;或

所述第一数据类型为TEXT,所述第二数据类型为DMDB_CLOB;或

所述第一数据类型为BOOLEAN,所述第二数据类型为DMDB_BOOLEAN;或

所述第一数据类型为BLOB,所述第二数据类型为DMDB_BLOB。

在一个或多个可能的实施例中,所述调用ORM框架中的达梦数据库操作代码包创建达梦数据库的数据库连接池,包括:

加载所述达梦数据库操作代码包;

根据账号信息和服务地址进入到所述达梦数据库的驱动类中;

调用所述驱动类中的creatTableQurey方法创建数据库连接池。

在一个或多个可能的实施例中,所述通过所述数据库连接池数连接到所述达梦数据库,包括:

监测所述数据库连接池中各个数据库连接的负荷状态;

将负荷状态最轻的数据库连接分配给所述ORM框架,以使所述ORM框架通过所述数据库连接访问所述达梦数据库。

在一个或多个可能的实施例中,所述请求语句用于对所述达梦数据库执行增加操作、删除操作、查找操作或修改操作。

在一个或多个可能的实施例中,所述将来自所述达梦数据库的返回语句的格式转换为所述sequelize组件支持的格式,包括:

获取来自所述达梦数据库的操作结果promise对象;

在所述promise对象中的最后一个then字段确定返回值;

将所述返回值的格式转换为所述sequelize组件支持的格式。

需要说明的是,上述实施例提供的装置3在执行达梦数据库的适配方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成上述的全部或者部分功能。另外,上述实施例提供的达梦数据库的适配装置与达梦数据库的适配方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2所示实施例的方法步骤,具体执行过程可以参见图2所示实施例的具体说明,在此不进行赘述。

本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的达梦数据库的适配方法。

请参见图4,为本申请实施例提供了一种计算机设备的结构示意图。如图4所示,所述计算机设备400可以包括:至少一个处理器401,至少一个网络接口404,用户接口403,存储器405,至少一个通信总线402。

其中,通信总线402用于实现这些组件之间的连接通信。

其中,用户接口403可以包括显示屏(Display)、摄像头(Camera),可选用户接口403还可以包括标准的有线接口、无线接口。

其中,网络接口404可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。

其中,处理器401可以包括一个或者多个处理核心。处理器401利用各种接口和线路连接整个计算机设备400内的各个部分,通过运行或执行存储在存储器405内的指令、程序、代码集或指令集,以及调用存储在存储器405内的数据,执行计算机设备400的各种功能和处理数据。可选的,处理器401可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable GateArray,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器401可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器401中,单独通过一块芯片进行实现。

其中,存储器405可以包括随机存储器(RandomAccess Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器405包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器405可用于存储指令、程序、代码、代码集或指令集。存储器405可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器405可选的还可以是至少一个位于远离前述处理器401的存储装置。如图4所示,作为一种计算机存储介质的存储器405中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。

在图4所示的计算机设备400中,用户接口403主要用于为用户提供输入的接口,获取用户输入的数据;而处理器401可以用于调用存储器405中存储的应用程序,并具体执行如图2所示的方法,具体过程可参照图2所示,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号