一种区块链的动态新增多类型数据库数据操作上链方法与流程

文档序号:19351998发布日期:2019-12-06 21:30阅读:1160来源:国知局
一种区块链的动态新增多类型数据库数据操作上链方法与流程

本发明涉及区块链技术、智能合约、spring框架、mybatis框架技术,尤其涉及一种区块链的动态新增多类型数据库数据操作上链方法。



背景技术:

区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,用于存储区块链网络上所有用户的余额,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。

智能合约,区块链上的智能合约是指由solidity编写和编译并运行与区块链上的一串二进制代码,我们可以通过智能合约实现在区块链上的数据存储、读写以及一些逻辑操作,因此一些基于区块链的应用是利用智能合约完成的。

spring框架,一个轻量级的java开发框架,为了解决企业应用开发的复杂性而创建的。spring的核心是控制反转(ioc)和面向切面(aop)。简单来说,spring是一个分层的javase/eefull-stack(一站式)轻量级开源框架。

mybatis框架,一款优秀的持久层框架,它支持定制化sql、存储过程以及高级映射。mybatis避免了几乎所有的jdbc代码和手动设置参数以及获取结果集。mybatis可以使用简单的xml或注解来配置和映射原生信息,将接口和java的pojos(plainordinaryjavaobject,普通的java对象)映射成数据库中的记录。



技术实现要素:

由于一般区块链系统中涉及数据库并且数量固定,在系统启动过程中初始化完成,在业务飞速发展的情况下,会出现数据库的频繁的新增或者减少,伴随而来的最直接的问题就是需要重新启动项目导致业务的流畅性受到一定程度的影响,同时又想通过执行sql语言获取数据来进行数据上链。本发明的目的是针对现有区块链技术层面上的拓展,提供一种区块链的动态新增多类型数据库数据操作上链方法。

本发明的目的是通过以下技术方案来实现:在不改变业务正常进行的情况下,可以动态新增不同类型的数据库,可在界面直接对数据库进行操作,同时可以根据不同的场景,结合业务代码进行数据的获取并操作数据上链。

本发明是通过以下技术方案实现的:一种区块链的动态新增多类型数据库数据操作上链方法,包括如下步骤:

(1)区块链应用服务器启动后,系统默认加载已配置过的数据源对应的数据源信息,同时初始化占位符模板文件,所述数据源包括元数据库和新增数据源。

(2)动态添加数据源信息:

(2.1)动态添加驱动信息:数据库驱动上传到所述区块链应用服务器,同时填写所述数据库驱动的版本号,所述数据库驱动上传至区块链应用服务器的驱动信息被加密保存于所述元数据库,所述驱动信息包括数据库驱动上传的地址以及对应的驱动版本号。

(2.2)动态添加数据库连接信息:对于步骤2.1上传过的数据库驱动,新增数据库连接信息,将新增的数据库连接信息以及所述驱动信息关联,并加密保存至所述元数据库。所述新增数据库连接信息包括数据库服务器的ip、端口号、密码和数据源名称。

(2.3)动态选择数据库脚本文件信息:所述区块链应用服务器扫描系统中所有数据库脚本文件名并显示在操作界面上,操作者创建数据库脚本分组,所述数据库脚本文件名与所述数据库脚本分组关联,所述脚本分组与所述数据源信息关联,并将关联的信息加密保存至所述元数据库。

(3)通用工厂构建多类型sqlsession:

用户选择某个数据源名称后,系统首先将所述数据源信息动态填充到所述占位符模板文件,采用dom、sax解析器对所述占位符模板文件进行混合解析,系统读取所述数据库连接信息,最后运用工厂方法模式组合构建对应的sqlsession并保存于自定义session池中,方便在执行操作数据源时获取使用。

(4)新增多类型数据库数据操作上链:

a.代码层面:利用aop切面技术在计算机函数方法上添加注解,所述注解中指定数据源名称,所述计算机函数方法在执行过程中根据所述注解指定的数据源名称,操作数据源名称对应数据源信息中的数据,并将操作记录上链。

b.操作界面:用户通过步骤2在不重新启动应用的情况下动态添加新的数据源信息,添加后的新的数据源名称在用户可选的下拉列表中展示,用户通过手动切换所述数据源名称,编写执行sql脚本,操作选择所述数据源名称对应的数据源,将操作记录上链;或根据业务自动执行编写好的数据库脚本文件中的sql脚本,将操作记录上链。

进一步地,步骤1中所述占位符模板文件包括:数据库驱动信息、数据库连接信息、数据库脚本文件信息。

本发明的有益效果是:区块链应用的数据源的添加动态化:数据库横向复制(非水平拆分),以及数据库类型不固定,数据库数量不固定的情况下,有效的无需通过重新启动应用动态添加数据源实现多类型数据库数据采集上链,既可以达到脱离业务的数据操作并上链,也可以达到与业务相结合根据业务需要达到数据的操作及上链的目的,为保证数据源资源信息安全,采用对称加密的方式保存到元数据库;区块链应用的数据源切换方式多样化:一方面可以应用切面技术构建切面,通过注解配置指定计算机函数操作的数据源,另一方面也可以在操作界面通过选择数据源名称进行数据源切换,操作选择的数据源;区块链应用的多类型数据源适配:基于工厂设计模式,通过构建识别数据源驱动框架对驱动进行识别,构建不同类型数据源的sqlsession工厂,在执行操作数据源的动作时从session池中获取sqlsession工厂创建出来的sqlsession来对数据源操作上链。

