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的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼: 數據結構