数据读写的方法、装置和电子设备与流程

文档序号:26049966发布日期:2021-07-27 15:24阅读:87来源:国知局
数据读写的方法、装置和电子设备与流程

本发明涉及软件的技术领域,尤其是涉及一种数据读写的方法、装置和电子设备。



背景技术:

在软件开发的领域,经常会遇到对业务数据进行读写的处理任务。

现有技术中,开发人员在处理数据读写的任务时,一般是在业务代码中直接增加数据读写的代码,这样,用户在对某个数据库中的数据集执行数据操作(包括增、删、改和查的数据操作)时,就会调用相应的业务程序,进而业务程序再与绑定的存储层中的数据库之间进行直接交互完成对应的数据操作。在上述数据读写的方法中,存在以下缺陷:由于数据库类型多样(例如,mysql、hive等),对于每种数据库类型都需要引入多种依赖(例如,java依赖、python依赖),按照不同的开发语言规范开发许多数据读写的模板代码,降低了业务开发效率;并且,数据读写的代码与业务代码耦合,导致业务程序臃肿;此外,上述业务程序与存储层、开发语言绑定,通用性较差。

综上,现有的数据读写的方法存在开发效率低、业务程序臃肿以及通用性较差的技术问题。



技术实现要素:

本发明的目的在于提供一种数据读写的方法、装置和电子设备,以缓解现有的数据读写的方法开发效率低、业务程序臃肿以及通用性较差的技术问题。

第一方面,本发明实施例提供了一种数据读写的方法,所述方法包括:获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求;基于所述数据读写请求确定通用数据读写模型;对所述通用数据读写模型进行解析,得到数据读写指令,其中,所述数据读写指令与所述数据读写请求所对应的待读写数据库的数据库类型相符;根据所述数据读写指令对所述待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将所述数据读写操作结果返回至所述业务程序。

进一步的,所述rpc模块包括:rpc模块客户端和rpc模块服务端;获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求,包括:所述rpc模块客户端获取业务程序调用所述通用数据读写接口发起的数据读写请求;基于所述数据读写请求确定通用数据读写模型,包括:所述rpc模块服务端基于所述数据读写请求确定通用数据读写模型;对所述通用数据读写模型进行解析,包括:所述rpc模块服务端对所述通用数据读写模型进行解析,得到所述数据读写指令;根据所述数据读写指令对所述待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将所述数据读写操作结果返回至所述业务程序,包括:所述rpc模块服务端根据所述数据读写指令对所述待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将所述数据读写操作结果通过所述rpc模块客户端返回至所述业务程序。

进一步的,在所述rpc模块客户端获取业务程序调用所述通用数据读写接口发起的数据读写请求之后,在所述rpc模块服务端基于所述数据读写请求确定通用数据读写模型之前,所述方法还包括:所述rpc模块客户端根据所述数据读写请求携带的用户信息对所述数据读写请求进行用户认证;认证通过后,所述rpc模块客户端根据所述用户信息对所述数据读写请求进行鉴权。

进一步的,在鉴权通过后,所述方法还包括:所述rpc模块客户端将所述数据读写请求转换为rpc对象发送至所述rpc模块服务端,以使所述rpc模块服务端根据所述rpc对象确定所述通用数据读写模型。

进一步的,所述rpc模块服务端根据所述rpc对象确定所述通用数据读写模型,包括:所述rpc模块服务端根据预设规则将所述rpc对象映射为所述通用数据读写模型。

进一步的,所述rpc模块服务端对所述通用数据读写模型进行解析,包括:所述rpc模块服务端提取所述通用数据读写模型中的对所述待读写数据库进行数据读写操作的信息;所述rpc模块服务端根据提取到的对所述待读写数据库进行数据读写操作的信息,确定对所述待读写数据库进行数据读写操作的数据读写指令。

进一步的,所述待读写数据库包括以下任一种数据库:mysql数据库、hive数据库和redis数据库。

进一步的,所述业务程序调用rpc模块的通用数据读写接口时,采用任意一种开发语言。

第二方面,本发明实施例还提供了一种数据读写的装置,所述装置包括:获取单元,用于获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求;确定单元,用于基于所述数据读写请求确定通用数据读写模型;解析单元,用于对所述通用数据读写模型进行解析,得到数据读写指令,其中,所述数据读写指令与所述数据读写请求所对应的待读写数据库的数据库类型相符;数据读写操作单元,用于根据所述数据读写指令对所述待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将所述数据读写操作结果返回至所述业务程序。

