买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于Fabric的关系型数据库内容同步方法_昆明理工大学_202111650572.0 

申请/专利权人:昆明理工大学

申请日:2021-12-30

公开(公告)日:2024-03-29

公开(公告)号:CN115062094B

主分类号:G06F16/28

分类号:G06F16/28;G06F16/27;G06F21/60;G06F21/62

优先权:

专利状态码:有效-授权

法律状态:2024.03.29#授权;2022.10.04#实质审查的生效;2022.09.16#公开

摘要:本发明涉及基于Fabric的关系型数据库内容同步方法,通过为每个Peer节点配备一个关系型数据库用于存储更复杂的数据而将操作记录保存到区块链帐本中,并对fabric各部分添加相应逻辑,以达到对关系型数据库内容同步的目的。其过程包括:在节点启动时,进行一系列初始化操作,尤其是密钥的重新启用与关系型数据库的内容重新拉取。之后通过Gossip广播同步信息,节点收到同步信息之后将账本高度进行比较,以账本高度最高的各节点的数据库为准,从而基于Gossip服务对数据库表进行同步。本发明既能够对区块链存储扩容,又可以增强数据的安全性与防篡改性。

主权项:1.一种基于Fabric的关系型数据库内容同步方法,其特征在于:首先为每个Peer节点配备一个关系型数据库用于存储准备上链的数据,然后通过对fabric各部分添加相应逻辑,以达到对关系型数据库内容同步的目的;过程包括:在节点启动时,进行一系列初始化操作,密钥的重新启用与关系型数据库的内容重新拉取;之后通过Gossip广播同步信息,节点收到同步信息之后将账本高度进行比较,以账本高度最高的各节点的数据库为准,从而基于Gossip服务对数据库表进行同步;所述方法的具体步骤如下:Step1:添加额外的数据库需要保证外部数据的安全性,对于关系型数据库内的数据,同时需要进行读取,因此采用AES双向加密的方式进行加密;Step2:添加额外的关系型数据库需要对该数据库进行管理,因此添加相关管理类为数据库同步而添加的数据库管理表进行管理;Step3:为了保证额外关系型数据库的数据同步,需要通过GossipService添加新的消息类型与处理逻辑;所定义新消息通过fabric-proto-go项目编译后,放在GossipService的DataMassege中作为新的消息内容类型;Step4:对关系型数据库的操作通过fabric的客户端API进行,当客户端发起对数据库操作时,首先进行操作记录的共识,并存入区块链账本,然后进行关系型数据库的相关操作;每当操作记录产生并对数据库操作时,对各数据表重新计算校验和,并保存入SyncStateTable;Step5:在fabric中添加周期性检查同步的管理类Syncer,每当构建100个区块时,Syncer通过调用Step3的步骤进行同步性检查,以去掉运行过程中的关系型数据库差异;所述Step1具体包括如下:Step1.1、为Fabric添加密钥管理类Crypter,包含方法为:RandomKeyGen,用于产生固定长度的随机密钥;EncryptTable,用于对数据库表名进行加密;EncryptSQL,用于对存入关系型数据库的具体SQL各字段进行加密;DecryptTable,用于对数据库表名进行解密;DecryptResult,用于对数据库操作结果集进行解密;Step1.2、密钥存储对于对称加密极为重要,由于联盟链中节点在正常运行时不会经常重启,因此密钥每当在节点启动时则使用RandomKeyGen方法创建,并将密钥存储于程序中,该随机密钥对于各个Peer节点均不相同,不向外部进行存储,以保证密钥安全;所述Step2具体包括如下:Step2.1、为Fabric的Peer部分添加额外的关系型数据库管理类DBManager,包含方法为:RunSQLFile,执行SQL文件,批量操作SQL语句;ExecuteSQL,执行SQL语句;QuerySQL,执行查询SQL语句;IsTableExist,检查数据表是否存在;CalTableCheckSum,用于计算数据库表的校验和,与其他节点进行对比校验;InsertSyncTableReadSyncStateUpdateSyncStateDeleteSyncState,用于对同步表进行操作;Step2.2、在关系型数据库中添加数据库同步状态表SyncStateTable,用于管理数据库各表的同步情况;Step2.3、在Peer节点启动时,检查数据库连接,并检查同步表状态,查询是否存在数据库,若不存在则创建;进行数据库设置;检查同步表SyncStateTable,若不存在则创建;对各表的checksum进行检查,通过网络服务确认是否与其他节点同步;每当对数据库表进行操作,则重新计算校验和,并存入同步状态表中;所述Step3具体包括如下:Step3.1、为Fabric的proto消息添加新的检查同步校验消息类型DBDataSyncMessage;Step3.2、收到同步校验信息之后,需产生返回信息类型SyncRespMessage;Step3.3、当需要进行同步时节点A,随机向附近的多个节点通过GossipService发送广播消息DBDataSyncMessage,检查对应表的同步状态;其他节点接收到消息之后,与自身的数据库表校验和进行比对,返回自身的响应消息SyncRespMessage,其中包含自身最高区块的信息用于高度校验;Step3.4、节点A收到相关若干返回消息,汇总验证后,选择最高区块高度的节点请求相应数据表SQL文件;其他节点将与节点A不同的数据表读取出来并通过DecryptResult解密,并通过TLS加密通信发送给节点A;节点A收到其他节点发送来的新数据表后通过自身的密钥对数据重新进行加密,再执行RunSQLFile将数据更新到数据库中,最后更新SyncStateTable的状态。

全文数据:

权利要求:

百度查询: 昆明理工大学 一种基于Fabric的关系型数据库内容同步方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。