Fabric中LevelDB转CouchDB

一、介绍

在 Hyperledger Fabric 项目中,目前可以支持的状态数据库有两种:

  • LevelDB:LevelDB 是嵌入在 Peer 中的默认键值对(key-value)状态数据库。
  • CouchDB:CouchDB 是一种可选的替代 LevelDB 的状态数据库。与 LevelDB 键值存储一样,CouchDB 不仅可以根据 key 进行相应的查询,还可以根据不同的应用场景需求实现复杂查询。

F&Q

1、在 Fabric 中,状态数据库使用 LevelDB 与 CouchDB 有什么区别?

如果状态数据库使用 CouchDB 的话,具有最大的一个特点:可以使用富查询实现对状态的检索,但是需要自定义富查询字符串,该字符串必须符合 CouchDB 查询语法结构。

2、如何使用 CouchDB?

在 Hyperledger Fabric 环境中,如果需要使用 CouchDB,那么必须在 docker-compose.yml/docker-compose.yaml或自定义的配置文件中声明 CouchDB 容器,然后在各个 peer 容器中 environment 属性中声明相关环境内容,且在 depends_on 属性中指定声明的 CouchDB 容器的名称。

二、实现

本文环境:centos7,fabric1.4

  • 声明couchdb容器
    在 docker-compose.yml/docker-compose.yaml或自定义的配置文件中添加如下声明:
  couchdb0:
    container_name: couchdb0
    image: hyperledger/fabric-couchdb:0.4.21
    environment:
      - COUCHDB_USER=
      - COUCHDB_PASSWORD=
    ports:
      - "5984:5984"
    networks:
      - main

根据个人使用的fabric版本,需要指定不同版本的couchdb镜像,否则会报错。这里我使用了fabric1.4,查阅bootstrap.sh文件可知,fabric1.4需要使用0.4.21版本的couchdb

  • 在各 peer 容器中声明couchdb环境
    在各 peer 节点的environment 属性中添加如下内容,且在 depends_on 属性中指定声明的couchdb容器的名称
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=
    depends_on:
      - couchdb0
  • 访问couchdb网址
    重启网络
    进入http://localhost:5984/_utils/即可查看couchdb

部分引用:
9.2 Hyperledger Fabric状态数据库

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页