第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。

第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述第一方面任一项所述的方法。

在本发明实施例中,提供了一种数据读写的方法,该方法包括:先获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求;然后,基于数据读写请求确定通用数据读写模型;进而,再对通用数据读写模型进行解析,得到数据读写指令;最后,根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果返回至业务程序。通过上述描述可知,本发明的数据读写的方法将数据读写的任务与业务程序实现了解耦,简化了业务程序代码,另外,业务程序只需调用rpc模块的通用数据读写接口就可以发起数据读写请求,并且可对任意一种数据库类型的数据库进行数据读写的操作,无需再按照不同的开发语言规范开发适用于不种数据库的数据读写的模板代码,提高了业务开发效率,通用性好,缓解了现有的数据读写的方法开发效率低、业务程序臃肿以及通用性较差的技术问题。

附图说明

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

图1为本发明实施例提供的一种数据读写的方法的流程示意图;

图2为本发明实施例提供的另一种数据读写的方法的流程示意图;

图3为本发明实施例提供的数据读写的方法的数据流示意图;

图4为本发明实施例提供的一种数据读写的装置的示意图;

图5为本发明实施例提供的一种计算机设备的示意图。

具体实施方式

下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,开发人员在处理数据读写的任务时,都是直接在业务程序代码中增添数据读写的代码,会出现难以迭代复用、开发效率低下的问题。

基于此,本发明实施例提供了一种数据读写的方法、装置和电子设备,以缓解现有的数据读写的方法通用性差、开发效率低下的技术问题。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种数据读写的方法进行详细介绍,参见图1所示的一种数据读写的方法的流程示意图,主要包括以下步骤:

步骤s102,获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求。

在本发明实施例中,该数据读写的方法的执行主体为rpc模块。rpc是一种通过网络从远程计算机程序上请求服务的方式,可用于开发网络分布式应用。

上述通用数据读写接口是指业务程序可以采用任意一种开发语言(例如:java、python、c++、rust、go等)来调用上述通用数据读写接口,也就是本发明的数据读写的方法是一种跨语言的数据读写的方法,开发人员可以选择自己擅长的语言进行业务开发,可提升开发效率。

步骤s104,基于数据读写请求确定通用数据读写模型。

上述通用数据读写模型与存储无关,实际上,上述通用数据读写模型是指将对不同数据库的读写操作抽象为一个通用的类,上述通用数据读写模型包括:对数据库中的表进行读写操作时的表信息(表名、字段名、字段类型、表属性等)、表所属的数据库信息(ip地址、端口、库标识符、库类型等)、操作信息(操作类型如增删改查、操作数据等)。正是由于上述通用数据读写模型的存在,才能实现对多数据库(指不同数据库类型的数据库)的数据读写操作,体现了本发明的数据读写的方法的通用性。

步骤s106,对通用数据读写模型进行解析,得到数据读写指令。

具体的,上述数据读写指令与数据读写请求所对应的待读写数据库的数据库类型相符。

步骤s108,根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果返回至业务程序。

在本发明实施例中,提供了一种数据读写的方法,该方法包括:先获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求;然后,基于数据读写请求确定通用数据读写模型;进而,再对通用数据读写模型进行解析,得到数据读写指令;最后,根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果返回至业务程序。通过上述描述可知,本发明的数据读写的方法将数据读写的任务与业务程序实现了解耦,简化了业务程序代码,另外,业务程序只需调用rpc模块的通用数据读写接口就可以发起数据读写请求,并且可对任意一种数据库类型的数据库进行数据读写的操作,无需再按照不同的开发语言规范开发适用于不种数据库的数据读写的模板代码,提高了业务开发效率,通用性好,缓解了现有的数据读写的方法开发效率低、业务程序臃肿以及通用性较差的技术问题。

上述内容对本发明的数据读写的方法进行了简要描述,下面对其中涉及到的具体内容进行详细描述。

在本发明的一个可选实施例中,上述通用数据读写接口为使用c++动态连接库的方式实现的。本发明的数据读写的方法使用了c++语言对于其它各种开发语言的支持特性,开发了c++动态连接库封装公用逻辑,对外暴露读写接口,各种开发语言可以调用动态连接库实现的通用数据读写接口,从而发起数据读写请求。

在本发明的一个可选实施例中,rpc模块包括:rpc模块客户端和rpc模块服务端;

