请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问stub这个数据库的问题

老师好,我刚加入,请教stub这个数据库的问题

之前从没有接触过它,想请问它能像关系型数据库那样用吗?

这个数据库是所谓的区块链数据库吗,它是分布式的吗?

不知道在这个数据库上可以存什么类型的字段,并且能存多少大小的数据呢?

第一时间买的课,问题比较多,还请老师一一解答一下。

正在回答

1回答

亲,你好,非常感谢你的问题。

stub呢,他是链码编程的接口中定义的方法参数。是fabric提供的链码与底层数据交互的接口定义。我们可以把他类比到数据库的驱动(driver)。他封装了操作底层状态数据的方法,比如getstate,putstate。当然这只是他的一部分方法。

接下来回答你的问题:

1、stub他不是一个数据库,他只是一个链码与区块链底层状态数据库交互的接口。而且对应到底层实现,stub对接的也只是某一个peer节点的数据库,不是分布式的。

2、fabric中的状态数据库存储的数据是kv键值对,key是string,v是[]byte,所以原则上,fabric可以存储任意数据类型的值。存储的大小与我们设置的所允许的交易大小,区块大小有关。如果你的业务要求存储大数据,可以相应的将区块交易的大小增大。这点我们在后边的课程中会讲到。

祝你学习愉快!

0 回复 有任何疑惑可以回复我~
  • 提问者 sd1700092 #1
    老师麻烦再帮忙回答一下
    “stub对接的也只是某一个peer节点的数据库,不是分布式的。”
    那stub对接的底层的数据库到底是啥呢。。。?
    另外它只是存储在某一个peer节点,那万一这个peer节点挂了怎么办,或者它作恶篡改数据怎么办呢?
    回复 有任何疑惑可以回复我~ 2018-08-17 22:42:34
  • 自游蜗牛 回复 提问者 sd1700092 #2
    亲,stub对接的当前peer节点的状态数据库,可以理解是一个大的kv数据集合,底层实现是leveldb(第5章的内容)。
    
    再者,fabric的设计跟其他区块链不同,其他区块链的交易流程是先全网排序,再多peer执行,最后持久化;而fabric的设计是先单(或多)peer执行,再排序,最后持久化的时候校验数据的有效性(第6章内容),至于是单还是多,取决于设置的背书策略。作恶的事情是由最后的交易验证(背书策略校验,交易读写集mvcc校验)完成的。
    
    如果当前peer挂掉了,当前发送的交易是无法成功的,只能换peer或者等待peer重新启动。
    
    祝你学习愉快!
    回复 有任何疑惑可以回复我~ 2018-08-17 23:07:02
  • 提问者 sd1700092 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-08-18 06:15:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信