写点什么

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

作者:Jerry Wang
  • 2023-04-16
    上海
  • 本文字数:639 字

    阅读完需:约 2 分钟

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

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 相同。






发布于: 刚刚阅读数: 4
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017-12-03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
Hyperledger(超级账本)的worldstate和SAP CRM的CRMD_CUMULAT_H_超级账本_Jerry Wang_InfoQ写作社区