上述步骤s102,获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求,参考图2,包括:步骤s201,rpc模块客户端获取业务程序调用通用数据读写接口发起的数据读写请求。

具体的,rpc模块客户端获取业务程序通过任意一种开发语言调用通用数据读写接口发起的数据读写请求。

在rpc模块客户端获取业务程序调用通用数据读写接口发起的数据读写请求之后,该方法还包括:rpc模块客户端根据数据读写请求携带的用户信息对数据读写请求进行用户认证;认证通过后,rpc模块客户端根据用户信息对数据读写请求进行鉴权;在鉴权通过后,rpc模块客户端将数据读写请求转换为rpc对象发送至rpc模块服务端,以使rpc模块服务端根据rpc对象确定通用数据读写模型。

上述用户认证和鉴权的过程提高了数据读写的安全性。

上述步骤s104,基于数据读写请求确定通用数据读写模型,参考图2,包括:步骤s202,rpc模块服务端基于rpc对象确定通用数据读写模型。

具体的,rpc模块服务端根据预设规则将rpc对象映射为通用数据读写模型。上述预设规则是事先定义好的,定义的方式为rpc的模型语言,具体可以为grpc的protobuf。

上述步骤s106,对通用数据读写模型进行解析,参考图2,包括:步骤s203,rpc模块服务端对通用数据读写模块进行解析,得到数据读写指令。

具体的,rpc模块服务端中的执行引擎对通用数据读写模块进行解析,解析成符合对应存储(与数据读写请求所对应的待读写数据库的数据库类型相对应)的数据读写指令。具体过程可以为:rpc模块服务端提取通用数据读写模型中的对待读写数据库进行数据读写操作的信息;rpc模块服务端根据提取到的对待读写数据库进行数据读写操作的信息,确定对待读写数据库进行数据读写操作的数据读写指令。

上述步骤s108,根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果返回至业务程序,参考图2,包括:步骤s204,rpc模块服务端根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果通过rpc模块客户端返回至业务程序。

上述待读写数据库包括以下任一种数据库:mysql数据库、hive数据库和redis数据库。

通过上述描述可知,业务程序只是调用了rpc模块客户端的通用数据读写接口,而rpc模块服务端才具有实际的数据读写操作,也就是数据读写操作转移到了rpc模块服务端,这样,更加便于进行集中权限管控和网络安全策略防护。

传统的数据读写操作直接放到业务程序中,就相当于业务程序有连接数据库的网络权限(不然数据读写操作无法发送至数据库),如果有100个业务程序,就需要开100个网络权限,若100个业务程序部署在100台机器上,这样的分布很分散,若要升级安全策略,较为复杂,维护成本高,难以及时修复漏洞和升级防护措施。而本发明将数据读写操作转移到rpc模块服务端后,显然,便于进行集中权限管控和网络安全策略防护。

下面结合图3对本发明的数据读写的方法进行整体介绍:

用户在对某个数据库中的数据集执行数据操作时,就会调用相应的业务程序,进而业务程序使用任意一种开发语言(例如,java、python等)调用rpc模块客户端的通用数据读写接口发起数据读写请求(其中携带有用户信息);rpc模块客户端根据数据读写请求携带的用户信息对数据读写请求进行用户认证;认证通过后,rpc模块客户端根据用户信息对数据读写请求进行鉴权;鉴权通过后,rpc模块客户端将数据读写请求转换为rpc对象发送至rpc模块服务端;rpc模块服务端收到rpc对象后,根据rpc对象构建通用数据读写模型;rpc模块服务端的执行引擎再把通用数据读写模型解析为与数据读写请求所对应的待读写数据库的数据库类型对应的数据读写指令;执行引擎根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,进而将数据读写操作结果转换成rpc对象返回至rpc模块客户端,最后,rpc模块客户端将rpc对象转换成数据读写操作结果返回至业务程序。

本发明的数据读写的方法存在以下优点:

(1)将数据读写操作转移到了rpc模块服务端集中管理,业务开发人员不用关心数据读写方面的功能与安全方面的开发,且通用数据读写接口的使用可以使开发人员选择自己擅长的语言进行业务开发,提升了开发效率;

(2)将数据读写放到rpc模块,rpc模块对业务程序只开放读写接口,只需简单调用即可,不需要开放网络给业务程序,可防止存储层被非法访问,同时,实现了业务程序与数据读写的解耦,使得业务程序轻量化,能方便地迭代复用,通用数据读写接口的使用也实现了与开发语言的解耦,通用性好;

