張昌文 滿毅 何進 谷杰銘 邢瀟



摘? ?要:隨著生物數據的價值被不斷地挖掘出來,對其進行有效存儲和高效地傳輸變得尤為重要。論文通過結合星際文件系統(Interplanetary File System,IPFS),提出了基于IPFS的生物數據存儲傳輸系統,用來提高生物數據的存儲傳輸效率;在生物數據傳輸方面,引入了數據交換機制和秒傳機制來提高生物數據傳輸速度;在生物數據存儲方面,通過采用一種高效的數據存儲結構和引入版本控制機制來提高生物數據存儲效率。與此同時,通過對生物數據的存儲傳輸進行了深入調研,并進行對比實驗驗證系統的效果,實驗結果表明,相比于HTTP、FTP的存儲傳輸效率,論文提出的系統具有較高的存儲效率與傳輸速度。
關鍵詞:IPFS;數據交換機制;版本控制機制;秒傳機制
中圖分類號:TP309.2? ? ? ? ? 文獻標識碼:A
Abstract: The value of biological data (biodata) is constantly being explored, so it is especially important to store it efficiently. This paper proposes a biological data storage and transmission system based on IPFS by combining IPFS (Interplanetary File System), used to improve the efficiency of biological data storage transmission. In the aspect of biological data transmission, a data exchange mechanism and second transfer mechanism is introduced to improve the speed of biological data transmission. In the aspect of biological data storage, improving the biological data storage efficiency by adopting an efficient data storage structure and introducing a version control mechanism. In this paper, in-depth research on the storage and transmission of biological data, and a comparative experiment was carried out to verify the effect of the system. Experimental results show that compared with the storage and transmission efficiency of HTTP and FTP, the proposed system has higher storage efficiency and transmission speed.
Key words: IPFS; data exchange mechanism; version control mechanism; second transfer mechanism
1 引言
隨著生物行業的快速發展,生物數據呈現出了數據量巨大、數據來源廣泛、數據種類繁多、具有高價值等特點,不同的研究機構開始對生物數據進行研究分析,而研究的前提就是對生物數據進行存儲與傳輸。在生物數據存儲方面,生物數據存儲是進行研究的基礎,因此必須要有一種高效的數據存儲方式來應對生物數據所呈現出來的特點。目前,常用的數據存儲方式主要有關系型數據庫存儲[1]和非關系型數據庫存儲[2]等。在生物數據的傳輸方面,數據傳輸是不同研究機構之間分享研究結果的必然方法,目前常用的數據傳輸方式有FTP[3](文件傳輸協議)、HTTP[4](超文本傳輸協議)、P2P[5](點對點技術)等技術。
在數據存儲方面,Federico Tavella[6]等人提出了一種依賴于分子通信的新存儲解決方案,特別是用細菌納米網絡來解決DNA分子的存儲問題。S. M. Hossein Tabatabaei Yazdi1[7]等人對歸檔和隨機訪問DNA存儲通道引入和分析了一套新的約束編碼方案。Edvard Pedersen[8]等人提出了用于生物元數據庫管理的GeStore方法,它提供特定元數據庫版本的高效存儲和運行時生成,以及生物數據分析工具的高效增量更新。
在數據傳輸方面,Kunwar Pal[9]等人提出基于數據塊優先級選擇方案和帶寬感知對等體選擇機制的組合,其改善了對等體之間的延遲,從而提高數據的傳輸速度;Ping Lai[10]等人提出了一種新的高級數據傳輸服務(ADTS),此文利用ADTS設計一個高性能的FTP庫(FTP-ADTS),用于高性能數據傳輸;Ding Zhang[11]等人提出了一種利用Node.JS平臺構建超文本傳輸協議(HTTP)Web服務器與傳輸控制協議或用戶數據報協議(TCP / UDP)套接字程序相結合的解決方案,提高PC程序和嵌入式系統通信的效率。
IPFS(Interplanetary File System,星際文件系統)[12]是一個分布式的Web,點到點超媒體協議,被譽為將取代傳統的互聯網HTTP協議成為新一代的文件傳輸協議。它融合了P2P、DHT、BitTorrent、GIT、SFS等技術,而在IPFS系統中起架構作用的是P2P技術,P2P技術采用的是分布式計算方式,具有可靠性、高容錯性、可擴展性、靈活性、計算速度快等特點。除此之外,IPFS系統融合了Merkle Tree[13]和DAG[14]提出的強大的Merkle DAG對象模型,并通過此對象模型構建了版本文件系統,用于不同版本文件的分發。
在論文中,首次提出了基于IPFS的生物數據的存儲傳輸系統。在生物數據傳輸方面,引入了數據交換機制和秒傳機制來提高生物數據傳輸速度。在生物數據存儲方面,通過采用一種高效的數據存儲結構、引入版本控制機制來提高生物數據存儲效率;然后通過與HTTP、FTP技術在生物數據存儲傳輸效率方面進行實驗對比分析,得出論文提出的系統具有較高的數據存儲與傳輸效率。
基于 IPFS的生物存儲傳輸系統的設計,主要包括系統框架、模塊設計以及系統中的關鍵點。
2 系統設計
2.1 系統框架
論文中設計出的系統主要用于生物數據的存儲與傳輸,因此將整個系統分為四層結構,如圖1所示,由下到上分別是存儲層、路由層、交換層、應用層。
存儲層:主要目的是用來存儲生物數據。將整個系統中的每一個節點分離出一部分硬盤空間提供給整個網絡使用,并且采用了一種高效的數據存儲結構來存儲生物數據。
路由層:主要目的是幫節點在整個系統中查到自己所需資源。此系統采用DHT[15](分布式哈希表)的存儲方式,用來存儲和查詢系統中的生物數據。
交換層:主要目的是用來提高生物數據的下載速度。系統在BitTorrent的基礎上進行了改進,采用了一個特殊的數據交換機制。
應用層:根據論文中要解決的業務需求,對生物數據進行相關的操作,主要包括生物數據的上傳、生物數據的下載、生物數據的查詢。
2.2 模塊設計
如圖2所示,基于IPFS的生物數據的存儲傳輸系統主要由存儲模塊、資源查找模塊、數據交換模塊、系統功能模塊組成。
存儲模塊,即用于存儲生物數據的模塊,在此模塊中采用的是生物數據分片存儲的方式,并且對于系統網絡中已經上傳的數據還引入了秒傳機制,達到極速秒傳的效果。此外,又引入了版本控制,即控制數據上傳過程中產生不同版本的問題,并根據需要進行不同版本的分發。
資源查找模塊,即用于查找所需的生物數據并存儲相關索引信息,其包括存儲與定位兩部分,當生物數據的大小小于1KB時會直接存儲在DHT中,如果大于1KB的生物數據將只會存儲其索引值,當進行資源查找時,會直接根據生物數據的索引值在DHT中查詢定位所需生物數據。
數據交換模塊,即整個系統中的每一個節點都有兩個列表:已有的生物數據和所需的生物數據。對于需要查找資源的節點,通過資源查找模塊來對所需的生物數據查詢,當查詢到之后,會與對應的節點建立連接,并進行數據的交換。在資源查找過程中,對于其它的節點,會查詢自己有的生物數據,并對比查找節點的所需數據,確定自己是否有目標資源。
系統功能模塊,主要功能有生物數據的上傳、下載、查詢。生物數據上傳,即將生物數據上傳到系統網絡之中;生物數據的下載,即在系統網絡中下載節點所需的生物數據;生物數據查詢,即查詢網絡之中有哪些生物數據。
2.3 關鍵點
2.3.1 秒傳機制
在此系統中引入了秒傳機制,用來提高生物數據的上傳速度。其原理是當某個節點上傳的生物數據到系統網絡中之后,通過哈希值校驗可以確定此生物數據是否存在于網絡之中,如果存在于網絡之中,則該文件可以通過系統網絡復制一份到上傳者的本地存儲中,從而達到極速秒傳的效果。
2.3.2 數據交換機制
在數據交換模塊中,系統網絡中的每個節點都有兩個列表:have_list(已有生物數據塊)、want_list(想要生物數據塊)。通過節點之間交換生物數據塊來達到分發數據的效果,并且當節點在下載生物數據的同時,也會不斷地上傳已經下載的生物數據塊到系統網絡中。與此同時,此交換機制還存在一個倉庫用來存儲所有節點已有的生物數據塊,因此只要當生物數據的哈希值與want_list中的哈希值一樣時,則可以直接下載該生物數據塊,而不僅局限于一個對應的節點。
2.3.3 數據存儲結構
此系統在存儲生物數據時,除了對生物數據進行等大小的分片存儲之外,還采用了特殊的數據存儲結構。此結構采用樹狀結構,主要由節點與鏈接組成,節點存儲有數據以及下級鏈接的關系,而鏈接存儲了數據的Hash值。鏈接的數據結構主要由三部分組成:Name(下級數據名稱)、Size(下級數據大小)、Cid(下級數據索引)。在這樣數據結構下,父節點的哈希值是由子節點的哈希值所決定的,父節點中包含有子節點的信息,因此當生物數據塊被修改之后,只需要對被修改的生物數據塊進行復制,再進行修改即可,而不是對整個生物數據進行復制,因此會大大減少存儲空間的消耗。
2.3.4 版本控制機制
版本控制系統,即當生物數據存在部分更改時會產生不同版本的生物數據,因此可以根據版本號來獲取需要的整個生物數據。從2.3.3小節提出的生物數據的存儲結構可得,當生物數據部分發生改變時,只需要對其發生改變的生物數據塊進行修改,這樣就產生了新版本的生物數據。由于當生物數據塊被改動之后,其對應的哈希值也隨之改變,因此將所有生物數據塊的哈希值鏈接到一起作為其版本號,并將其存儲到對應的節點上。這樣就可以通過給定的生物數據的版本號,查詢到對應的節點,再根據此版本號中的哈希值找到對應的生物數據的分片,再將分片組合起來,即形成了完整的生物數據。
3 系統運行過程與可行性分析
3.1 系統運行過程
基于IPFS的生物數據存儲傳輸系統的最主要的運行過程是生物數據的上傳、下載、存儲。
首先,生物數據的上傳。當生物數據大小大于1KB時,會采用等大小分片的方式對生物數據進行分片,即將生物數據的每一個片分成256KB,然后計算每片生物數據塊的哈希值,并將所有塊的哈希值(Block Hash)組成一個數組,再一次計算其哈希值,這樣就得到了生物數據最終的哈希值Hash(Biodata),然后將Hash(Biodata)和Block Hash數組組成一個對象并將其作為索引結構,最終將所有生物數據塊與索引結構上傳到網絡中,完成生物數據的上傳,并返回生物數據的Hash(Biodata),如果生物數據大小小于1KB時,則直接把生物數據與哈希值(索引)上傳到網絡中。此外,如果當某個用戶上傳的生物數據已經存在于系統網絡之中,那么將使用秒傳機制,來達到極速秒傳的效果。
其次,生物數據的存儲。為了提高存儲的效率,系統會選擇最快的路徑來存儲生物數據。系統中的每個節點都會提供一部分硬盤空間(默認為10GB,可以配置)給整個網絡使用。那么在通常情況下,這部分硬盤空間總是最快的,因為不需要跨網。當存儲完畢后,網絡上任意節點都可以訪問這個生物數據。當有很多節點對這個生物數據感興趣,那么網絡中的拷貝數會越來越多,所以在生物數據下載時就可以與多個節點相連接來傳輸生物數據塊。除此之外,系統還引入了版本控制機制,來實現隨著時間變化的不同生物數據版本的控制,并且可以有效分發不同的生物數據版本。
最后,生物數據的下載。系統網絡中對生物數據的資源查找采用的是DHT(Distributed Hash Tables)技術,網絡中所有節點都維護著鍵值對的映射,每個節點只負責網絡中一部分的數據存儲與路由信息,并且DHT的查詢效率為log2(n),所以當某個節點根據生物數據的鍵即Hash值進行資源查找時,通過DHT可以迅速定位到資源所在地,然后調用數據交換機制來完成發起資源請求的節點下載所需生物數據。此外,當網絡中有多個節點都存在資源時,發起資源查詢的節點可以從多處目標節點上獲取生物數據的片段,從而達到加速下載的目的。
3.2 系統可行性分析
生物數據具有很高的價值,此價值不僅體現在生物行業,而且可以用于其它行業,比如醫學、農業和健康等領域。而IPFS被譽為將取代傳統的互聯網HTTP協議成為新一代的文件傳輸協議,IPFS具有可擴展性、傳輸速度快的特點,并且可以讓互聯網有更快的速度,更加安全,更加開放,其為生物數據的存儲傳輸提供了技術支持。此外,IPFS的開發可以使用多種編程語言,比如Go、JavaScript等,因此從技術方面來說具有較強的可行性。
此系統作為一個分布式的系統,網絡中的所有節點既是服務器也是客戶機,不存在有中心服務器,因此當網絡中的某個節點失效或者離開網絡時,都不會對整個網絡產生影響,因此從系統穩定的角度來說具有較強的可行性。
4 實驗與分析
基于IPFS的生物數據存儲傳輸系統在生物數據的傳輸方面,生物數據的傳輸速度要比FTP、HTTP的速度更快,效率更高。在生物數據的存儲方面,使用該系統進行生物數據存儲具有存儲簡單方便、存儲效率高等優勢。
本次實驗采用的實驗平臺分別是Windows(Intel? Core?i5-4200U CPU @ 1.60GHz 2.30GHz ;Memory:6.0 GB)、Ubuntu14.04(Intel? Core?2 Duo CPU E8400 @ 3.00GHz × 2;Memory:2.0 GB)、Ubuntu16.04(Intel? Core? i7-4790 CPU @ 3.60GHz × 8;Memory:15.6GB );實驗網絡采用的是4G網絡。
在實驗中采用的是FileZilla[16]來實現FTP的文件傳輸。當生物數據大小為1GB時,先在Windows上安裝好FileZilla Server,后在Ubuntu16.04和Ubuntu14.04系統中安裝FileZilla客戶端,然后在Ubuntu14.04系統中上傳本次實驗的1GB的生物數據到FTP的服務器,實驗結果表明,上傳速度為3.4MB/s;上傳成功之后在Ubuntu16.04系統中下載此生物數據,實驗結果表明,下載速度為1.3MB/s。1GB生物數據其所占空間為1GB;當生物數據大小為5GB時,實驗結果表明,上傳速度為3.1MB/s,下載速度為1.2MB/s,5GB生物數據其所占空間為5GB。
在實驗中采用的是HFS來實現HTTP的文件傳輸。當生物數據大小為1GB時,在Windows系統上搭建好HFS的服務器,由于其服務器是直接通過選擇硬盤中的文件,即整個Windows系統的硬盤空間都已經在其服務器之中,故不存在上傳速度的說法。然后,Ubuntu14.04系統中通過給定的HTTP鏈接在瀏覽器中打開進行下載文件,實驗結果表明,其下載速度為3.4MB/s,并且1GB的生物數據占了Windows硬盤空間1GB的存儲。 當生物數據大小為5GB時,實驗結果表明,下載速度為3.2MB/s,并且1GB的生物數據占了Windows硬盤空間5GB的存儲。
本次實驗使用基于IPFS對生物數據進行傳輸與存儲的系統,首先在Windows、Ubuntu14.04、Ubuntu16.04系統中安裝好基于IPFS的系統,并讓所有實驗平臺都處在一個局域網中,然后在Windows系統上的節點上傳1GB的生物數據,在Ubuntu16.04系統的節點上傳5GB的生物數據,并且測試其上傳數據以及所占硬盤空間。隨后,系統中非上傳的某兩個節點對1GB、5GB的生物數據分別進行下載,測試其下載速度。最后,此時網絡中1GB、5GB的生物數據分別都已經存在于兩個系統節點之中,再讓不包含1GB或者5GB生物數據的節點進行下載,測試其在多節點加速下的下載速度。此外,當生物數據上傳到系統網絡中之后,會對文件進行分塊并哈希存儲在本地硬盤之中。
本次實驗通過對1GB/5GB生物數據的10%部分進行完全改變,并采用各種傳輸方式對其進行上傳并存儲。實驗結果表明,當生物數據量為1GB時,改變其中100MB數據,由于原來硬盤中已經存儲有1GB數據,再次上傳之后,在FTP傳輸方式中占用2GB硬盤空間;在HTTP傳輸方式中也占用2GB硬盤空間。在基于IPFS的系統中,占用1.1GB內存空間;同樣當生物數據量為5GB時,改變其中500MB數據,由于原來硬盤中已經存儲有5GB數據,再次上傳之后,在FTP傳輸方式中占用10GB硬盤空間;在HTTP傳輸方式中也占用10GB硬盤空間;在基于IPFS的系統中,占用5.5GB內存空間。
綜上所述,當生物數據量為1GB時,實驗結果如表1所示。當生物數據量為5GB時,實驗結果如表2所示。
從實驗結果可得,無論是在大數據量還是小數據量的情況下,論文提出的系統在生物數據的傳輸方面都表現出了遠高于FTP、HTTP的傳輸效率。與此同時,由于引入了秒傳機制和多節點加速機制,進一步提高了生物數據的傳輸效率。在生物數據的存儲方面,當生物數據部分發生改變需要再次上傳時,FTP、HTTP會對整個生物數據再次存儲,而論文提出的系統只會對修改部分進行再次存儲,因此明顯地提高了生物數據的存儲效率。
5 結束語
生物數據的存儲與傳輸在生物數據的研究中起著非常重要的作用,因此為了提高生物數據的存儲效率和加快生物數據的傳輸速度,論文首次提出了基于IPFS生物數據的存儲傳輸系統。
首先,在生物數據傳輸方面,上傳時采用了分片哈希上傳機制和秒傳機制,資源查找時采用了DHT技術,下載時采用數據交換機制,以此來提高了生物數據的傳輸速度。
其次,在生物數據存儲方面,通過一種高效的數據存儲結構對生物數據進行存儲,并通過版本控制系統對不同版本的生物數據進行分發,從而提高了生物數據的存儲效率。從實驗結果中可得,在生物數據傳輸速度方面,論文提出的系統具有遠快于FTP、HTTP的傳輸速度,并且在秒傳機制的作用下,當系統網絡中存在所要上傳的生物數據時,其可以達到極速秒傳的效果,并且在多節點加速機制的作用下,會進一步提高生物數據傳輸的速度。在生物數據的存儲方面,當生物數據部分發生改變需要再次上傳時,FTP、HTTP會對整個生物數據再次存儲,而論文提出的系統只會對修改部分進行再次存儲,因此明顯地提高了生物數據的存儲效率。
基金項目:
國家重點研發計劃“生物信息安全及高效傳輸”項目(項目編號:2017YFC1201204)。
參考文獻
[1] Tomasic I, Petrovi? N, Fotouhi H, et al. Data Flow and Collection for Remote Patients Monitoring: From Wireless Sensors through a Relational Database to a Web interface in Real Time [J]. 2017.
[2] Ginde G, Saha S, Mathur A, et al. Use of NoSQL database and visualization techniques to analyze massive scholarly article data from journals[J]. 2018.
[3] Gien M. A File Transfer Protocol (FTP) [J]. Computer Networks, 1978, 2(4):312-319.
[4] Reschke J F. This document defines the "Basic" Hypertext Transfer Protocol (HTTP) Authentication Scheme, which transmits credentials as userid/password pairs, obfuscated by the use of Base64 encoding [J]. 2015.
[5] Elrakabawy S M, Lindemann C. Peer-to-peer file transfer in wireless mesh networks[C]. Conference on Wireless on Demand Network Systems & Services. 2012.
[6] Tavella F, Giaretta A, Dooley-Cullinane T M, et al. DNA Molecular Storage System: Transferring Digitally Encoded Information through Bacterial Nanonetworks [J]. 2018.
[7] Yazdi S M H T, Han M K, Garcia-Ruiz E, et al. DNA-Based Storage: Trends and Methods [J]. IEEE Transactions on Molecular, Biological and Multi-Scale Communications, 2015, 1(3):230-248.
[8] Pedersen E, Bongo L A. Large-scale Biological Meta-Database Management [J]. Future Generation Computer Systems, 2016.
[9] Pal K, Govil M C, Ahmed M. Priority-based scheduling scheme for live video streaming in peer-to-peer network [J]. Multimedia Tools & Applications, 2018(2):1-31.
[10] Lai P , Subramoni H , Narravula S , et al. Designing Efficient FTP Mechanisms for High Performance Data-Transfer over InfiniBand.[C]. International Conference on Parallel Processing. IEEE Computer Society, 2009.
[11] Zhang D, Lin S, Fu Y, et al. The communication system between web application host computers and embedded systems based on Node.JS[C]. International Congress on Image & Signal Processing. IEEE, 2018.
[12] Benet J. IPFS - Content Addressed, Versioned, P2P File System [J]. Eprint Arxiv, 2014.
[13] Jian X, Wei L, Yu Z, et al. Dynamic Fully Homomorphic encryption-based Merkle Tree for lightweight streaming authenticated data structures [J]. Journal of Network & Computer Applications, 2018, 107.
[14] Radhakrishnan A, Solus L, Uhler C. Counting Markov equivalence classes for DAG models on trees [J]. Discrete Applied Mathematics, 2018:S0166218X18301069.
[15] Hassanzadeh-Nazarabadi Y, Küp?ü A, ?znur ?zkasap. Decentralized and locality aware replication method for DHT-based P2P storage systems [J]. Future Generation Computer Systems, 2018, 84:32-46.
[16] Woodraska D, Sanford M, Xu D. Security mutation testing of the FileZilla FTP server[C]. Acm Symposium on Applied Computing. 2011.