全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202111650572.0 (22)申请日 2021.12.3 0 (71)申请人 昆明理工大 学 地址 650500 云南省昆明市呈贡区景明南 路727号 (72)发明人 贺建峰 余先锋  (74)专利代理 机构 昆明隆合知识产权代理事务 所(普通合伙) 53220 专利代理师 何娇 (51)Int.Cl. G06F 16/28(2019.01) G06F 16/27(2019.01) G06F 21/60(2013.01) G06F 21/62(2013.01) (54)发明名称 一种基于Fabric的关系型数据库内容同步 方法 (57)摘要 本发明涉及基于Fabric的关系型数据库内 容同步方法, 通过为每个Peer节点配备一个关系 型数据库用于存储更复杂的数据而将操作记录 保存到区块链帐本中, 并对fabric 各部分添加相 应逻辑, 以达到对关系型数据库内容同步的目 的。 其过程包括: 在节点启动时, 进行一系列初始 化操作, 尤其是密钥的重新启用与关系型数据库 的内容重新拉取。 之后通过Gossip广播同步信 息, 节点收到同步信息之后将账本高度进行比 较, 以账本高度最高的各节点的数据库为准, 从 而基于Go ssip服务对数据库表进行同步。 本发明 既能够对区块链存储扩容, 又可以增强数据的安 全性与防篡改性。 权利要求书2页 说明书5页 附图1页 CN 115062094 A 2022.09.16 CN 115062094 A 1.一种基于Fabric的关系型数据库内容同步方法, 其特征在于: 首先为每个Peer节点 配备一个关系型数据库用于存储准备上链的数据, 然后通过对fabric各部分添加相应逻 辑, 以达到对关系型数据库内容同步的目的; 过程包括: 在节点启动时, 进行一系列初始化 操作, 尤其是密钥的重新启用与关系型数据库的内容重新拉取; 之后通过Gossip广播同步 信息, 节点收到同步信息之后将账本高度进行比较, 以账本高度最高的各节点的数据库为 准, 从而基于Gos sip服务对数据库表进行同步。 2.根据权利 要求1所述的基于Fabric的关系型数据库内容同步方法, 其特征在于: 所述 方法的具体步骤如下: Step1: 添加额外的数据库需要保证外部数据的安全性, 对于关系型数据库内的数据, 同时需要 进行读取, 因此采用AES双向加密的方式进行加密; Step2: 添加额外的关系型数据库需要对该数据库进行管理, 因此添加相关管理类为数 据库同步而添加的数据库管理表进行 管理; Step3: 为了保证额外关系型数据库的数据同步, 需要通过GossipService添加新 的消 息类型与处理逻辑; 所定义新消息通过fabric ‑proto‑go项目编译后, 放在GossipService 的DataMas sege中作为 新的消息内容类型; Step4: 对关系型数据库的操作通过fabric 的客户端API进行, 当客户端发起对数据库 操作时, 首先进行操作记录的共识, 并存入区块链账本, 然后进行关系型数据库的相关操 作; 每当操作记录产生并对数据库操作时, 对各数据表重新计算校验和, 并保存入 SyncStateTable; Step5: 在fabric中添加周期性检查同步的管理类Syncer, 每当构建100个区块时, Syncer通过调用Step3的步骤进行同步 性检查, 以去掉 运行过程中的关系型 数据库差异。 3.根据权利 要求1所述的基于Fabric的关系型数据库内容同步方法, 其特征在于: 所述 Step1具体包括如下: Step1.1、 为Fabric添加密钥管理类Crypter, 包含方法为: RandomKeyGen(), 用于产生 固定长度的随机密钥; EncryptTable(), 用于对数据库表名进行加密; EncryptSQL(), 用于 对存入关系型数据库的具体SQL各字段进行加密; DecryptTable(), 用于对数据库表名进 行解密; DecryptResult(), 用于对数据库操作结果 集进行解密; Step1.2、 密钥 存储对于对称加密极为重要, 由于联盟链中节点在正常运行时不会经常 重启, 因此密钥每当在节点启动时则使用RandomKeyGen()方法创建, 并将密钥存储于程序 中, 该随机密钥对于各个Pe er节点均不相同, 不向外 部进行存 储, 以保证密钥安全。 4.根据权利 要求1所述的基于Fabric的关系型数据库内容同步方法, 其特征在于: 所述 Step2具体包括如下: Step2.1、 为Fabric的Peer部分添加额外的关系型数据库管理类DBManager, 包含方法 为: RunSQLFile(), 执行SQL文件, 批量操作SQL语句; ExecuteSQL(), 执行SQL语句; QuerySQL( ) , 执行查询SQL语句; IsTableExist( ) , 检查数据表是否存在; CalTableCheckSum( ), 用于计算数据库表的校验和, 与其他节点进行对比校验; InsertSyncTable/ReadSyncState/UpdateSyncState/DeleteSyncState, 用于对同步表进 行操作; Step2.2、 在关系型数据库中添加数据库同步状态表SyncStateTable, 用于管理数据库权 利 要 求 书 1/2 页 2 CN 115062094 A 2各表的同步情况; Step2.3、 在Peer节点启动时, 检查数据库连接, 并检查同步表状态, 查询是否存在 数据 库, 若不存在则创建; 进行数据库设置; 检查同步表SyncStateTable, 若不存在则创建; 对 各 表的checksum进行检查, 通过网络服务确认是否与其他节点同步; 每当对数据库表进行操 作, 则重新计算校验和, 并存 入同步状态 表中。 5.根据权利 要求1所述的基于Fabric的关系型数据库内容同步方法, 其特征在于: 所述 Step3具体包括如下: Step3.1、 为Fabric的proto消息添加新的检查同步校验消息类型DBDataSync Message; Step3.2、 收到同步校验信息之后, 需产生返回信息类型SyncRespMes sage; Step3.3、 当需要进行同步时节点A, 随机向附近的多个节点通过GossipService发送广 播消息DBDataSyncMessage, 检查对应表的同步状态; 其他节点接收到消息之后, 与自身的 数据库表校验和进行比对, 返回自身的响应消息SyncRespMessage, 其中包含自身最高区块 的信息用于高度校验; Step3.4、 节点A收到相关若干返回消息, 汇总验证后, 选择最 高区块高度的节点请求相 应数据表SQL文件; 其他节点将与节点A不同的数据表读取出来 并通过DecryptResult()解 密, 并通过TLS加密通信发送给节点A; 节点A收到其他节 点发送来的新数据 表后通过自身的 密钥对数据重新进行加密, 再执行RunSQLFile()将数据更新到数据库中, 最后更新 SyncStateTable的状态。权 利 要 求 书 2/2 页 3 CN 115062094 A 3

.PDF文档 专利 一种基于Fabric的关系型数据库内容同步方法

文档预览
中文文档 9 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共9页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于Fabric的关系型数据库内容同步方法 第 1 页 专利 一种基于Fabric的关系型数据库内容同步方法 第 2 页 专利 一种基于Fabric的关系型数据库内容同步方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-19 04:12:46上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。