(3)可对数据读写请求进行安全可靠的鉴权,有效的提高了数据访问的安全性。

本发明实施例还提供了一种数据读写的装置,该数据读写的装置主要用于执行本发明实施例上述内容所提供的数据读写的方法,以下对本发明实施例提供的数据读写的装置做具体介绍。

图4是本发明实施例的一种数据读写的装置的示意图,如图4所示,该数据读写的装置主要包括:获取单元10、确定单元20、解析单元30和数据读写操作单元40,其中:

获取单元,用于获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求;

确定单元,用于基于数据读写请求确定通用数据读写模型;

解析单元,用于对通用数据读写模型进行解析,得到数据读写指令,其中,数据读写指令与数据读写请求所对应的待读写数据库的数据库类型相符;

数据读写操作单元,用于根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果返回至业务程序。

在本发明实施例中,提供了一种数据读写的装置,该装置包括:先获取业务程序调用rpc模块的通用数据读写接口发起的数据读写请求;然后,基于数据读写请求确定通用数据读写模型;进而,再对通用数据读写模型进行解析,得到数据读写指令;最后,根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果返回至业务程序。通过上述描述可知,本发明的数据读写的装置将数据读写的任务与业务程序实现了解耦,简化了业务程序代码,另外,业务程序只需调用rpc模块的通用数据读写接口就可以发起数据读写请求,并且可对任意一种数据库类型的数据库进行数据读写的操作,无需再按照不同的开发语言规范开发适用于不种数据库的数据读写的模板代码,提高了业务开发效率,通用性好,缓解了现有的数据读写的装置开发效率低、业务程序臃肿以及通用性较差的技术问题。

可选地,通用数据读写接口为使用c++动态连接库的方式实现的。

可选地,rpc模块包括:rpc模块客户端和rpc模块服务端;上述获取单元还用于:rpc模块客户端获取业务程序调用通用数据读写接口发起的数据读写请求;上述确定单元还用于:rpc模块服务端基于数据读写请求确定通用数据读写模型;上述解析单元还用于:rpc模块服务端对通用数据读写模型进行解析,得到数据读写指令;上述数据读写操作单元还用于:rpc模块服务端根据数据读写指令对待读写数据库执行对应的数据读写操作,得到数据读写操作结果,并将数据读写操作结果通过rpc模块客户端返回至业务程序。

可选地,该装置还用于:rpc模块客户端根据数据读写请求携带的用户信息对数据读写请求进行用户认证;认证通过后,rpc模块客户端根据用户信息对数据读写请求进行鉴权。

可选地,在鉴权通过后,该装置还用于:rpc模块客户端将数据读写请求转换为rpc对象发送至rpc模块服务端,以使rpc模块服务端根据rpc对象确定通用数据读写模型。

可选地,该装置还用于:rpc模块服务端根据预设规则将rpc对象映射为通用数据读写模型。

可选地,解析单元还用于:rpc模块服务端提取通用数据读写模型中的对待读写数据库进行数据读写操作的信息;rpc模块服务端根据提取到的对待读写数据库进行数据读写操作的信息,确定对待读写数据库进行数据读写操作的数据读写指令。

可选地,待读写数据库包括以下任一种数据库:mysql数据库、hive数据库和redis数据库。

可选地,业务程序调用rpc模块的通用数据读写接口时,采用任意一种开发语言。

本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。本申请实施例提供的数据读写的装置与上述实施例提供的数据读写的方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本申请实施例还提供了一种电子设备,具体的,该电子设备包括处理器和存储装置;该存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上实施方式所述的方法。

作为一个示例,如图5所示,本申请实施例提供的一种计算机设备500,包括:处理器501、存储器502和总线,所述存储器502存储有所述处理器501可执行的机器可读指令,当计算机设备运行时,所述处理器501与所述存储器502之间通过总线通信,所述处理器501执行所述机器可读指令,以执行如上述数据读写的方法的步骤。

具体地,上述存储器502和处理器501能够为通用的存储器和处理器,这里不做具体限定,当处理器501运行存储器502存储的计算机程序时,能够执行上述数据读写的方法。

其中,上述计算机设备500可以用于执行图1所示的数据读写的方法,此时该计算机设备500可以是开发终端。

对应于上述数据读写的方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述数据读写的方法的步骤。

本申请实施例所提供的数据读写的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述移动控制方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的范围,都应涵盖在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1