區塊鏈資料如何歸檔?冷熱分離方案瞭解一下

錦魚課堂發表於2021-07-06

—— Part1 現狀 ——


區塊鏈可以視作一個在分散式環境下眾多可信節點共同維護的且不可篡改的賬本。在區塊鏈系統中,資料以區塊作為基本單位,區塊鏈系統利用levelDB基於Key-Value結構的資料庫存取資料,透過多節點冗餘儲存實現賬本可信,然而隨著區塊鏈執行時間的增長,區塊鏈的儲存容量將呈線性增長,且這種資料的增長速度甚至會超過儲存介質容量增長的速度,因此,區塊鏈資料儲存將成為限制區塊鏈技術發展的重要因素。

面對這一棘手的問題,資料歸檔技術應運而生,什麼是資料歸檔呢?


—— Part2  什麼是資料歸檔——


資料備份的概念大家應該是比較瞭解的,隨著數字化的推進,企業對資料的敏感度逐漸增強,資料備份系統已經成為各大中型企業的必備系統。然而正如我們對資料歸檔認知的不足,企業對於資料歸檔的使用也不如資料備份廣泛。

備份的目的是為了恢復,保證在系統出現意外情況時業務的連續進展。對於企業來說,每天產生的大量資料,其實絕大部分的使用率很低,但是,出於一些特殊原因,這些資料卻必須保留以備查詢。簡言之,歸檔的目的是為了服務品質和保證資料的可管理,使得執行、維護、投入整體的成本降低,如何最大化使用儲存,保證資料的訪問。資料歸檔,即資料的使用。然而如何規範的歸檔資料呢?我們就得具備相應的歸檔原則。

資料儲存:無論是備份還是歸檔,資料的完整性必須得到保證,且需在規定時間內保證資料的安全儲存。保證資料的完整性、時效性及儲存的安全性。

資料易讀取:雖然大部分資料重複讀取可能性低,但歸檔系統依舊不是一個備份系統,必須保證在需要的時候能方便地讀取資料。保證系統資料的可讀性。

資料可擴充套件:由於存在不同種類的資料,且資料也是實時變化且增長迅猛,因此為滿足企業需求,還應具備可擴充套件的要求。

資料合法:任何的企業系統運作都應該遵守各項規章制度,要遵守政府和行業指定的各項法律、法規及各種規章。


—— Part3 實現難點——


正如大家所知,區塊鏈存在資料單向增長(只增不減)的特性,這樣資料量的增多會導致系統磁碟空間佔用率高,所以需要研發 區塊鏈專用資料歸檔技術,將資料進行 “冷熱分離”冷熱分離相對於資料來說,“冷資料”即可以進行歸檔的資料,在使用中相較於熱資料使用的頻率低的資料。冷熱分離即資料實現不同使用頻率的資料分開儲存),保障系統的高效可靠運轉;

另外,因為區塊鏈是一個在分散式環境下眾多可信節點共同維護的且不可篡改的賬本,所以傳統的資料歸檔技術無法解決多個節點資料歸檔某一範圍資料而賬本狀態保持一致性的問題,在實際情況中還存在區塊鏈上單一節點資料歸檔導致的多節點資料同步時賬本狀態一致性的問題。

總結:

1. 區塊鏈存在資料單向增長,需要進行冷熱分離儲存;

2. 分散式環境下,難以保證所有節點實時進行資料歸檔且保證資料狀態的一致性;

3. 單一節點資料歸檔導致多節點資料同步時狀態一致性難以保證。


—— Part4  資料歸檔的架構解讀——


瞭解了資料歸檔的基本概念,那麼,在區塊鏈中它是如何運作的呢? 資料歸檔功能的主要職責是將一部分舊的線上資料移到線下轉存。對此,趣鏈科技提出了區塊鏈資料歸檔的方法,使得整個區塊鏈系統能在不停機情況下,將區塊鏈資料劃分為鏈上、鏈下兩部分,熱資料仍保留在鏈上,但冷資料可以儲存在低成本的硬體裝置上,進行動態的資料歸檔。而且,透過資料排程層,可以很好地實現熱資料和冷資料的靈活訪問,熱資料直接透過平臺訪問,冷資料則透過歸檔資料瀏覽技術瀏覽。另外,每個節點可以自主、多次地對資料進行歸檔,從而使得系統的鏈上資料量維持在一個穩定水平,有效釋放磁碟空間。

