一种集成关系型和非关系型数据库数据转换的算子的制作方法

    专利2022-07-08  76

    本发明属于关系型和非关系型数据库之间数据相互转换
    技术领域
    :,具体涉及一种集成关系型和非关系型数据库数据转换的算子。
    背景技术
    ::随着web2.0的发展,业务处理流程逐渐丰富多变,作为数据下沉方向的数据库显得颇为重要。为符合不同的业务处理逻辑,往往需要不同类别的数据库,比如传统的关系型数据库oracle、mysql、postgres以存储海量数据的hive库和缓存性redis数据库,相应的同项目中管理这些数据库显得颇为繁琐复杂,对数据进行夸库操作存在很大问题,请求方式、处理引擎多变,处理业务逻辑错中复杂,效率低下。通常业务中涉及数据之间转换需要处理以下几个关键点:数据输入的库类型、库名、库表、库密码、库用户,目标库类型、库名、库表、库密码、库用户、库字段相关信息,任务的唯一标识id。业务代码中处理这些请求需要每次都分门别类连接各自不同的库、关闭连接,会造成大量臃肿的处理逻辑和重复性工作。既然这些前期准备工作和后续调用库进行任务规划逻辑如此相似,那么就可以认为他们处理的业务就是一个任务单元,但目前技术中要很好地处理这种业务单元进行数据在算子中转换的流程还没有一个统一和简便的办法。技术实现要素:针对现有设备存在的缺陷和问题,本发明提供一种,有效的解决了现有设备中存在的业务代码中处理请求过程中需要每次都分门别类连接各自不同的库、关闭连接,会造成大量臃肿的处理逻辑和重复性工作。本发明解决其技术问题所采用的方案是:一种集成关系型和非关系型数据库数据转换的算子,包括如下步骤:步骤1:数据连接初始化确定配置文件的数据库类型,根据数据库基础信息初始化配置文件的配置参数,提供配置文件获取连接的配置类步骤2:构建数据库链接池和数据库连接工厂然后根据配置类构建与配置文件对应的数据库链接池和数据库连接工厂,在数据库连接工厂初始化的构造函数里导入各自对应的配置类,便于上层服务根据数据源类型获取对应的数据库连接;步骤3:创建统一请求体根据web请求参数,提取数据转换中表到表、表到文件、文件到表的共同特性,并根据共同特性提炼出统一的请求体;请求体包含input对象、output对象、请求体唯一标识和任务id;步骤4:转换算子执行请求体通过请求体的任务id获取数据库之间的数据转换算子的类型,并由类型区分要执行的转换算子,算子执行之前根据input拿到数据库链接池和数据库连接工厂,向算子传入执行的sql,并将结果输出到output对象中指定的位置;步骤5:提供rest接口服务rest接口是针对第三方调用的服务,第三方用户按照rest接口规范在web页面拖拽组件、填写参数组装请求体的input对象、output对象所需要的参数,包含来源数据库、目标数据库、数据库参数、数据提取条件、任务id等,第三方用户发送请求,调用步骤4。进一步的,在步骤5中调用接口后,后端系统根据输入和输出元信息,验证必要条件是否成立,验证输入源数据库是否健康,数据源是否包含输入表,验证输出库是否健康,验证输出库表或这输出位置是否存在。进一步的,在步骤4中执行算子之前,根据请求体的类型为请求体分配不同的算子,算子的类型包括相同库转换、异构库转换、库到文件实体转换。进一步的,步骤1中所述配置类包括数据库连接单次释放和数据库连接缓冲池,配置类根据查询和转换的数据不同保持长连接或者短链接,并匹配各自执行算子。进一步的,在步骤4中,算子执行过程包括数据文件下沉或者临时文件下沉,需要在input和output对象中指定位置,然后根据数据下沉的位置选择执行下沉的逻辑,所述数据下沉的位置包括oracle表、txt文件和hdfs集群。进一步的,步骤4中,算子执行的前提是同任务同时间只能执行一次,算子执行期间的状态会保留在内存中,步骤4中发起的请求,步骤3中会返回算子的运行状态,提供给用户相应的操作规范。进一步的,步骤4中的output对象会标注提取数据的范围、提取数据的说明、提取字段的数据类型和提取字段的名称,根据提取字段的条件说明和对应源数据库的数据格式,经过统一类型转换,生成输出数据库的类型、字段长度和字段说明。进一步的,步骤4中用户组装请求体数据源后,用户能够通过web交互页面看到算子到算子之间建立连接、算子执行成功标志、算子执行进度和算子执行失败详情提示;算子执行完毕之后,用户可以看到本次算子执行耗时、算子重新调度、算子调用者、算子执行数据预览,方便用户复核执行计划与预期是否一致。进一步的,步骤1中,数据库类型可以为oracle、mysql、postgre和hive中的任一种。本发明的有益效果:本发明提供了一种集成关系型和非关系型数据库数据转换的算子,直接将web请求转换为算子运行request-body请求体,根据请求体的类别等字段运行相应转换算子,分门别类、统一规划、统一转发由算子决定数据库连接的执行和释放,大大减少了后端冗余代码,极大提高了开发效率。本发明创建request-body请求体后,自由的且由代码分门别类的执行各自的算子,执行task任务的结果会封装在response-body结果中,运行中的状态、执行时长、执行效果、报错信息统一返回固定格式,给客户提供直观的处理意见。附图说明图1是本发明的系统架构图。图2是统一数据库初始化工厂流程图。图3是本发明执行统一请求体流程图。图4是本发明提供服务接口方法流程图。具体实施方式下面结合附图和实施例对本发明进一步说明。实施例1:随着web2.0的发展,业务处理流程逐渐丰富多变,作为数据下沉方向的数据库显得颇为重要。为符合不同的业务处理逻辑,往往需要不同类别的数据库,处理过程复杂,效率低下等问题。本实施例实现了一种集成关系型和非关系型数据库数据转换的算子。本实施例在具体实施时包括如下步骤:步骤1:数据连接初始化确定配置文件的数据库类型,根据数据库基础信息初始化配置文件的配置参数,提供配置文件获取连接的配置类;所述配置类包括数据库连接单次释放和数据库连接缓冲池,配置类根据查询和转换的数据不同保持长连接或者短链接,并匹配各自执行算子,数据库类型可以为oracle、mysql、postgre和hive中的任一种。步骤2:构建数据库链接池和数据库连接工厂然后根据配置类构建与配置文件对应的数据库链接池和数据库连接工厂,在数据库连接工厂初始化的构造函数里导入各自对应的配置类,便于上层服务根据数据源类型获取对应的数据库连接;步骤3:创建统一请求体根据web请求参数,提取数据转换表到表、表到文件、文件到表的共同特性,并根据共同特性提炼出统一的请求体,具体的代码如下:{"input":[{"databasename":"middle","id":"1","tablename":"oracle_520000_201910101857131606","type":"datasource"}],"output":{"databasename":"","directory":"/tmp/extract/extracthive2oracle","fieldlist":[{"comment":"传输层协议","fieldname":"trans_protocol","fieldtype":"varchar2"}],"ip":"10.1.1.1","password":"jdk","sid":"jdk","tablename":"extracthive2oracle","username":"jdks"},"procedureid":"1","id":"9f8f64ca-ae0e-41e8-a833-0af2afd6a501","uuid":"0"}请求体包含input对象、output对象、请求体唯一标识和任务id。步骤4:转换算子执行请求体通过请求体的任务id获取数据库之间的数据转换算子的类型,并由类型区分要执行的转换算子,算子执行之前,根据请求体的类型为请求体分配不同的算子,算子的类型包括相同库转换、异构库转换、库到文件实体转换,根据input拿到数据库链接池和数据库连接工厂,向算子传入执行的sql,并将结果输出到output对象中指定的位置,算子执行过程中涉及到的数据文件下沉或者临时文件下沉,需要在input和output对象中指定位置,涉及到但不限于oracle表、txt文件、hdfs集群。本实施例中算子执行的前提是同任务同时间只能执行一次,算子执行期间的状态会保留在内存中,步骤4中发起的请求,步骤3中会返回算子的运行状态,提供给用户相应的操作规范。本步骤中的output对象会标注提取数据的范围、提取数据的说明、提取字段的数据类型和提取字段的名称,根据提取字段的条件说明和对应源数据库的数据格式,经过统一类型转换,生成输出数据库的类型、字段长度和字段说明,用户通过web交互页面拖拽请求数据源后,能够看到算子到算子之间建立连接、算子执行成功标志、算子执行进度和算子执行失败详情提示;算子执行完毕之后,用户可以看到本次算子执行耗时、算子重新调度、算子调用者、算子执行数据预览,方便用户复核执行计划与预期是否一致。步骤5:提供rest接口服务rest接口是针对第三方调用的服务,第三方用户按照rest接口规范在web页面拖拽组件、填写参数组装请求体的input对象、output对象所需要的参数,包含来源数据库、目标数据库、数据库参数、数据提取条件、任务id等,第三方用户发送请求,调用步骤4。调用接口后,后端系统根据输入和输出元信息,验证必要条件是否成立,验证输入源数据库是否健康,数据源是否包含输入表,验证输出库是否健康,验证输出库表或这输出位置是否存在。如图1所示本实施例的系统架构图,涉及到前端、web后端、大数据集群平台、数据库相关技术,展示层为web交互平台,控制层为请求体提供数据接受,服务层处理业务、条件拆分、条件组装,为算子调用请求体筹备条件,关系型数据库之间转换、hive库之间转换、关系型到hive之间转换为算子。如图2所示,系统启动,根据系统配置,hive库会初始化两种数据库连接工厂并注入数据库的connection参数,一种是单次使用连接适用于短连接执行单次任务,一种是数据库连接池执行大批量数据写入写出、预执行计划。图中connectionproperties为数据库的数据源参数,指的是权力要求书中的配置类,jdbcpool、hivepool为权力要求书所指的数据库连接池,durid为连接数据库的规范。这3个共同构建出数据库factory,就是指的工厂。图3所示,执行统一请求体流程。从web平台页面填写的参数提取出统一request-body请求体,服务转发层代码根据需求转发到各个算子服务节点执行算子task任务,任务有自己相应的connection数据源参数,任务执行期间会实时记录该任务状态到数据库,写入执行动态成功或者失败,执行结果会实时写入output请求参数设定的库表或者hdfs路径下的文件夹。如图4所示,提供rest接口服务实施方式,用户可在web页面拖拽数据源模块,然后编辑请求体的相关参数,包括源库、源表、源ip地址、源用户密码,目标库、目标表或者路径、目标库用户密码。控制层、服务转发层根据具体请求体转发请求到相应的服务器共算子任务执行。算子任务执行前提是传入配置的数据源,调用数据库执行工厂,获得数据库执行引擎,执行sql规则计划,获得结果输出到请求体配置的下沉位置,惊醒结果存储。最后返回任务执行的运行中的状态、执行时长、执行效果、报错信息统一返回固定格式,给客户提供直观的处理意见。由此,本发明提供了一种集成关系型和非关系型数据库数据转换的算子,直接将web请求转换为算子运行的request-body请求体,根据请求体的类别等字段执行相应转换算子。算子调用数据库的工厂,注入数据库连接参数,分门别类、统一规划、统一转发由算子决定数据库的运行和停止,大大减少了后端冗余代码,极大提高了开发效率,充分利用数据库中的数据资源,能够高效实现大量的数据库操作。当前第1页1 2 3 当前第1页1 2 3 
    技术特征:

    1.一种集成关系型和非关系型数据库数据转换的算子,其特征在于:包括如下步骤:

    步骤1:数据连接初始化

    确定配置文件的数据库类型,根据数据库基础信息初始化配置文件的配置参数,提供配置文件获取连接的配置类

    步骤2:构建数据库链接池和数据库连接工厂

    然后根据配置类构建与配置文件对应的数据库链接池和数据库连接工厂,在数据库连接工厂初始化的构造函数里导入各自对应的配置类,便于上层服务根据数据源类型获取对应的数据库连接;

    步骤3:创建统一请求体

    根据web请求参数,提取数据转换中表到表、表到文件、文件到表的共同特性,并根据共同特性提炼出统一的请求体;请求体包含input对象、output对象、请求体唯一标识和任务id;

    步骤4:转换算子执行请求体

    通过请求体的任务id获取数据库之间的数据转换算子的类型,并由类型区分要执行的转换算子,算子执行之前根据input拿到数据库链接池和数据库连接工厂,向算子传入执行的sql,并将结果输出到output对象中指定的位置;

    步骤5:提供rest接口服务

    rest接口是针对第三方调用的服务,第三方用户按照rest接口规范在web页面拖拽组件、填写参数组装请求体的input对象、output对象所需要的参数,包含来源数据库、目标数据库、数据库参数、数据提取条件、任务id等,第三方用户发送请求,调用步骤4。

    2.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:在步骤5中调用接口后,后端系统根据输入和输出元信息,验证必要条件是否成立,验证输入源数据库是否健康,数据源是否包含输入表,验证输出库是否健康,验证输出库表或这输出位置是否存在。

    3.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:在步骤4中执行算子之前,根据请求体的类型为请求体分配不同的算子,算子的类型包括相同库转换、异构库转换、库到文件实体转换。

    4.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:步骤1中所述配置类包括数据库连接单次释放和数据库连接缓冲池,配置类根据查询和转换的数据不同保持长连接或者短链接,并匹配各自执行算子。

    5.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:在步骤4中,算子执行过程包括数据文件下沉或者临时文件下沉,需要在input和output对象中指定位置,然后根据数据下沉的位置选择执行下沉的逻辑,所述数据下沉的位置包括oracle表、txt文件和hdfs集群。

    6.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:步骤4中,算子执行的前提是同任务同时间只能执行一次,算子执行期间的状态会保留在内存中,步骤4中发起的请求,步骤3中会返回算子的运行状态,提供给用户相应的操作规范。

    7.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:步骤4中的output对象会标注提取数据的范围、提取数据的说明、提取字段的数据类型和提取字段的名称,根据提取字段的条件说明和对应源数据库的数据格式,经过统一类型转换,生成输出数据库的类型、字段长度和字段说明。

    8.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:步骤4中用户组装请求体数据源后,用户能够通过web交互页面看到算子到算子之间建立连接、算子执行成功标志、算子执行进度和算子执行失败详情提示;算子执行完毕之后,用户可以看到本次算子执行耗时、算子重新调度、算子调用者、算子执行数据预览,方便用户复核执行计划与预期是否一致。

    9.根据权利要求1所述的集成关系型和非关系型数据库数据转换的算子,其特征在于:步骤1中,数据库类型可以为oracle、mysql、postgre和hive中的任一种。

    技术总结
    本发明属于关系型和非关系型数据库之间数据相互转换技术领域,具体涉及一种集成关系型和非关系型数据库数据转换的算子,直接将web请求转换为算子运行的Request‑Body请求体,根据请求体的类别等字段运行相应转换算子,分门别类、统一规划、统一转发由算子决定数据库连接的执行和释放,大大减少了后端冗余代码,极大提高了开发效率。

    技术研发人员:付曼;冯凯;王元卓
    受保护的技术使用者:中科院计算技术研究所大数据研究院
    技术研发日:2020.12.29
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21927.html

    最新回复(0)