附图说明

图1为本发明的方法应用流程图;

图2本发明实施例的执行过程流程图。

具体实施方式

下面结合附图和实施例详细描述本发明,使本发明的目的和效果变得更加明显。

图1为本发明一种区块链的动态新增多类型数据库数据操作上链方法流程图,该方法具体包括以下步骤:

(1)区块链应用服务器启动或重新启动后,系统默认加载已配置过的数据源对应的数据源信息,同时初始化占位符模板文件,所述数据源包括元数据库和新增数据源,第一次仅加载元数据库,后续随着数据源的增加,初始化数量也随之增加。所述占位符模板文件包括:数据库驱动信息、数据库连接信息、数据库脚本文件信息。

(2)动态添加数据源信息:

(2.1)动态添加驱动信息:数据库驱动上传到所述区块链应用服务器,同时填写所述数据库驱动的版本号,所述数据库驱动上传至区块链应用服务器的驱动信息被加密保存于所述元数据库,所述驱动信息包括数据库驱动上传的地址以及对应的驱动版本号。

(2.2)动态添加数据库连接信息:对于步骤2.1上传过的数据库驱动,新增数据库连接信息,将新增的数据库连接信息以及所述驱动信息关联,并加密保存至所述元数据库。所述新增数据库连接信息包括数据库服务器的ip、端口号、密码和数据源名称。

(2.3)动态选择数据库脚本文件信息:所述区块链应用服务器扫描系统中所有数据库脚本文件名并显示在操作界面上,操作者创建数据库脚本分组,所述数据库脚本文件名与所述数据库脚本分组关联,所述脚本分组与所述数据源信息关联,并将所述关联的信息加密保存至所述元数据库。

(3)通用工厂构建多类型sqlsession:

用户选择某个数据源名称后,系统首先将所述数据源信息动态填充到所述占位符模板文件,采用dom、sax解析器对所述占位符模板文件进行混合解析,系统读取所述数据库连接信息,最后运用工厂方法模式组合构建对应的sqlsession并保存于自定义session池中,方便使用。通过工厂构建多类型sqlsession作用在于对区块链应用中新增的多类型数据源适配,利用不同的sqlsession对不同类型的数据源进行操作。

(4)新增多类型数据库数据操作上链:

在新增完成区块链应用的数据源切换方式多样化,可通过如下方式:

a.代码层面:利用aop切面技术在计算机函数方法上添加注解,所述注解中指定数据源名称,所述计算机函数方法在执行过程中根据所述注解指定的数据源名称,操作数据源名称对应数据源信息中的数据,并将操作记录上链。

b.操作界面:用户通过步骤2在不重新启动应用的情况下动态添加新的数据源信息,添加后的新的数据源名称在用户可选的下拉列表中展示,用户通过手动切换所述数据源名称,编写执行sql脚本,操作选择所述数据源名称对应的数据源,将操作记录上链;或根据业务自动执行编写好的数据库脚本文件中的sql脚本,将操作记录上链。

实施例

图2本发明新增的mysql数据操作上链流程图,具体过程如下:

一个基于区块链的管理平台,下面有众多横向复制的应用需要搜集数据上链,众应用对应的库类型不同,此时因业务需要在一个/多个地域部署了新的复制应用,如这些数据库是mysql版本,操作步骤如下:

(1)区块链应用服务器启动,系统默认加载好已配置过的数据源,同时初始化占位符模板文件;

(2.1)进入驱动管理模块:上传mysql数据库驱动,填写对应版本号5.7,上传的驱动在服务器中的地址以及版本号将被保存至元数据库;

(2.2)进入数据库连接模块:选择上一步上传的驱动,填写新增的mysql数据库的服务器ip,端口号,密码,数据源名称,将新增的数据库连接信息以及所述驱动信息关联,并加密保存至所述元数据库。

(2.3)进入数据库脚本管理模块:区块链应用服务器扫描系统中所有数据库脚本文件名并显示在操作界面上,创建数据库脚本分组,选择扫描出来的数据库脚本文件名与数据库脚本分组关联,将数据库脚本分组与上一步新增的mysql数据源名称进行关联,加密保存至元数据库。

(3)添加完成新的mysql数据源后,系统利用sqlsession工厂对新增的mysql数据源进行创建sqlsession并保存至session池中。

(4)开发人员在使用过程中可以通过切面技术,在计算机函数上添加注解例如@db(“mysql”),注解中指定数据源名称,该计算函数即可操作指定数据源(mysql)中的数据并上链;非开发人员可以在操作界面上选择刚刚新增的mysql数据源名称,再操作界面上编写数据库脚本对数据进行操作上链,或者根据系统的业务执行以及编写好的数据库脚本文件中的sql,将操作数据上链。

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