為更形象地講解資料歸檔技術,我們以趣鏈資料歸檔為講解內容進行:

區塊鏈的資料歸檔方式是一種基於狀態備份的歸檔方法。

簡單來說,使用者想要對某一個區塊鏈節點(如圖B100)做資料歸檔,必須在過去某一時刻對區塊鏈製作一個狀態快照(B0-100)( 快照:區塊鏈狀態資料庫在某一個區塊號上的備份;創世狀態:節點以創世狀態為基礎狀態;世界狀態:區塊鏈賬本狀態,每一次節點狀態的變遷);

進行資料歸檔時,可以將快照點之前所有的區塊鏈資料( 包括區塊資料、交易資料、回執資料等)進行歸檔轉儲,以實現區塊鏈節點儲存壓力的減負。後續未歸檔第一個區塊的節點(B101)成為新鏈的1號區塊。


▲ 資料歸檔流程



製作快照:


1. 系統獲取最近距離的快照,即比當前要做快照的區塊號小的最大的高度,返回該快照的資訊。若沒有任何快照,則以0號區塊資料為基礎新建快照並作為start,其製作的高度為end。

2. 快照複製以單純的磁碟io複製一份第一步獲得的賬本到新資料夾,並作為後續賬本操作的基礎。

3. 根據日誌資料,遍歷線上[start,end],製作到賬本,且同時遍歷區塊的merkleRoot( 每個區塊都有一個merkle Tree,區塊頭的Merkle Root也稱為根雜湊值),保證賬本的正確性。

檢查快照:

遍歷snashot資料庫中的狀態資料,重新計算出bucketTree的根雜湊,與最新的區塊雜湊對比,以保證製作的快照與實際的賬本是否一致。

資料歸檔:

如圖,使用者發起資料歸檔請求,要求將快照點前所有的區塊鏈資料進行轉儲歸檔。該節點將所需轉儲的區塊資料以及相應的交易回執等資料轉儲,且將本地的創世狀態內容更新為之前備份得到的快照狀態。

如果說區塊鏈正常的狀態變遷是狀態終點不停向前更新的過程,那麼資料歸檔就是一個區塊鏈狀態起點向終點更新的過程。下面是一個比較典型的相關資料平臺應用案例:

數百家中心資料,存量資料4T,日均10GB,年均3.6T資料上鍊,由於鏈上儲存通常採用SSD硬碟,導致儲存成本高昂。針對此問題,我們採用定期歸檔的方式對鏈上資料進行歸檔,由圖可見,我們採用了分段儲存的方式,平臺可對任意的某段資料進行歸檔操作並保證各節點資料狀態的一致性。保證鏈上資料穩定在1T左右,有效地釋放磁碟空間的同時,極大地降低了成本,增加了系統效能。

上述的資料歸檔主要是針對區塊鏈資料,而部署在區塊鏈上的智慧合約,同樣有較大的儲存需求用來記錄龐大的業務資料。針對於這部分資料,趣鏈提供了另外一種歸檔機制,使用者僅需發起一筆帶有特殊標記的交易,呼叫智慧合約中自定義的歸檔函式,即可實現合約資料的轉儲。合約編碼者可以在合約中實現任意邏輯的歸檔函式,以滿足不同的業務需求。

——  Part5 總結  ——

在本片中較為詳細地講解了資料歸檔技術在區塊鏈中的使用,不僅實現了資料的冷熱分離儲存,保證了單一節點的資料歸檔而保持整個區塊鏈所有節點的賬本狀態的一致性,而且實現了分段儲存的模式,使得資料在任意範圍內被歸檔。

從設計角度來看,資料歸檔後不影響原先鏈上資料的正確性與連續性,而且支援不同節點、不同分割槽自定義歸檔序列的範圍。

從功能角度來看,資料歸檔主要解決區塊鏈鏈上資料的冗餘問題。減少鏈上資料儲存壓力,將過期資料和歷史資料進行線下的儲存,突破鏈上儲存的限制。並且,併發執行資料歸檔過程中的各種操作,提升了歸檔的效率。


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

相關文章