一种基于联盟链的MySQL状态存储方法与流程

文档序号:32839273发布日期:2023-01-06 20:14阅读:25来源:国知局
一种基于联盟链的MySQL状态存储方法与流程
一种基于联盟链的mysql状态存储方法
技术领域
1.本发明涉及数据库管理领域,尤其涉及一种基于联盟链的mysql状态存储方法。


背景技术:

2.leveldb:嵌入在peer中的键值对(key-value)状态数据库,默认选项。leveldb是谷歌公司自行研发的一个典型的key-value数据库,leveldb最重要的特征是查询和保存速度快;但其缺点也非常明显,就是不支持富查询,对信息归类偏弱。
3.couchdb:一种可选的替代leveldb的状态数据库。与leveldb键值存储一样,couchdb不仅可以根据key进行相应的查询,还可以根据不同的应用场景需求实现复杂查询。couchdb可以支持比较丰富的查询方式。hyperledger fabric状态数据库默认使用leveldb保存,其保存方式是由core.yaml-》ledger.state.statedatabase:goleveldb设置的。
4.状态库无法与传统数据库集成,效率与运维难度增加。状态库需足够灵活,应对未来多样性需求。


技术实现要素:

5.鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种基于联盟链的mysql状态存储方法。
6.根据本发明的一个方面,提供了一种基于联盟链的mysql状态存储方法包括:
7.实现版本数据库提供者接口versioneddbprovider,用于获取数据库实例句柄;
8.实现版本数据库接口versioneddb,用于实现数据库api;
9.增加配置,插入peer配置文件;
10.修改函数newcommonstoragedbprovider()。
11.可选的,所述实现版本数据库提供者接口versioneddbprovider,用于获取数据库实例句柄具体包括:
12.getdbhandle()和close();
13.其中,所述getdbhandle()的输入参数id为数据库名,如果数据库不存在,创建数据库。
14.可选的,所述实现版本数据库接口versioneddb,用于实现数据库api具体包括:
15.实现对状态数据库的查询、处理、校验的功能;
16.getstate()是通过给定的数据库名和key值查询对应的value值,namespace字段代表数据库表的表名;
17.executequerywithmetadat()实现对mysql数据库的增删改查操作,其中query字段存储mysql操作语句;
18.validatekeyvalue()方法是对输入的key和value进行校验。
19.可选的,所述增加配置,插入peer配置文件具体包括:
20.在core.yaml文件中加入mysql数据库的名称和地址;
21.存储数据库提供者通过数据库地址和名称进行连接,连接成功后对所述mysql数据库进行所需操作。
22.可选的,所述修改函数newcommonstoragedbprovider()具体包括:增加根据配置选择mysql模块。
23.本发明提供的一种基于联盟链的mysql状态存储方法包括:实现版本数据库提供者接口versioneddbprovider,用于获取数据库实例句柄;实现版本数据库接口versioneddb,用于实现数据库api;增加配置,插入peer配置文件;
24.修改函数newcommonstoragedbprovider()。通过引入经典sql关系型数据库mysql实现状态数据的混合存储架构,就有着很好的实用价值。
25.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
26.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
27.图1为本发明实施例提供的一种基于联盟链的mysql状态存储方法流程框图。
具体实施方式
28.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
29.本发明的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
30.下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
31.为解决hyperledger fabric现有状态数据库多样性存在的问题,通过引入经典sql关系型数据库mysql实现状态数据的混合存储架构,就有着很好的实用价值。
32.在hyperledgerfabric底层直接增加了对sql语句的支持,包括创建、插入、更新、查询、删除功能,智能合约可根据具体的业务自行定义sql语句,并存入相应的数据,使得智能合约操作状态数据库库更加灵活方便。
33.如图1所示,不管用哪种数据库实现hyperledger fabric状态数据库,都需要遵守hyperledgerfabric制定好的状态存储规则。主要是实现两个接口:版本数据库提供者和版本数据库。
34.实现接口(版本数据库提供者)versioneddbprovider,功能:获取数据库实例句柄。有两个方法:getdbhandle()和close()。其中getdbhandle()的输入参数id是指数据
库名,如果数据库不存在就创建;
35.实现接口(版本数据库)versioneddb,功能:实现数据库api。该接口中包含多个方法,实现对状态数据库的查询、处理、校验等功能。getstate()是通过给定的数据库名和key值查询对应的value值,namespace字段代表数据库表的表名。executequerywithmetadat()可以实现对mysql数据库的增删改查操作,其中query字段存储mysql操作语句。validatekeyvalue()方法是对输入的key和value进行校验;
36.增加配置,插入peer配置文件。在core.yaml文件中加入mysql数据库的名称以及地址,这样“存储数据库提供者”就可以通过数据库地址和名称进行连接,连接成功后即可对mysql数据库进行所需操作。
37.修改涵数(存储数据库提供者)newcommonstoragedbprovider(),增加根据配置选择mysql模块。
38.hyperledgerfabric为联盟链中使用最为广泛的开源项目。在金融领域应用最为广泛,目前国内很多银行都基于hyperledger fabric开发了自己的区块链系统。
39.json为一种轻量级的数据交换格式。
40.有益效果:在hyperledgerfabric底层直接增加了对sql语句的支持,包括创建、插入、更新、查询、删除功能,智能合约可根据具体的业务自行定义sql语句,并存入相应的数据,使得智能合约操作状态数据库库更加灵活方便。
41.以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1