美文网首页
区块链和HyperLedger Fabric(二)数据库

区块链和HyperLedger Fabric(二)数据库

作者: 宋song一 | 来源:发表于2018-12-07 13:52 被阅读4次

Fabric的区块链网络缺省包含一个账本(称为:系统账本)和一个通道;
• 链=Peers + Ledger + Ordering Channel
• 链将参与者和数据(包含chaincode)进行隔离

账本 Ledger

存储
• Block结构:文件系统方式存储 (交易记录)
• State状态:KV数据库维护

事务

• ChainCode的一次调用
• 事务类型
-­‐ Chaincode
-­‐ Configuration (布局)
-­‐ custom

LevelDb

leveldb 是 Google 用 C++ 开发的一个快速的键值对存储数据库,提供从字符串键到字符串值的有序映射.LevelDb是针对大规模Key/Value数据的单机存储库。实现原理
首先,LevelDb是一个持久化存储的KV系统,和Redis这种内存型的KV系统不同,LevelDb不会像Redis一样狂吃内存,而是将大部分数据存储到磁盘上。

其次,LevleDb在存储数据时,是根据记录的key值有序存储的,就是说相邻的key值在存储文件中是依次顺序存储的,而应用可以自定义key大小比较函数,LevleDb会按照用户定义的比较函数依序存储这些记录。

再次,像大多数KV系统一样,LevelDb的操作接口很简单,基本操作包括写记录put,读记录get以及删除记录del。也支持针对多条操作的原子批量操作。

另外,LevelDb支持数据快照(snapshot)功能,使得读取操作不受写操作影响,可以在读操作过程中始终看到一致的数据。

除此外,LevelDb还支持数据压缩等操作,这对于减小存储空间以及增快IO效率都有直接的帮助。

LevelDb性能非常突出,官方网站报道其随机写性能达到40万条记录每秒,而随机读性能达到6万条记录每秒。总体来说,LevelDb的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作

CouchDB

CouchDB将数据存储为非关系性的JSON文档。 这使得CouchDB的用户可以以与现实世界相似的方式来存储数据。 可以从命令行或一个叫作Futon的Web界面来管理CouchDB。 Futon可用于执行管理任务,如创建和操作CouchDB的数据库,文档和用户等。
CouchDB 是一个MVCC(Multiversion concurrency control,多版本并发控制)的系统
Apache CouchDB使用JavaScript作为MapReduce索引,使用常规HTTP作为其API。
Fauxton是CouchDB中内置的基于Web的本地界面。它为大多数功能提供了基本界面,包括创建,更新,删除和查看文档和设计文档的能力。它提供对配置参数的访问,以及用于启动复制的接口.是对Futon的替代
CouchDB使用JSON来存储数据,使用JavaScript作为查询语言来转换文档,使用MapReduce和HTTP作为API
CouchDB优先考虑可用性
CouchDB 是一个RESTFul 的数据库,其操作完全走HTTP协议
CouchDB 是一个”crash-only” 的系统,你可以在任何时候停掉CouchDB 并能保证数据的一致性

如果你在构建一个 Lotus Notes 型的应用,我们推荐使用CouchDB,主要是由于它的MVCC机制。另外如果我们需要master-master 的架构,需要基于地理位置的数据分布,或者在数据结点可能不在线的情况下,我们推荐使用CouchDB

MongoDB与CouchDB 全方位对比

相关文章

网友评论

      本文标题:区块链和HyperLedger Fabric(二)数据库

      本文链接:https://www.haomeiwen.com/subject/bndthqtx.html