采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,我刚加入,请教stub这个数据库的问题
之前从没有接触过它,想请问它能像关系型数据库那样用吗?
这个数据库是所谓的区块链数据库吗,它是分布式的吗?
不知道在这个数据库上可以存什么类型的字段,并且能存多少大小的数据呢?
第一时间买的课,问题比较多,还请老师一一解答一下。
亲,你好,非常感谢你的问题。
stub呢,他是链码编程的接口中定义的方法参数。是fabric提供的链码与底层数据交互的接口定义。我们可以把他类比到数据库的驱动(driver)。他封装了操作底层状态数据的方法,比如getstate,putstate。当然这只是他的一部分方法。
接下来回答你的问题:
1、stub他不是一个数据库,他只是一个链码与区块链底层状态数据库交互的接口。而且对应到底层实现,stub对接的也只是某一个peer节点的数据库,不是分布式的。
2、fabric中的状态数据库存储的数据是kv键值对,key是string,v是[]byte,所以原则上,fabric可以存储任意数据类型的值。存储的大小与我们设置的所允许的交易大小,区块大小有关。如果你的业务要求存储大数据,可以相应的将区块交易的大小增大。这点我们在后边的课程中会讲到。
祝你学习愉快!
老师麻烦再帮忙回答一下 “stub对接的也只是某一个peer节点的数据库,不是分布式的。” 那stub对接的底层的数据库到底是啥呢。。。? 另外它只是存储在某一个peer节点,那万一这个peer节点挂了怎么办,或者它作恶篡改数据怎么办呢?
亲,stub对接的当前peer节点的状态数据库,可以理解是一个大的kv数据集合,底层实现是leveldb(第5章的内容)。 再者,fabric的设计跟其他区块链不同,其他区块链的交易流程是先全网排序,再多peer执行,最后持久化;而fabric的设计是先单(或多)peer执行,再排序,最后持久化的时候校验数据的有效性(第6章内容),至于是单还是多,取决于设置的背书策略。作恶的事情是由最后的交易验证(背书策略校验,交易读写集mvcc校验)完成的。 如果当前peer挂掉了,当前发送的交易是无法成功的,只能换peer或者等待peer重新启动。 祝你学习愉快!
非常感谢!
登录后可查看更多问答,登录/注册
兼顾区块链应用层和底层 进击区块链工程师
3.4k 6
2.0k 21
1.3k 18
1.2k 18
1.2k 16