码迷,mamicode.com
首页 > 其他好文 > 详细

深度探索区块链/实现数据隔离的多链和多通道(7)

时间:2018-08-12 18:41:24      阅读:1003      评论:0      收藏:0      [点我收藏+]

标签:占位符   direct   技术   level   .com   evel   命令   递增   目录结构   

技术分享图片

一。数据存储对多链的支持

技术分享图片

      这个目录下面有两个目录:businesschannel和pocchannel。它们代表的是两个通道,也就是两个链的数据,每个链现在只有一个区块文件,blockfile_是文件名中固定的前缀,000000是固定的6位占位符,下一个文件名会依次递增。从这个目录结构可以看到,记账节点在底层账本数据存储的时候就对不同链的数据进行了隔离

       排序节点会存储所有链的账本数据,排序节点除了可以选择序列化区块文件的格式外,还支持JSON文件格式和内存数据结构的账本数据,后面两种都只在测试环境下使用。序列化区块文件和JSON文件格式区块文件的存储目录一般是/var/hyperledger/production/orderer/chains。其中,orderer/chain是固定的目录后缀。同样地,不同链的账本数据存储在以通道名称为目录名称的目录中,以实现不同链账本数据的物理隔离内存数据的账本数据没有持久化的存储,不同链的账本数据存储在不同的数据结构中

7.1.2索引数据

记账节点和排序节点都会给账本数据建立索引,不同的是排序节点只会建立以BlockNum为属性的索引。

索引文件存储的目录是/var/hyperledger/production/ledgersData/chains/index,其中,ldegersData/chains/index是记账节点上固定的目录后缀,排序节点上的目录后缀是orderer/index。

下面是一个记账节点上的索引数据的目录:

root@peer0:/var/hyperledger/production/ledgersData/chains/index# tree

|--000002.1db

|--000007.log

|--CURRENT

|--LOCK

|--LOG

--MANIFEST-000008

0 directories,6 files

索引数据是存储在LevelDB数据库里的,数据库的类型目前是不可选的。LevelDB是持久化的K-V数据库,在保存索引的时候会加上ledgerid作为前缀,当然生成的组合键在构造的时候是要先转换成[]byte数组的。由于索引数据存储在同一个数据库中,所以对于不同链的数据,索引数据的实现是逻辑隔离的,并非是物理隔离的

7.1.3状态数据

7.1.4历史数据

二。链码对多链的支持

三。多通道对多链的支持

四。命令行和SDK对多链的支持

五。关于系统链

六。本章小结

深度探索区块链/实现数据隔离的多链和多通道(7)

标签:占位符   direct   技术   level   .com   evel   命令   递增   目录结构   

原文地址:https://www.cnblogs.com/kaixinyufeng/p/9463621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!