为什么在Hyperledger Fabric中需要单独的数据库?

问题描述

我是Hyperledger Fabric的新手,我似乎不了解在此区块链中使用LevelDB或bedDB。 区块链本身应该是数据库。

感谢。

解决方法

Hyperledger Fabric作为区块链是一个允许的网络,它允许网络上已知实体之间的机密交易,而无需使用加密货币。为了与Fabric网络互动,我们使用在Fabric中通常称为chaincode或在其他区块链网络中更常见的smart contracts的程序。

要解决您的第一个问题,在区块链中使用LevelDBCouchDB是为了存储通过使用chaincode进行的交易,这些交易在网络。与其他数据库相比,LevelDB提供了一种优化的key-value对存储方式。

进一步详细说明Ledger由两种类型的记录组成:

  1. TxN日志-它们存储在级别数据库中,因为它们是不可变的,所以是不可变的,一个简单的,开销较小的数据库是显而易见的选择 因此level DB

  2. 状态-默认情况下,这也在LevelDB中实现,但由于在实时应用程序中,您将需要在 数据库可以从数据中获取一些见解,可以选择替换它 与CouchDb一起提供了类似sql的查询语言来执行 动作。

要回答您的第二个问题,区块链应该是仅是硬币一侧的数据库。区块链包含许多其他部分,例如权限网络,证书颁发机构,尤其是在我们谈论Fabric时,数据库只是完整区块链的一部分。

,

让我尝试解释一下。您会看到区块链系统的基本属性之一是数据不变性。它基本上设计为仅附加数据库。但是在现实生活中,有法律要处理,开发人员需要一种纠正错误的方法。 Fabric的解决方法是引入2个数据库。

Leveldb 建立在对等节点上,并且仅具有“创建和读取”访问权限(您不能从节点中删除它)。这使得实现区块链的属性变得一成不变。

CouchDB 是具有完全CRUD访问权限的附加数据库。您可以更新和删除所需的数据,此数据库是处理您将存储并显示在前端应用程序上的大规模数据的数据库。请记住,该数据库是可选的。

创建超级账本应用程序时,数据存储如下所示。为每个对等方创建了2个数据库(假设您已附加一个Sofadb)

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...