比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > LTC > Info

技術 | 鏈上賬本數據寫入慢?試試LSM_RUN

Author:

Time:1900/1/1 0:00:00

導讀

首先問大家一個小問題?區塊鏈的賬本數據存儲格式主要是什么類型的?

相信聰明的你一定知道是Key-Value類型存儲。

下一個問題,這些Key-Value數據在底層數據庫如何高效組織?

答案就是我們本期介紹的內容:LSM。

LSM是一種被廣泛采用的持久化Key-Value存儲方案,如LevelDB,RocksDB,Cassandra等數據庫均采用LSM作為其底層存儲引擎。

據公開數據調研,LSM是當前市面上寫密集應用的最佳解決方案,也是區塊鏈領域被應用最多的一種存儲模式,今天我們將對LSM基本概念和性能進行介紹和分析。

LSM-Tree背景:追本溯源

LSM-Tree的設計思想來自于一個計算機領域一個老生常談的話題——對存儲介質的順序操作效率遠高于隨機操作。

如圖1所示,對磁盤的順序操作甚至可以快過對內存的隨機操作,而對同一類磁盤,其順序操作的速度比隨機操作高出三個數量級以上,因此我們可以得出一個非常直觀的結論:應當充分利用順序讀寫而盡可能避免隨機讀寫。

Figure1Randomaccessvs.Sequentialaccess

董希淼:央行數字貨幣使用雙離線技術 沒有手機信號也可使用:近日,國家金融與發展實驗室特聘研究員董希淼表示,可以不開立銀行賬戶或者支付賬戶,只要你裝有數字貨幣錢包,你就可以使用央行數字貨幣。央行的數字貨幣使用最新的雙離線技術,即使在沒有手機信號的情況下,依然可以使用。只要裝有數字貨幣錢包的手機,拿在一起碰一碰,就可以方便地完成轉賬或者支付。北京大學數字金融研究中心高級研究員徐遠表示,新的數字貨幣和我們以前的紙幣是一比一兌換的,現在商業銀行要獲得數字貨幣,必須拿以前的貨幣來換,并不增加總量,這是第一步,試點的時候并不增加總量。(央視財經)[2020/4/29]

考慮到這一點,如果我們想盡可能提高寫操作的吞吐量,那么最好的方法一定是不斷地將數據追加到文件末尾,該方法可將寫入吞吐量提高至磁盤的理論水平,然而也有顯而易見的弊端,即讀效率極低,我們稱這種數據更新是非原地的,與之相對的是原地更新。

為了提高讀取效率,一種常用的方法是增加索引信息,如B+樹,ISAM等,對這類數據結構進行數據的更新是原地進行的,這將不可避免地引入隨機IO。

LSM-Tree與傳統多叉樹的數據組織形式完全不同,可以認為LSM-Tree是完全以磁盤為中心的一種數據結構,其只需要少量的內存來提升效率,而可以盡可能地通過上文提到的Journaling方式來提高寫入吞吐量。當然,其讀取效率會稍遜于B+樹。

聲音 | 譚銳堅:有了信息加密技術 區塊鏈不會對數據有危害:據新浪財經消息,第13屆亞洲金融論壇于2020年1月13及14日在灣仔香港會議展覽中心舉行,香港貿易融資平臺有限公司風險總監譚銳堅表示,區塊鏈能夠確保對于數據進行調取和分析的人都能夠獲得他們授信的數據,對于數據不會有任何危害,對于安全性不會有任何影響。

談及信息加密技術,他認為,不管是進口還是出口,相關方都把所有的信息放在區塊鏈當中,如果放進去數據就不會進行篡改和變化,就不會從單一平臺進行信息虛假的呈現,所以區塊鏈的技術會在未來得到很好的發展。[2020/1/14]

LSM-Tree數據結構:抽絲剝繭

圖2展示了LSM-Tree的理論模型(a)和一種實現方式(b)。LSM-Tree是一種層級的數據結構,包含一層空間占用較小的內存結構以及多層磁盤結構,每一層磁盤結構的空間上限呈指數增長,如在LevelDB中該系數默認為10。

Figure2LSM與其LevelDB實現

對于LSM-Tree的數據插入或更新,首先會被緩存在內存中,這部分數據往往由一顆排序樹進行組織。

當緩存達到預設上限,則會將內存中的數據以有序的方式寫入磁盤,我們稱這樣的有序列為一個SortedRun,簡稱為Run。

隨著寫入操作的不斷進行,L0層會堆積越來越多的Run,且顯然不同的Run之前可能存在重疊部分,此時進行某一條數據的查詢將無法準確判斷該數據存在于哪個Run中,因此最壞情況下需要進行等同于L0層Run數量的I/O。

現場 | 嘉楠區塊鏈CEO邵建良:正探索聯盟鏈和跨鏈技術 以實現更多場景的聯合發展:金色財經現場報道,嘉楠區塊鏈CEO邵建良在“2019 CAN 萬物互鏈·區塊鏈與全球經濟新格局”大會上表示:我們在探索更多的聯盟鏈和跨鏈的技術,我們希望實現更多場景的聯合發展,通過跨鏈技術實現不同的鏈的價值流轉。另外,在區塊鏈標準制定方面,我們需要更多的完善的底層標準,在統一標準下實現不同鏈的數據傳輸。最后,我們確實需要不斷教育市場,為更多的商業模式和社會發展帶來無限可能。[2019/12/3]

