ForkBase:結(jié)合區(qū)塊鏈實現(xiàn)高效存儲引擎
摘要:現(xiàn)有的數(shù)據(jù)存儲系統(tǒng)提供了多種的功能,以適應(yīng)多樣化的應(yīng)用程序。然而,新的應(yīng)用程序類型已經(jīng)出現(xiàn),例如區(qū)塊鏈和協(xié)作分析,featuring data versioning, fork semantics, tamper-evidence或它們的任意組合。它們?yōu)榇鎯ο到y(tǒng)提供了新的機會,通過將上述需求嵌入到存儲中來有效地支持此類應(yīng)用程序。ForkBase,一個為區(qū)塊鏈和分叉應(yīng)用程序設(shè)計的存儲引擎。通過將核心應(yīng)用程序?qū)傩约傻酱鎯χ校?/span>ForkBase不僅提供了高性能,還減少了開發(fā)工作。該存儲管理多版本數(shù)據(jù)并支持兩種不同的fork語義,從而支持不同的fork工作流。ForkBase速度快,空間效率高,因為它有一個新的索引類,支持高效的查詢以及跨數(shù)據(jù)對象、分支和版本的重復(fù)內(nèi)容的有效檢測。我們使用三個應(yīng)用程序演示了ForkBase的性能:區(qū)塊鏈平臺、wiki引擎和協(xié)作分析應(yīng)用程序。我們針對各自的最新解決方案進行了廣泛的實驗評估。結(jié)果表明,ForkBase在顯著降低開發(fā)工作量的同時,取得了較好的性能
關(guān)鍵詞:區(qū)塊鏈和協(xié)作分析;區(qū)塊鏈和分叉應(yīng)用程序設(shè)計;for語義;wiki引擎和協(xié)作分析應(yīng)用程序
ForkBase: Implementing an Efficient Storage Engine with Blockchain
Zou Wenzhe
(Nanchang Aviation University)
Abstract: ?Existing data storage systems provide multiple functions to adapt to diverse applications. However, new application types have emerged, such as blockchain and collaborative analysis, feature data versioning, fork semantics, tapper provision, or any combination of them. They provide new opportunities for storage systems to effectively support such applications by embedding the aforementioned requirements into storage. ForkBase, a storage engine designed for blockchain and forked applications. By integrating core application attributes into storage, ForkBase not only provides high performance but also reduces development work. This storage manages multiple versions of data and supports two different fork semantics, thereby supporting different fork workflows. ForkBase is fast and spatially efficient because it has a new index class that supports efficient queries and effective detection of duplicate content across data objects, branches, and versions. We demonstrated the performance of ForkBase using three applications: blockchain platform, wiki engine, and collaborative analysis application. We conducted extensive experimental evaluations on our respective latest solutions. The results indicate that ForkBase achieves good performance while significantly reducing development workload
Keywords: ?blockchain and collaborative analysis; Blockchain and fork application program design; For semantics; Wiki engine and collaborative analysis application
區(qū)塊鏈?zhǔn)且粋€不可變的記錄鏈,稱為塊,可促進交易,有助于跟蹤資產(chǎn)并記錄數(shù)據(jù)和文件。所有包含信息的塊都用哈希鏈接在一起。從頭開始開發(fā)區(qū)塊鏈應(yīng)用程序及其實施需要大量時間和深入研究。開發(fā)從尋找和選擇最適合您要求的正確區(qū)塊鏈協(xié)議開始。
創(chuàng)新者正在尋找在金融服務(wù)、供應(yīng)鏈、政府、醫(yī)療保健、零售和許多其他行業(yè)實施區(qū)塊鏈以轉(zhuǎn)變商業(yè)模式的方法。區(qū)塊鏈通過提供以下服務(wù)為企業(yè)增加價值:
- 透明度
- 可追溯性
- 提高速度
- 降低成本
隨著區(qū)塊鏈的實施,交易歷史變得更加透明。由于區(qū)塊鏈?zhǔn)欠植际劫~本,所有網(wǎng)絡(luò)成員共享同一個更新的賬本。網(wǎng)絡(luò)中的共識驗證賬本,這意味著每個人都必須同意它。
更改單個記錄將導(dǎo)致修改所有后續(xù)記錄。因此,保存在區(qū)塊鏈上的數(shù)據(jù)是:
更安全
準(zhǔn)確的
透明的
僅對具有訪問權(quán)限的成員可用
可追溯性
區(qū)塊鏈的核心理念:一個分布式數(shù)據(jù)庫,其基本單元為區(qū)塊,取款用來存儲數(shù)據(jù),區(qū)塊之間前后關(guān)聯(lián),通過時間排序,基于PKI、摘要算法實現(xiàn)集體驗證、維護。區(qū)塊鏈提供了一個分布式總賬,讓用戶對總賬的數(shù)據(jù)實現(xiàn)共同治理,因而建立互信。
區(qū)塊鏈基本邏輯
區(qū)塊鏈有兩個核心場景:
1、創(chuàng)建新的區(qū)塊Create:創(chuàng)建的區(qū)塊與前序區(qū)塊關(guān)聯(lián),并按時間排序;
2、填充數(shù)據(jù)到區(qū)塊VoteAndSignAndFillData:填充數(shù)據(jù)到區(qū)塊需要住民集體共識,并有基于PKI的簽名;
區(qū)塊鏈分類
區(qū)塊會因為使用場景的不同,而分組,用來記錄不同場景的數(shù)據(jù)。這些分組也因為面向的用戶群不一樣而又所區(qū)別,有一些區(qū)塊鏈面向所有人,所有人的權(quán)利一樣,這就成了公有鏈;有一些區(qū)塊鏈只面向特定的人群,這就成了私有鏈;公有鏈、私有鏈之間會有協(xié)作,相互之間按照特定規(guī)則實現(xiàn)數(shù)據(jù)互信,則成了聯(lián)盟鏈。
幾種分類
公有鏈主要以建立基礎(chǔ)設(shè)施為主,例如比特幣基于工作量證明來實現(xiàn)稀缺性,以太坊通過智能合約提供共識機制的基礎(chǔ)實現(xiàn)。私有鏈?zhǔn)钦鎸嵱袃r值的領(lǐng)域,可以在一個領(lǐng)域形成共識,例如供應(yīng)鏈SRM;當(dāng)多個私有鏈所在一個領(lǐng)域且有互通有無的需求時,聯(lián)盟鏈就誕生了。
針對多版本數(shù)據(jù)的重復(fù)數(shù)據(jù)消除
減少存儲開銷
在數(shù)據(jù)集版本控制系統(tǒng)中最常用的方法,
Decibel and OrpheusDB, is record-level
delta encoding. 在這種方法中,新版本只存儲從前一個版本修改的記錄。因此,當(dāng)連續(xù)版本之間的差異很小時,它是非常有效的。但是需要組合多個增量以重構(gòu)版本的內(nèi)容。
OrphusDB通過將增量平鋪成記錄引用的完整列表來優(yōu)化重構(gòu)。但是,對于大型表來說,這種方法不能很好地擴展。
Delta encoding?增量編碼存在的問題是,無論何時修改版本,都會創(chuàng)建新的副本,即使新內(nèi)容與某些較舊版本的版本或不同版本的版本相同安奇。換言之,對于非連續(xù)版本、發(fā)散分支或數(shù)據(jù)集而言,增量編碼不是有效的。例如,在像DataHub這樣的多用戶應(yīng)用中。
基于塊的重復(fù)檢測和刪除
與增量編碼不同,此方法應(yīng)用于獨立對象。
file systems , and is a core feature of git. 在這種方法中,文件被劃分為稱為塊的單元,每個單元都被賦予一個唯一的標(biāo)識符用于檢測相同的塊。基于塊的去重對于很少被修改的大型文件來說是非常有效的。當(dāng)更新導(dǎo)致更改現(xiàn)有塊時,可以使用基于內(nèi)容的切片,避免昂貴的重切問題,即邊界偏移問題。
在本工作中,我們對結(jié)構(gòu)化數(shù)據(jù)集(如關(guān)系表)采用基于塊的去重復(fù)。我們不像在增量編碼中那樣對單個記錄進行重復(fù)數(shù)據(jù)消除,而是在主索引中的data pages上應(yīng)用重復(fù)數(shù)據(jù)刪除。好處我們不再需要從記錄中重建它,并且可以直接訪問索引和數(shù)據(jù)頁,以便快速查找和掃描。
DESIGN
SIRI Indexes
Structurally-Invariant Reusable Indexes (SIRI)
數(shù)據(jù)庫中現(xiàn)有的主要索引側(cè)重于提高讀寫性能。它們不考慮數(shù)據(jù)頁共享,這使得頁面級數(shù)據(jù)無法去重。提出了一類新的索引,結(jié)構(gòu)不變可重用索引(SIRI),它便于不同索引實例之間的頁面共享。
定義一個索引結(jié)構(gòu) I ,具有以下特性
除了以上SIRI的特性之外還包含一下3個特征:
- it is a probabilistically balanced search tree;
- it is efficient to find differences and to merge two instances;
- it is tamper evident.
類似于B+樹和Merkle樹的組合,定義節(jié)點(頁)邊界為從包含的條目中檢測到模式,以避免結(jié)構(gòu)上的差異。具體來說,為了構(gòu)造一個節(jié)點,我們掃描目標(biāo)條目直到出現(xiàn)預(yù)定義的模式,然后創(chuàng)建一個新的節(jié)點來保存被掃描的條目。由于葉節(jié)點和內(nèi)部節(jié)點的特點不同,我們?yōu)樗鼈兌x了不同的模式。
類似于B+樹,索引節(jié)點包含每個子節(jié)點的一個條目。每個條目都由一個子節(jié)點的標(biāo)識符id和相應(yīng)的拆分鍵key組成。pos-Tree也是Merkle樹,因為子節(jié)點的標(biāo)識符是子節(jié)點的加密散列值而不是存儲器或文件指針。
SYSTEM IMPLEMENTATION
在本節(jié)中,我們將介紹ForkBase的實現(xiàn)細節(jié)。系統(tǒng)既可以作為嵌入式存儲運行,也可以作為分布式服務(wù)運行。
下圖顯示了由四個主要組件組成的ForkBase群集的結(jié)構(gòu):master, dispatcher, servlet and chunk storage.主服務(wù)器、分派程序、服務(wù)程序和區(qū)塊存儲。
主服務(wù)器維護集群運行時信息,而請求分派程序則接收請求并將請求轉(zhuǎn)發(fā)給相應(yīng)的servlet。每個servlet管理由路由策略確定的密鑰空間的不相交子集。servlet還包含三個子模塊,用于執(zhí)行請求:
1.access controller:訪問控制器在執(zhí)行前驗證請求權(quán)限;
2.branch table : 分支表維護標(biāo)記和未標(biāo)記分支的分支頭;
3.object manager : 對象管理器處理對象操作,將內(nèi)部數(shù)據(jù)表示形式隱藏在主執(zhí)行邏輯中。
chunk storage 區(qū)塊存儲給數(shù)據(jù)塊提供訪問,所有塊存儲實例都形成一個共享存儲池,遠程servlet可以訪問它。實際上,每個servlet都與本地塊存儲共存,以支持快速數(shù)據(jù)訪問和持久性。當(dāng)使用ForkBase作為嵌入式存儲時,例如在塊鏈節(jié)點中,只實例化一個servlet和一個塊存儲。
Internal Data Representation
數(shù)據(jù)對象以數(shù)據(jù)塊的形式存儲。原始對象由單個塊組成,而塊對象則包含多個塊。
Chunk and cid?chunk是ForkBase中存儲的基本單元,它包含一個字節(jié)序列。每個塊有唯一標(biāo)識cid,它是根據(jù)塊中的字節(jié)序列使用加密散列函數(shù)計算出來的。
FNode and POS-tree?一個FNode被序列化并存儲為一個meta chunk。 uid == cid 存儲在索引條目中的子節(jié)點id是相應(yīng)塊的cid。
Data Types對于原始對象,它的值嵌入meta chunk的數(shù)據(jù)字段中,以便快速訪問。對于塊狀對象,數(shù)據(jù)字段包含一個cid,它指向相應(yīng)POS-Tree的根。按需求訪問對應(yīng)的POS-Tree節(jié)點,而不是直接獲取整棵樹。
Chunk Storage
塊存儲保存數(shù)據(jù)塊并支持使用cid檢索,它公開了一個鍵值接口,其中密鑰是所提交的cid。當(dāng)請求包含現(xiàn)有塊時,存儲將檢測它并立即返回。
Branch Management
每個鍵都有一個分支表,用于保存所有分支的“頭”。分支表包含兩個分別用于標(biāo)記和未標(biāo)記分支的結(jié)構(gòu)。
TB-table?標(biāo)記的分支保留在TB-table的映射結(jié)構(gòu)中,其中每個條目由標(biāo)記和頭cid組成。
UB-table未標(biāo)記的分支保留在UB-table的集合結(jié)構(gòu)中,其中每個條目只是沖突分支的頭ID。其中每個條目只是一個沖突分支的頭部cid。
Conflict Resolution在合并(M7-M9)操作中使用了一種三路合并策略。如果合并失敗,則返回沖突列表,要求解決沖突。這可以在應(yīng)用層處理,合并的結(jié)果會返回到存儲。另外,簡單的沖突可以使用內(nèi)置的解析函數(shù)(such as append, aggregate and choose-one)來解決。在發(fā)生沖突時,ForkBase還允許用戶掛起定制的解析函數(shù)。
Cluster Management
當(dāng)ForkBase作為分布式服務(wù)部署時,它使用基于哈希的兩層分區(qū),在集群中的節(jié)點之間均勻地分配工作負載:
Request dispatcher to servlet調(diào)度器接收的請求并劃分發(fā)送到相應(yīng)的servlet(劃分依據(jù): keys’ hash)。
Servlet to chunk storage在servlet中創(chuàng)建的塊根據(jù)cid進行分區(qū),然后轉(zhuǎn)發(fā)到相應(yīng)的塊存儲。
個人觀點:
比特幣-原理
可以把區(qū)塊鏈想象成比特幣網(wǎng)絡(luò)的數(shù)據(jù)庫
? 這個數(shù)據(jù)庫以文件形式存放在互聯(lián)網(wǎng)的各個比特幣節(jié)點上,每個節(jié)點都有一份完整的備份。
? 這個數(shù)據(jù)庫記錄著自比特幣誕生以來的所有比特幣轉(zhuǎn)賬交易。
? 這個數(shù)據(jù)庫是一塊一塊存儲的,每一塊包含一部分交易記錄。
? 當(dāng)要發(fā)起一筆比特幣交易的時候只需要把交易信息廣播到網(wǎng)絡(luò)中,礦工把交易信息記錄成一個新的區(qū)塊連接到原來區(qū)塊鏈上,交易就完成了。
比特幣不能作為貨幣應(yīng)用于經(jīng)濟:因為比特幣總量只有2100萬,螺旋式通縮最后會導(dǎo)致經(jīng)濟逐步停滯
今日,區(qū)塊鏈是過去幾十年來最激動人心的協(xié)議和技術(shù)集合。因為區(qū)塊鏈?zhǔn)沟脽o需許可的價值貯藏、價值匯聚和價值交易成為可能。
萬維網(wǎng)協(xié)議使得信息成為可編程的。區(qū)塊鏈則準(zhǔn)備讓所有類型的資產(chǎn)都變?yōu)榭删幊痰摹?span style="background-color:#ffffff;">去中心化存儲是存儲技術(shù)發(fā)展的必然趨勢,在大數(shù)據(jù)時代來臨時可以滿足人們對于數(shù)據(jù)存儲容量和數(shù)據(jù)持久性的更高要求。
區(qū)塊鏈與分布式存儲盡管在有些方面存在聯(lián)系,但他們代表完全不同的概念和功能。
區(qū)塊鏈?zhǔn)且环N分布式賬本技術(shù),它通過將數(shù)據(jù)分布在網(wǎng)絡(luò)中的多個節(jié)點上,并使用密碼學(xué)算法確保數(shù)據(jù)的安全性和完整性。區(qū)塊鏈的核心特點是去中心化和不可篡改性,它可以用于創(chuàng)建可信任的交易記錄、數(shù)字資產(chǎn)管理以及構(gòu)建去中心化應(yīng)用。
分布式存儲是一種數(shù)據(jù)存儲技術(shù),它將數(shù)據(jù)分布在網(wǎng)絡(luò)中的多個節(jié)點上,以提高數(shù)據(jù)的可靠性和可用性。分布式存儲系統(tǒng)將數(shù)據(jù)劃分為多個部分,并將這些部分存儲在不同的Q節(jié)點上,通過冗余備份和數(shù)據(jù)復(fù)制來保證數(shù)據(jù)的安全性和可恢復(fù)性。
總的趨勢還是利用ForkBase(結(jié)合區(qū)塊鏈實現(xiàn)高效存儲引擎),才可以將區(qū)塊鏈的潛力全面挖掘。
References:
- Hardening Distributed and Encrypted Keyword Search via Blockchain | CYW
2017 | The IEEE Symposium on Privacy-Aware Computing(PAC) (EI) |Hall T, Beecham S, Bowes D, Gray D, Counsell S. A systematic literature review on fault prediction performance in software engineering. IEEE Trans. on Software Engineering, 2012,38(6):1276?1304. - Yu SS, Zhou SG, Guan JH. Software engineering data mining: A survey. Journal of Frontiers of Computer Science and Technology, 2012,6(1):1?31 (in Chinese with English abstract).
- A Searchable Symmetric Encryption Scheme using Blockchain | LZHT
2017 | arXiv |?Akiyama F. An example of software system debugging. In: Proc. of the IFIP Congress. 1971. 353?359. - Searching an Encrypted Cloud Meets Blockchain-A Decentralized, Reliable and Fair Realization | HCWW
2018 | IEEE INFOCOMMcCabe TJ. A complexity measure. IEEE Trans. on Software Engineering, 1976,2(4):308?320. - Chidamber SR, Kemerer CF. A metrics suite for object oriented design. IEEE Trans. on Software Engineering, 1994,20(6): 476-493.
- Blockchain based searchable encryption for electronic health record sharing | CLCC
2019 | Future Generation Computer Systems (FGCS)Subramanyam R, Krishnan MS. Empirical analysis of CK metrics for object-oriented design complexity: Implications for software defects. IEEE Trans. on Software Engineering, 2003,29(4):297?310. - Zhou YM, Xu BW, Leung H. On the ability of complexity metrics to predict fault-prone classes in object-oriented systems. Journal of Systems and Software, 2010,83(4):660-674.
- Zhou YM, Leung H, Xu BW. Examining the potentially confounding effect of class size on the associations between object- oriented metrics and change-proneness. IEEE Trans. on Software Engineering, 2009,35(5):607-623.
- Zhou YM, Xu BW, Leung H, Chen L. An in-depth study of the potentially confounding effect of class size in fault prediction. ACM Trans. on Software Engineering and Methodology, 2014,23(1):10:1-10:51.
- Zhao YY, Yang YB, Lu HM, Zhou YM, Song QB, Xu BW. An empirical analysis of package-modularization metrics: Implications for software fault-proneness. Information and Software Technology, 2015,57:186-203.
- Yang YB, Zhou YM, Lu HM, Chen L, Chen ZY, Xu BW, Leung H, Zhang ZY. Are slice-based cohesion metrics actually useful in effort-aware post-release fault-proneness prediction? an empirical study. IEEE Trans. on Software Engineering, 2015,41(4): 331-357.
附中文參考文獻:
[1]? 《區(qū)塊鏈技術(shù)指南》 (唐宇飛、馮曉靜 編著,清華大學(xué)出版社,2016年)
[2]? .《區(qū)塊鏈:從數(shù)字貨幣到信任機器》(唐駿、王峰、周志華、林偉 編著,人民郵電出版社,2018年)
[3]? 《區(qū)塊鏈技術(shù)原理與應(yīng)用》(黃浩濤、鄧長清、吳鈞璋 編著,電子工業(yè)出版社,2018年)
[4]? 《區(qū)塊鏈技術(shù)與應(yīng)用》(李鵬 編著,科學(xué)出版社,2017年)
[5]? 《區(qū)塊鏈技術(shù)發(fā)展與趨勢》 (黃小娜、李立軍 編著,機械工業(yè)出版社,2018年)文章來源:http://www.zghlxwxcb.cn/news/detail-761165.html
[6]? 《區(qū)塊鏈技術(shù)及其應(yīng)用》 (楊帆 編著,電子工業(yè)出版社,2018年)文章來源地址http://www.zghlxwxcb.cn/news/detail-761165.html
到了這里,關(guān)于ForkBase:結(jié)合區(qū)塊鏈實現(xiàn)高效存儲引擎的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!