Hyperledger(超级账本)的worldstate和SAP CRM的CRMD_CUMULAT_H

举报
汪子熙 发表于 2021/11/29 19:59:03 2021/11/29
【摘要】 Hyperledger fabric是基于区块链技术的一个开源项目,由Linux基金会于2015年发起,目的是推进区块链数字技术和交易验证的发展和落地。Hyperledger由多个区块构成了一个有序链表,每个区块里包含多条交易(trasanction,缩写为tx)。Jerry在学习账本的数据结构时,发现一个有趣的现象:上图中WorldState(世界状态)的设计目的,是为了提升性能。比如,有...

Hyperledger fabric是基于区块链技术的一个开源项目,由Linux基金会于2015年发起,目的是推进区块链数字技术和交易验证的发展和落地。

Hyperledger由多个区块构成了一个有序链表,每个区块里包含多条交易(trasanction,缩写为tx)。Jerry在学习账本的数据结构时,发现一个有趣的现象:上图中WorldState(世界状态)的设计目的,是为了提升性能。比如,有一个channel里共发生了1千次交易,为了获取该channel的当前状态值,需要沿着区块链的首块出发执行这1千次交易,有点像SAP HANA内存数据库实时计算的思路。
而Hyperledger Fabric选择了在每次新交易处理完后,都同步更新一个称之为levelDB的数据库。这样每次查询当前状态时,无需遍历区块链每个区块重复执行交易,只需要查询该levelDB数据库即可。

这个levelDB的概念和CRM里的订单抬头的很多字段,比如总价,毛重(Gross weight)等等设计思路是一样的。
比如我在ID为IMU的产品主数据里维护了1个ST的单位重50KG,那么下图订单包含了两个行项目,一共8个ST,毛重50 × 8 = 400KG。

这个400KG是存储在表CRMD_CUMULAT_H的GROSS_WEIGHT字段。

顾名思义,这个字段的值是从另一张存放行项目明细信息的表CRMD_PRODUCT_I里的GROSS_WEIGHT累加而来的,这也是这张表的部分名称CUMULAT的由来:(cumulate累积)

每次行项目里产品数量发生变化时,会触发one order框架的回调函数,更新CRMD_CUMULAT_H的GROSS_WEIGHT.

最后数据更新通过CRM_CUMULAT_H_UPDATE_DU写回到CRMD_CUMULAT_H里。CRMD_CUMULAT_H扮演的角色同Hyperledger Fabric里的levelDB相同。



要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。