為了解決該問題,當某一層的Run數目或大小到達某一閾值后,LSM-Tree會進行后臺的歸并排序,并將排序結果輸出至下一層,我們將一次歸并排序稱為Compaction。如同B+樹的分裂一樣,Compaction是LSM-Tree維持相對穩定讀寫效率的核心機制,我們將會在下文詳細介紹兩種不同的Compaction策略。

另外值得一提的是,無論是從內存到磁盤的寫入,還是磁盤中不斷進行的Compaction,都是對磁盤的順序I/O,這就是LSM擁有更高寫入吞吐量的原因。

Levelingvs.Tiering:一讀一寫,不分伯仲

LSM-Tree的Compaction策略可以分為Leveling和Tiering兩種,前者被LevelDB,RocksDB等采用,后者被Cassandra等采用,稱采用Leveling策略的的LSM-Tree為LeveledLSM-Tree,采用Tiering的LSM-Tree為TieredLSM-Tree,如圖3所示。

現場 | 李廣乾:區塊鏈不僅是一種技術 也是一種思維和方式:金色財經現場報道,11月17日,在由國研智庫創新科學園數權經濟創新發展中心、區塊鏈產業人才研究所(工信部人才交流中心聯合行業知名機構發起)和清華 x-lab共同發起的《“區塊鏈技術的應用與管理實踐”高級研討班——“習總書記關于區塊鏈技術重要講話”系列活動》國研智庫第一期上,國務院發展研究中心研究員李廣乾表示,區塊鏈行業正在發生重要轉變。

1、區塊鏈服務實體經濟正日益成為社會共識,區塊鏈引進國內以來,形成了把區塊鏈跟比特幣相區隔的基本共識。同時區塊鏈服務于國內的一些產業發展方面,也有很多成功的案例,讓我們看到了區塊鏈是可以落地的,是可以真金白銀地服務于信息化建設的。

2.區塊鏈技術和產業的進步讓人們看來了未來的發展前景,眾多的互聯網企業不斷加入區塊鏈技術應用行列。

3.區塊鏈日益進入戰略決策視野和國家發展規劃。

此外,李廣乾表示,區塊鏈不僅是一種技術,也是一種思維和方式。[2019/11/17]

Figure3兩種Compaction策略對比

▲Leveling

簡而言之,Tiering是寫友好型的策略,而Leveling是讀友好型的策略。在Leveling中,除了L0的每一層最多只能有一個Run,如圖3右側所示,當在L0插入13時,觸發了L0層的Compaction,此時會對Run-L0與下層Run-L1進行一次歸并排序,歸并結果寫入L1,此時又觸發了L1的Compaction,此時會對Run-L1與下層Run-L2進行歸并排序,歸并結果寫入L2。

動態 | GSA標準發展區塊鏈技術 2019年啟動項目試點:據中國水產養殖網報道,全球海洋保障(GSA)標準將國際多項標準基準進行重新組合,并發展區塊鏈技術,可追溯系統覆蓋全供應鏈,2019年啟動項目試點。“全球海鮮保障(Global Seafood Assurances,GSA)”是一家非盈利組織,由全球水產養殖聯盟(GAA)創建,旨在為海產品全供應鏈提供參考基準,包括水產養殖和海洋捕撈兩大板塊。[2018/11/17]

▲Tiering

反觀Tiering在進行Compaction時并不會主動與下層的Run進行歸并,而只會對發生Compaction的那一層的若干個Run進行歸并排序,這也是Tiering的一層會存在多個Run的原因。

▲對比分析

相比而言,Leveling方式進行得更加貪婪,進行了更多的磁盤I/O,維持了更高的讀效率,而Tiering則相正好反。

本節我們將對LSM-Tree的設計空間進行更加形式化的分析。

LSM層數

布隆過濾器

LSM-Tree應用布隆過濾器來加速查找,LSM-Tree為每個Run設置一個布隆過濾器,在通過I/O查詢某個Run之前,首先通過布隆過濾器判斷待查詢的數據是否存在于該Run,若布隆過濾器返回Negative,則可斷言不存在,直接跳到下個Run進行查詢,從而節省了一次I/O;而若布隆過濾器返回Positive,則仍不能確定數據是否存在,需要消耗一次I/O去查詢該Run,若成功查詢到數據,則終止查找,否則繼續查找下一個Run,我們稱后者為假陽現象,布隆過濾器的過高的假陽率會嚴重影響讀性能,使得花費在布隆過濾器上的內存形同虛設。限于篇幅本文不對布隆過濾器做更多的介紹,直接給出FPR的計算公式,為公式2.

其中是為布隆過濾器設置的內存大小,為每個Run中的數據總數。讀寫I/O

