
目标
1.了解 Hyperledger Fabric 中所支持的数据库
2.掌握 CouchDB 数据库的实现
任务实现
9.2.1 CouchDB数据库介绍
在 Hyperledger Fabric 项目中,目前可以支持的状态数据库有两种:
LevelDB:LevelDB 是嵌入在 Peer 中的默认键值对(key-value)状态数据库。
CouchDB:CouchDB 是一种可选的替代 levelDB 的状态数据库。与 LevelDB 键值存储一样,CouchDB 不仅可以根据 key 进行相应的查询,还可以根据不同的应用场景需求实现复杂查询。
CouchDB 是前 IBM 的 Lotus Notes 开发者 Damien Katz 创建于2005年的一个项目,定义为“面向大规模可扩展对象数据库的存储系统”,在2008年成为了 Apache 的项目。2010年7月发布第一个稳定版,目前官网的最新版本为 2.2.0。
Apache CouchDB 是一种新一代数据库管理系统之一,具有核心概念简单(但功能强大)且易于理解的特征,使用 JSON 并支持二进制数据以满足所有数据存储需求。具有高可用性和容错存储引擎,将数据的安全性放在第一位;适用于现代网络和移动应用程序,可以高效地实现数据分发。
后期 Hyperledger Fabric 正式版本中可能会支持更多的数据库管理系统。
9.2.2 CouchDB在Hyperledter Fabric中的具体实现
下面我们使用 CouchDB 容器来实现对 CouchDB 的使用。
以一个票据查询功能实现为例,链码中提供两个查询方法,根据持票人的证件号码查询所有票据与根据持票人的证件号码查询待签收票据。链码部署后调用自定义的 billInit 方法进行数据的初始化,然后分别调用两个查询方法进行测试。实现步骤如下:
首先定义一个票据的结构体文件:domain.go







FAQ
1.在 Hyperledger Fabric 中,状态数据库使用 LevelDB 与 CouchDB 有什么区别?
如果状态数据库使用 CouchDB 的话,具有最大的一个特点:可以使用富查询实现对状态的检索,但是需要自定义富查询字符串,该字符串必须符合 CouchDB 查询语法结构。
2.如何使用 CouchDB?
在 Hyperledger Fabric 环境中,如果需要使用 CouchDB,那么必须在 docker-compose.yml/docker-compose.yaml或自定义的配置文件中声明 CouchDB 容器,然后在各个 peer 容器中 environment 属性中声明相关环境内容,且在 depends_on 属性中指定声明的 CouchDB 容器的名称。
未经授权禁止转载、改编,转载请注明出处!
本文地址: https://www.xiguacaijing.com/news/baike/2019/3071.html
赞助商