Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H

i042416發表於2018-09-10

Hyperledger fabric是基於區塊鏈技術的一個開源專案,由Linux基金會於2015年發起,目的是推進區塊鏈數字技術和交易驗證的發展和落地。


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


Hyperledger由多個區塊構成了一個有序連結串列,每個區塊裡包含多條交易(trasanction,縮寫為tx)。Jerry在學習賬本的資料結構時,發現一個有趣的現象:上圖中WorldState(世界狀態)的設計目的,是為了提升效能。比如,有一個channel裡共發生了1千次交易,為了獲取該channel的當前狀態值,需要沿著區塊鏈的首塊出發執行這1千次交易,有點像SAP HANA記憶體資料庫實時計算的思路。
而Hyperledger Fabric選擇了在每次新交易處理完後,都同步更新一個稱之為levelDB的資料庫。這樣每次查詢當前狀態時,無需遍歷區塊鏈每個區塊重複執行交易,只需要查詢該levelDB資料庫即可。


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


這個levelDB的概念和CRM裡的訂單抬頭的很多欄位,比如總價,毛重(Gross weight)等等設計思路是一樣的。
比如我在ID為IMU的產品主資料裡維護了1個ST的單位重50KG,那麼下圖訂單包含了兩個行專案,一共8個ST,毛重50 × 8 = 400KG。

Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


這個400KG是儲存在表CRMD_CUMULAT_H的GROSS_WEIGHT欄位。


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


顧名思義,這個欄位的值是從另一張存放行專案明細資訊的表CRMD_PRODUCT_I裡的GROSS_WEIGHT累加而來的,這也是這張表的部分名稱CUMULAT的由來:(cumulate累積)

Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


每次行專案裡產品數量發生變化時,會觸發one order框架的回撥函式,更新CRMD_CUMULAT_H的GROSS_WEIGHT.

Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


最後資料更新透過CRM_CUMULAT_H_UPDATE_DU寫回到CRMD_CUMULAT_H裡。CRMD_CUMULAT_H扮演的角色同Hyperledger Fabric裡的levelDB相同。

Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:


Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H

Hyperledger(超級賬本)的worldstate和SAP CRM的CRMD_CUMULAT_H



作者:JerryWangSAP
連結:
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2213914/,如需轉載,請註明出處,否則將追究法律責任。

相關文章