考慮讀寫操作的最壞場景,對于讀操作,認為其最壞場景是空讀,即遍歷每一層的每個Run,最后發現所讀數據并不存在;對于寫操作,認為其最壞場景是一條數據的寫入會導致每一層發生一次Compaction。

核心理念:基于場景化的設計空間

基于以上分析,我們可以得出如圖4所示的LSM-Tree可基于場景化的設計空間。

簡而言之,LSM-Tree的設計空間是:在極端優化寫的日志方式與極端優化讀的有序列表方式之間的折中,折中策略取決于場景,折中方式可以對以下參數進行調整:

當Level間放大比例時,兩種Compaction策略的讀寫開銷是一致的,而隨著T的不斷增加,Leveling和Tiering方式的讀開銷分別提高/減少。

當T達到上限時,前者只有一層,且一層中只有一個Run,因此其讀開銷到達最低,即最壞情況下只需要一次I/O,而每次寫入都會觸發整層的Compaction;

而對于后者當T到達上限時,也只有一層,但是一層中存在:

因此讀開銷達到最高,而寫操作不會觸發任何的Compaction,因此寫開銷達到最低。

Figure4LSM由日志到有序列的設計空間

事實上,基于圖4及上文的分析可以進行對LSM-Tree的性能進一步的優化,如文獻對每一層的布隆過濾器大小進行動態調整,以充分優化內存分配并降低FPR來提高讀取效率;文獻提出“LazyLeveling”方式來自適應的選擇Compaction策略等。

限于篇幅本文不再對這些優化思路進行介紹,感興趣的讀者可以自行查閱文獻。

小結

LSM-Tree提供了相當高的寫性能、空間利用率以及非常靈活的配置項可供調優,其仍然是適合區塊鏈應用的最佳存儲引擎之一。

本文對LSM-Tree從設計思想、數據結構、兩種Compaction策略幾個角度進行了由淺入深地介紹,限于篇幅,基于本文之上的對LSM-Tree的調優方法將會在后續文章中介紹。

作者簡介葉晨宇來自趣鏈科技基礎平臺部,區塊鏈賬本存儲研究小組

參考文獻

.O’NeilP,ChengE,GawlickD,etal.Thelog-structuredmerge-tree(LSM-tree).ActaInformatica,1996,33(4):351-385.

.JacobsA.Thepathologiesofbigdata.CommunicationsoftheACM,2009,52(8):36-44.

.LuL,PillaiTS,GopalakrishnanH,etal.Wisckey:Separatingkeysfromvaluesinssd-consciousstorage.ACMTransactionsonStorage(TOS),2017,13(1):1-28.

.DayanN,AthanassoulisM,IdreosS.Monkey:Optimalnavigablekey-valuestore//Proceedingsofthe2017ACMInternationalConferenceonManagementofData.2017:79-94.

.DayanN,IdreosS.Dostoevsky:Betterspace-timetrade-offsforLSM-treebasedkey-valuestoresviaadaptiveremovalofsuperfluousmerging//Proceedingsofthe2018InternationalConferenceonManagementofData.2018:505-520.

.LuoC,CareyMJ.LSM-basedstoragetechniques:asurvey.TheVLDBJournal,2020,29(1):393-418.

Tags:區塊鏈TREERUNING國內最好的區塊鏈公司TREE價格rune幣創始人ethnographyofspeaking

LTC
Token Fund消逝,加密VC崛起_KEN

乍看之下,TokenFund與加密VC機構似乎是同一個事物,都是區塊鏈投資機構的稱呼,但在兩個不同稱呼的背后,代表著國內機構區塊鏈投資兩個時代的變化.

1900/1/1 0:00:00
干貨 | 要給智能合約增加隱私性并不簡單_以太坊

作者:RAVITALSOLOMON翻譯&校對:戡亂&阿劍對用戶來說,普通交易的隱私保護基本上算是一個已解決了的問題.

1900/1/1 0:00:00
2020 年度DeFi 總結:BTC 是圈外人的盛宴,DeFi 則是圈內人的狂歡_EFI

原標題:《2020年度“DeFi大狂歡”總結,下一年度的新方向在哪里?》上周的年末總結提到,今年圈內的主題,可以說只有兩個:一個是BTC?,一個是DeFi.

1900/1/1 0:00:00
觀點 | 區塊鏈去中心化金融是對互聯網金融的“撥亂反正”嗎?_區塊鏈

現代金融中的一個非常關鍵的活動就是貨幣創造。貨幣創造的一個重要方式就是貸款。當你向銀行這樣的金融機構申請貸款時,符合要求的條件,銀行可以在它的資產負債表的資產端記上你的貸款,然后在負債端記上放給.

1900/1/1 0:00:00
財聯社:比特幣會漲至65萬美元?摩根大通喊出這等天價_BIRD

來源:財聯社 作者:卞純 財聯社訊,剛剛過去的周末,比特幣價格續創歷史新高,突破24000美元大關.

1900/1/1 0:00:00
一文了解 WBTC_以太坊

WBTC全稱WrappedBitcoin,是BTC的一種錨定幣,2019年1月由KyberNetwork、BigGo共同發起,基于以太坊,可以和BTC1:1兌換.

1900/1/1 0:00:00
ads