国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于去中心化索引的IPFS數(shù)據(jù)獲取方法研究

2022-02-24 12:32:12石秋娥
計算機工程與應(yīng)用 2022年3期
關(guān)鍵詞:哈希語句向量

石秋娥,周 喜,王 軼

1.中國科學(xué)院 新疆理化技術(shù)研究所,烏魯木齊 830011

2.中國科學(xué)院大學(xué),北京 100049

3.中國科學(xué)院 新疆理化技術(shù)研究所 新疆民族語音語言信息處理實驗室,烏魯木齊 830011

隨著計算機技術(shù)的發(fā)展,數(shù)據(jù)的規(guī)模量級也不斷提高,去中心化數(shù)據(jù)存儲方式可以滿足大數(shù)據(jù)環(huán)境下的數(shù)據(jù)存儲需求。星際文件系統(tǒng)[1]創(chuàng)造了一個點對點(peerto-peer,P2P)的分布式文件系統(tǒng),升級了現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu),實現(xiàn)了真正意義上的去中心化存儲。

每一個上傳到IPFS系統(tǒng)中存儲的文件,系統(tǒng)都會返回一個唯一的文件標(biāo)識符CID,但是資源請求者只有準(zhǔn)確提供CID才能下載IPFS中相應(yīng)文件。IPFS僅支持基于CID的數(shù)據(jù)獲取方式,制約了它的應(yīng)用。由于缺乏相應(yīng)的搜索功能,資源請求者很難通過關(guān)鍵詞或者其他描述信息獲取相關(guān)數(shù)據(jù)。研究IPFS的數(shù)據(jù)獲取方法,可以幫助用戶根據(jù)自身需求搜索數(shù)據(jù),有利于IPFS數(shù)據(jù)的共享與發(fā)現(xiàn),使IPFS滿足更多的應(yīng)用場景。此外,當(dāng)文件標(biāo)識符丟失或遺忘時,可以通過其他方式獲取原來的數(shù)據(jù),避免數(shù)據(jù)的“失聯(lián)”。

在IPFS之上建立數(shù)據(jù)檢索層可以解決數(shù)據(jù)獲取問題。傳統(tǒng)的集中式索引雖然容易實現(xiàn)、便于管理,但是削弱了IPFS的去中心化程度,并限制IPFS網(wǎng)絡(luò)的可伸縮性。在為IPFS建立去中心化索引方面,已有研究實現(xiàn)的都是基于關(guān)鍵詞的索引,沒有充分考慮長查詢和短查詢之間的區(qū)別,一般認(rèn)為三個以上關(guān)鍵詞的查詢屬于長查詢[2],將長查詢分詞為多個關(guān)鍵詞進行搜索會對網(wǎng)絡(luò)造成更多的負擔(dān)。為使數(shù)據(jù)的獲取更加高效,引入了緩存機制,由發(fā)布搜索的節(jié)點緩存相關(guān)結(jié)果,卻忽視了搜索發(fā)布節(jié)點與相關(guān)結(jié)果存儲節(jié)點之間的距離,使網(wǎng)絡(luò)中存儲大量不必要的冗余數(shù)據(jù),未充分利用緩存空間。

基于此,本文針對緩存空間的浪費問題,改進了緩存存儲機制,降低其所占存儲空間。針對IPFS數(shù)據(jù)獲取問題,設(shè)計了一種去中心化混合索引,使得搜索在長短查詢上都能有較好的表現(xiàn),對長查詢語句,使用word2vec[3]建立句子索引,使語義內(nèi)容相似的句子索引能夠相鄰存儲,以有效獲取IPFS系統(tǒng)數(shù)據(jù)。

1 相關(guān)工作

目前,關(guān)于IPFS的數(shù)據(jù)獲取這一方面的研究比較少,還沒有成熟的解決方案。IPFS-search[4]是github上的一個開源項目,該項目嘗試在IPFS上建立一個基于Elasticsearch的集中式搜索引擎,能為用戶提供關(guān)鍵詞搜索功能。然而集中式索引的服務(wù)器面臨著更多的攻擊,對存儲能力的要求也更高。文獻[5]提出為IPFS建立一個去中心化的搜索引擎,建立關(guān)鍵詞和CID的倒排索引,并使用DHT存儲索引文件,通過緩存層和過濾器加快搜索過程,該方法在較短的平均查詢時間內(nèi)取得了較好的緩存命中率,但是當(dāng)查詢語句有多個關(guān)鍵詞,對每個關(guān)鍵詞分別進行搜索會增加網(wǎng)絡(luò)的通訊路由。Desema[6]是一個基于IPFS和區(qū)塊鏈的去中心化服務(wù)市場,使用IPFS存儲數(shù)據(jù),并通過區(qū)塊鏈共享IPFS數(shù)據(jù)。雖然解決了區(qū)塊鏈存儲限制,但區(qū)塊鏈上實現(xiàn)的仍然是基于CID的數(shù)據(jù)獲取方式。Zhu等人[7]以去中心化的B+樹和HashMap為IPFS等去中心化存儲數(shù)據(jù)建立索引,實現(xiàn)了關(guān)鍵字搜索功能?;贒HT的索引結(jié)構(gòu)存在大量相關(guān)工作,文獻[8-9]結(jié)合向量空間模型(VSM)和潛在語義索引(LSI)將文檔表示為笛卡爾空間的向量,但是其計算過程中對文檔矩陣進行SVD分解的計算代價太大,時間復(fù)雜度是O(N2),空間復(fù)雜度O(N3)。Reynolds等人[10]提出使用布隆過濾器和緩存加快DHT網(wǎng)絡(luò)中關(guān)鍵詞搜索過程,然而緩存也增加了大量的冗余數(shù)據(jù)。Hassanzadeh等人[11]提出了LANS和GLARAS方法,分別為節(jié)點分配地址及放置副本,使系統(tǒng)中每對節(jié)點之間的延遲對應(yīng)于其地址的公共前綴長度,該方法提高了地址的位置感知能力,降低了搜索的端到端延遲及平均訪問延遲。Joung等人[12]使用超立方體索引關(guān)鍵字,相似關(guān)鍵字集的對象很可能被映射到彼此接近的點,削弱了DHT的哈希映射方式對數(shù)據(jù)鄰近性存儲的破壞。Armada[13]和LIGHT[14]通過使用前綴哈希樹(PHT)分布其索引結(jié)構(gòu),在DHT上實現(xiàn)輕量級的范圍查詢。而Echo[15]則使用了一種新的分布式結(jié)構(gòu)TRT來擴展前綴哈希樹(PHT),通過TRT提高范圍查詢的效率。Ngom等人[16]提出一種名為摘要前綴樹(SPT)的新結(jié)構(gòu)來解決DHT上關(guān)鍵詞超集搜索問題。董祥千等人[17]使用局部敏感哈希(locality sensitive Hashing,LSH)建立基于DHT的域索引,但主要是針對結(jié)構(gòu)化數(shù)據(jù)集的連接搜索問題,僅對結(jié)構(gòu)化數(shù)據(jù)開展了實驗。雖然目前關(guān)于IPFS數(shù)據(jù)獲取的研究有了一定進展,但是對長查詢帶來的網(wǎng)絡(luò)負擔(dān)及搜索效率問題并沒有很好的解決方案。

因此本文為IPFS數(shù)據(jù)建立去中心化混合索引,并利用DHT網(wǎng)絡(luò)存儲索引文件,實現(xiàn)IPFS的數(shù)據(jù)獲取。主要工作如下:第一,將文件存儲在IPFS得到的CID值與文檔關(guān)鍵詞組合,構(gòu)成關(guān)鍵詞索引發(fā)布到DHT網(wǎng)絡(luò)中存儲,然后計算文檔的句子索引并存儲在DHT網(wǎng)絡(luò)中;第二,節(jié)點對搜索結(jié)果緩存,加快后續(xù)相同查詢的搜索過程;第三,對長查詢進行句子搜索,可以在索引存儲節(jié)點的鄰近范圍搜索;對短查詢,提取關(guān)鍵詞后對每個關(guān)鍵字分別搜索。

2 相關(guān)技術(shù)

2.1 星際文件系統(tǒng)

IPFS系統(tǒng)并不是一個全新的技術(shù),而是集成并充分利用了BitTorrent、Git、P2P和密碼學(xué)等已有的技術(shù)[1]。IPFS系統(tǒng)中,以256 KB為塊大小對文件進行分塊存儲,每個分塊會分散存儲在IPFS網(wǎng)絡(luò)中的節(jié)點上,如果文件小于256 KB則直接存儲。如圖1所示,IPFS對文件分塊后,會計算每一個塊的哈希值,然后將所有塊的哈希值拼湊起來,再做一次哈希運算,從而得到最終哈希值,即文件的唯一標(biāo)識符稱為CID。資源請求者只需要使用CID就可以在IPFS網(wǎng)絡(luò)中下載相應(yīng)文件[18]。

圖1 文件唯一標(biāo)識符的生成過程Fig.1 Generation process of unique content identifier

2.2 分布式哈希表

DHT是一種用于在分布式系統(tǒng)中存儲大量數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),目前已經(jīng)得到了廣泛的應(yīng)用,P2P、IPFS、區(qū)塊鏈等系統(tǒng)使用DHT作為底層架構(gòu)。在DHT網(wǎng)絡(luò)中節(jié)點是動態(tài)變化的,一個節(jié)點很難獲取并存儲全網(wǎng)節(jié)點的相關(guān)信息,因此采用每個節(jié)點僅負責(zé)維護部分路由信息的網(wǎng)絡(luò)拓撲結(jié)構(gòu)。DHT網(wǎng)絡(luò)使用哈希算法為每個節(jié)點分配一個節(jié)點地址(nodeID),為資源計算一個唯一標(biāo)識的鍵值,使節(jié)點nodeID和資源鍵值具有相同值域,將資源存儲在nodeID與資源鍵值相同或相近的節(jié)點。為了實現(xiàn)網(wǎng)絡(luò)中資源的快速查找和定位,需要借助能保證路由查詢收斂的路由算法。相關(guān)的實現(xiàn)算法有很多,例如CAN[19]、Chord[20]、Kademlia[21]。DHT網(wǎng)絡(luò)具有以下特性:

(1)魯棒性。DHT能夠支持節(jié)點頻繁地加入和退出網(wǎng)絡(luò),DHT具有良好的可擴展性。

(2)負載均衡。DHT通過哈希運算向網(wǎng)絡(luò)分配資源,能一定程度上實現(xiàn)負載均衡[22]。

(3)可用性。同一資源在多個節(jié)點存儲,單點故障或節(jié)點退出網(wǎng)絡(luò)時保證資源的可用性。

(4)高效性。在具有N個節(jié)點的網(wǎng)絡(luò)中,DHT保證路由收斂,在有限跳數(shù)內(nèi)可以查找到目標(biāo)資源。

3 總體結(jié)構(gòu)設(shè)計

圖2為IPFS數(shù)據(jù)獲取方法IPFS-DDAM(IPFSdecentralized data acquisition method)的過程總覽圖。該方法主要包括:索引構(gòu)建、索引存儲、搜索過程、結(jié)果緩存等幾個過程。如圖2所示,步驟1~4為索引構(gòu)建和索引存儲過程,步驟a~e為搜索過程。

3.1 索引構(gòu)建及存儲

圖2中步驟1~4為索引構(gòu)建及索引存儲過程。首先,文件擁有者將文件上傳到IPFS系統(tǒng)中存儲,IPFS會返回文件唯一標(biāo)識CID;然后,需要對文件建立兩種索引,一種是關(guān)鍵詞索引,對文件進行關(guān)鍵詞提取,由這若干個關(guān)鍵詞與CID組合構(gòu)成若干個關(guān)鍵詞索引,另一種是句子索引,對提取出來的關(guān)鍵詞或文檔的中心句使用機器學(xué)習(xí)的方法構(gòu)建文檔的句子向量表示,由降維后的句子向量和CID構(gòu)成句子索引;最后,將生成的句子索引及關(guān)鍵詞索引發(fā)布到DHT網(wǎng)絡(luò)中存儲。IPFS網(wǎng)絡(luò)和DHT網(wǎng)絡(luò)只是邏輯上的劃分,物理上同一節(jié)點可以同時屬于兩個網(wǎng)絡(luò)。

圖2 IPFS-DDAM過程總覽圖Fig.2 Overview of IPFS-DDAM

3.1.1 關(guān)鍵詞索引

本文為IPFS系統(tǒng)實現(xiàn)了基于關(guān)鍵詞的搜索功能,使用TF-IDF[23](term frequency-inverse document frequency)算法提取文檔的前n個或者權(quán)重大于閾值的關(guān)鍵詞(k1,k2,…,k n),每個關(guān)鍵詞經(jīng)過哈希運算得到的關(guān)鍵詞哈希與文檔CID組成鍵值對,即為關(guān)鍵詞索引。關(guān)鍵詞哈希與nodeID具有相同值域。每個索引存儲節(jié)點負責(zé)存儲與其nodeID相同或相近的關(guān)鍵詞索引。

3.1.2 句子索引

為了將句子索引存儲在DHT網(wǎng)絡(luò)中,句子索引一方面需要體現(xiàn)文檔的內(nèi)容,另一方面需要與DHT網(wǎng)絡(luò)的節(jié)點地址具有可映射性。為了使句子索引反映文檔內(nèi)容,本文提出了一種使用機器學(xué)習(xí)的方式計算句子索引——SICP(sentence index calculation process)。首先,提取文檔的中心語句,分詞后得到若干關(guān)鍵詞(k1,k2,…,k n),或者使用TF-IDF算法提取文檔的前n個或者權(quán)重大于閾值的關(guān)鍵詞;然后采用word2vec將關(guān)鍵詞轉(zhuǎn)為詞向量表示:

其中,dimt i(t=1,2,…,m)表示第i個詞向量的第t維,此時句子可表示為,將各個詞向量乘以其權(quán)重比后對應(yīng)維度相加,得到句子的向量表示:

其中,wi(i=1,2,…,n)表示第i個關(guān)鍵詞的權(quán)重值。

此時,得到句子向量保留了文檔的內(nèi)容信息,句子之間的向量夾角反映了內(nèi)容的相似程度。然而句子向量是一個高維空間的向量表示,不能夠映射到DHT網(wǎng)絡(luò)的nodeID。為了滿足句子向量與nodeID之間的映射關(guān)系,本文使用minhash[24]對句子向量進行降維。首先,選取N個隨機的哈希函數(shù);然后,對句子向量中的每個元素進行哈希運算,取其中的最小值;最后,重復(fù)N次上一步驟,得到代表句子向量的N個數(shù)值,即將句子向量降至N維。minhash是局部敏感哈希函數(shù)的一種,降維的同時可以保留高維度向量之間的相似性。使用minhash進行降維的合理性,是基于對兩個集合隨機求最小哈希值相等的概率等于兩個集合的Jaccard系數(shù),公式表示如下:

其中,Jac(A,B)是集合A、B之間的Jaccard系數(shù),采用公式(4)計算:

將降維后的向量各維度拼接后得到160 bit的值與文檔CID組成鍵值對,即為句子索引。句子索引的鍵值與nodeID具有相同值域。此外,句子索引保留了原內(nèi)容的相似性,則相似內(nèi)容的句子索引會相鄰存儲。用戶對同一對象的描述既具有差異性也具有相似性,因此無法精確匹配查詢對象時,可以在索引存儲節(jié)點的鄰近范圍搜索。

使用SICP計算句子索引的復(fù)雜度,如表1所示。

表1 計算復(fù)雜度Table 1 Computational complexity

表1中,M為詞向量維度,N為minhash過程中選取的哈希函數(shù)個數(shù),V為word2vec詞表的大小。其中,word2vec將關(guān)鍵詞轉(zhuǎn)為詞向量表示,本質(zhì)上就是利用哈希表查值,故其時間復(fù)雜度為O(1)。由表1可知,SICP的時間復(fù)雜度為O(M×N),空間復(fù)雜度為O(M×V)。

圖3展示了一個由中心語句構(gòu)建句子索引鍵值的示例。

圖3 句子索引構(gòu)造過程Fig.3 Process of building sentence index

3.1.3 索引存儲

索引使用去中心化的方式存儲,利用DHT網(wǎng)絡(luò)存儲索引文件。本文中的DHT網(wǎng)絡(luò)基于Kademlia(KAD)算法實現(xiàn)。如圖4所示,DHT網(wǎng)絡(luò)中每個索引存儲節(jié)點都會存儲一個索引表及一個緩存表,并使用倒排表的結(jié)構(gòu)對索引進行整合、存儲。DHT網(wǎng)絡(luò)中的節(jié)點提供索引存儲和搜索功能。

圖4 索引的存儲結(jié)構(gòu)Fig.4 Storage structure of index

3.2 搜索過程及結(jié)果緩存

當(dāng)網(wǎng)絡(luò)中的一個對等節(jié)點發(fā)起搜索時,首先根據(jù)查詢語句的長度判斷執(zhí)行句子索引或關(guān)鍵詞索引,還需要檢查緩存中的數(shù)據(jù),如果該節(jié)點自身緩存了搜索結(jié)果則直接返回結(jié)果并進行緩存的更新;其次,在搜索消息路由過程中,如果其他對等節(jié)點緩存了該搜索的結(jié)果,則中斷搜索并返回結(jié)果,否則對搜索消息進行轉(zhuǎn)發(fā)直到負責(zé)存儲該搜索結(jié)果的對等節(jié)點;然后,如果是關(guān)鍵詞索引,需要精確匹配關(guān)鍵詞哈希,如果是句子索引,無法精確匹配的情況下,因為相似內(nèi)容的句子索引相鄰存儲,在存儲句子索引的節(jié)點附近進行搜索,搜索時會按照制定的規(guī)則添加搜索結(jié)果;最后,對搜索結(jié)果進行整合過濾,結(jié)束搜索并返回結(jié)果,發(fā)起搜索的對等節(jié)點將此次搜索及相關(guān)結(jié)果加入到它的緩存中。

此外,由于緩存空間有限,并不是所有節(jié)點都會緩存搜索結(jié)果。發(fā)布查詢的節(jié)點在收到目的節(jié)點發(fā)送的搜索結(jié)果時,會根據(jù)其與目的節(jié)點的距離決定是否對搜索結(jié)果進行緩存,只有當(dāng)該節(jié)點的最近鄰節(jié)點或者若干路由跳數(shù)范圍內(nèi)的節(jié)點沒有相關(guān)數(shù)據(jù)才進行緩存。如果緩存空間已滿,為了避免出現(xiàn)隨著緩存空間增大緩存的使用反而減少的情況,將采用最近最久未訪問算法對緩存結(jié)果進行置換,保證對熱數(shù)據(jù)的快速搜索,同時減少緩存的空間開銷。

如圖5所示,網(wǎng)絡(luò)中的一個對等節(jié)點發(fā)起搜索的執(zhí)行過程如下:

圖5 搜索流程圖Fig.5 Flow diagram of querying

(1)對等節(jié)點發(fā)起查詢時,對查詢語句進行分詞,判斷是否執(zhí)行句子索引,若判斷為是,則執(zhí)行步驟(2);若判斷為否,執(zhí)行步驟(4)。

(2)使用SICP計算查詢語句的160 bit哈希值,判斷緩存中是否存儲相關(guān)查詢結(jié)果,若判斷為是,則執(zhí)行步驟(6);若判斷為否,執(zhí)行(3)。

(3)執(zhí)行句子索引,若在索引存儲節(jié)點無法精確匹配的情況下,因為相似內(nèi)容的句子索引相鄰存儲,在存儲句子索引的節(jié)點附近進行搜索,然后執(zhí)行步驟(6)。

(4)使用與建立關(guān)鍵詞索引同樣的哈希算法,計算查詢關(guān)鍵詞的160 bit哈希值,判斷緩存中是否存儲相關(guān)查詢結(jié)果,若判斷為是,則執(zhí)行步驟(6);若判斷為否,執(zhí)行步驟(5)。

(5)執(zhí)行關(guān)鍵詞索引,在索引存儲節(jié)點需要精確匹配存儲的關(guān)鍵詞哈希,然后執(zhí)行步驟(6)。

(6)發(fā)起查詢的對等節(jié)點得到搜索結(jié)果,更新緩存,結(jié)束查詢。

4 實驗結(jié)果及分析

4.1 實驗配置及數(shù)據(jù)集

用于實驗的環(huán)境如下:操作系統(tǒng)為Windows 7旗艦版64位,Inter?Core?i5-3470 CPU@3.20 GHz,931 GB硬盤,12 GB內(nèi)存,peersim版本為1.0.5,IntelliJ IDEA版本為2020.2.2。

本文使用peersim軟件在兩個數(shù)據(jù)集上進行了仿真實驗,一個是雅虎的匿名數(shù)據(jù)集[25],另一個是github上的數(shù)據(jù)集ChineseSTS[26]。雅虎數(shù)據(jù)集是對真實用戶的查詢進行匿名處理后得到的。ChineseSTS數(shù)據(jù)集中每一行數(shù)據(jù)會有兩個句子和一個相似度值,相似度值取值范圍為[0,5],0表示語義相反或不相干,相似度值越大表示兩個句子的相似度越高。

4.2 句子索引分析

從ChineseSTS數(shù)據(jù)集抽取相似度值標(biāo)記為4和5的數(shù)據(jù),選擇其中分詞后詞數(shù)大于等于3的數(shù)據(jù),得到相似數(shù)據(jù)對1 190對。使用SICP計算相似數(shù)據(jù)對的句子索引,計算每個相似數(shù)據(jù)對句子索引的切比雪夫距離[27]。在執(zhí)行句子索引時,會設(shè)置切比雪夫距離作為閾值,然后根據(jù)閾值在句子索引存儲節(jié)點的鄰近范圍搜索滿足條件的結(jié)果。圖6展示了相似數(shù)據(jù)對總數(shù)與切比雪夫距離的關(guān)系,其中91.34%的相似數(shù)據(jù)對的切比雪夫距離小于等于25。

圖6 相似數(shù)據(jù)對總數(shù)與距離關(guān)系圖Fig.6 Total number of similar data variation with distance

將每對相似數(shù)據(jù)對拆分成兩部分,分別是用于存儲的數(shù)據(jù)及用于搜索查詢的數(shù)據(jù),而且數(shù)據(jù)對中存在多對相似的情況。將1 190條數(shù)據(jù)建立句子索引并存入DHT網(wǎng)絡(luò),另外1 190條數(shù)據(jù)用于搜索。首先,不使用句子索引,按照文獻[5]所述方法,將長查詢語句分詞后,對每個關(guān)鍵詞分別查詢,設(shè)置并行搜索數(shù)目為3,搜索滿足要求的數(shù)據(jù)。統(tǒng)計查詢語句的關(guān)鍵詞個數(shù)及搜索的平均網(wǎng)絡(luò)跳數(shù),得到結(jié)果如圖7所示。

圖7 網(wǎng)絡(luò)跳數(shù)隨關(guān)鍵詞數(shù)變化Fig.7 Hop number variation with keywords number

查詢語句中有117條語句的關(guān)鍵詞數(shù)3,對應(yīng)的平均網(wǎng)絡(luò)跳數(shù)為19.78跳,當(dāng)查詢語句的關(guān)鍵詞數(shù)為5時,對應(yīng)的平均網(wǎng)絡(luò)跳數(shù)為33.06跳,隨著關(guān)鍵詞個數(shù)的增加,搜索網(wǎng)絡(luò)跳數(shù)也不斷增加。

使用句子索引,設(shè)置切比雪夫距離為20,并行搜索數(shù)目為3時,搜索滿足要求的數(shù)據(jù)。每個查詢語句的平均網(wǎng)絡(luò)路由為8.19跳。具體而言,在不同網(wǎng)絡(luò)跳數(shù)時,能搜索得到的結(jié)果數(shù)如圖8所示。

圖8 搜索結(jié)果數(shù)對應(yīng)的網(wǎng)絡(luò)跳數(shù)分布Fig.8 Hop number distribution of search results

使用句子索引時,無需關(guān)心查詢語句的關(guān)鍵詞數(shù),每個查詢語句的平均網(wǎng)絡(luò)路由為8.19跳,而不使用句子索引查詢,即使關(guān)鍵詞數(shù)僅為3,也需要19.78跳,可見句子索引加快了對長查詢語句的搜索過程,減少了網(wǎng)絡(luò)負擔(dān),實驗結(jié)果證明了本文提出的句子索引搜索方式的有效性。

4.3 關(guān)鍵詞索引及緩存分析

從雅虎數(shù)據(jù)集中抽取1 500 000條數(shù)據(jù),對其建立關(guān)鍵詞索引,并將其索引信息存入DHT網(wǎng)絡(luò)。為測試改進存儲后的緩存所占空間進行了如下實驗,從1 500 000條數(shù)據(jù)中抽取1 000條數(shù)據(jù),然后對這1 000條數(shù)據(jù)隨機采樣10 000次,構(gòu)成用于搜索的10 000條數(shù)據(jù),模擬重復(fù)查詢,其中數(shù)據(jù)的平均重復(fù)數(shù)為10。搜索結(jié)果如表2所示。

表2 在500個節(jié)點下的仿真實驗結(jié)果Table 2 Results of simulation experiment with 500 nodes

緩存空間表示節(jié)點緩存搜索結(jié)果的能力,例如5表示節(jié)點可以緩存5條搜索結(jié)果。緩存總數(shù)是指DHT網(wǎng)絡(luò)中所有節(jié)點緩存搜索結(jié)果的總數(shù)。為盡可能地貼近真實情況,在指定范圍內(nèi)隨機選取干擾概率模擬節(jié)點的加入和退出網(wǎng)絡(luò)。因此在表2中,對10 000條數(shù)據(jù)進行搜索,而對應(yīng)實際有效搜索次數(shù)卻低于10 000次。當(dāng)緩存空間設(shè)為20時,DHT網(wǎng)絡(luò)所有節(jié)點的緩存空間為10 000,實際執(zhí)行的有效搜索為9 616次,按照文獻[5]及文獻[10]采用的緩存方式,此時緩存空間將使用9 616,而改進緩存存儲機制后,緩存空間使用了8 559,緩存占用空間減少了10.99%,實驗結(jié)果表明改進后的緩存機制,緩存占用空間更少,可以緩存更多的查詢結(jié)果。

為說明緩存空間、數(shù)據(jù)的平均重復(fù)數(shù)、緩存命中之間的關(guān)系,進行了如下實驗,從1 500 000條數(shù)據(jù)中抽取3 000條數(shù)據(jù),然后對這3 000條數(shù)據(jù)隨機采樣10 000次,構(gòu)成用于搜索的10 000條數(shù)據(jù),其中數(shù)據(jù)的平均重復(fù)數(shù)為3.3。得到搜索結(jié)果與表2的結(jié)果進行對比,如表3所示。

表3 不同平均重復(fù)數(shù)的結(jié)果對比Table 3 Comparison results of different average duplicate data

平均重復(fù)數(shù)越大表示用于搜索的數(shù)據(jù)中重復(fù)查詢越多,即數(shù)據(jù)被頻繁搜索的次數(shù)越多。在表3中,緩存空間大小相同,數(shù)據(jù)平均重復(fù)數(shù)不同的,進行了三次對照實驗。無論緩存空間大小如何變化,平均重復(fù)數(shù)為10的緩存命中次數(shù)均約為平均重復(fù)數(shù)為3.3的實驗緩存命中次數(shù)的3倍。實驗結(jié)果表明緩存可以為被頻繁搜索的數(shù)據(jù)提供更好的搜索機制,可以保證對熱數(shù)據(jù)的快速搜索。實驗中,隨著節(jié)點緩存空間的增大,緩存命中次數(shù)也隨之增大,而搜索會在緩存命中時中斷,無需將搜索消息轉(zhuǎn)發(fā)到最終目的節(jié)點,因此,減少了消息轉(zhuǎn)發(fā)路由,加快了搜索過程。

5 結(jié)束語

本文鑒于目前在IPFS文件系統(tǒng)上缺乏有效的數(shù)據(jù)獲取方法,提出一種去中心化混合索引的IPFS數(shù)據(jù)獲取方法——IPFS-DDAM。實驗結(jié)果表明,本文方法IPFS-DDAM在句子搜索和關(guān)鍵詞搜索上都能有較好的表現(xiàn),加快了搜索過程,對緩存機制的改進,降低了緩存所占存儲空間。在未來的工作中將探索能否改進句子索引,使相似內(nèi)容的句子索引存儲相鄰這一特性更加明顯,進一步提高搜索效率。

猜你喜歡
哈希語句向量
向量的分解
聚焦“向量與三角”創(chuàng)新題
重點:語句銜接
精彩語句
向量垂直在解析幾何中的應(yīng)用
基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
向量五種“變身” 玩轉(zhuǎn)圓錐曲線
基于維度分解的哈希多維快速流分類算法
計算機工程(2015年8期)2015-07-03 12:20:04
如何搞定語句銜接題
語文知識(2014年4期)2014-02-28 21:59:52
基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
計算機工程(2014年6期)2014-02-28 01:25:40
建湖县| 峨眉山市| 顺平县| 阳山县| 乐安县| 扎赉特旗| 南宫市| 湄潭县| 丽水市| 巴青县| 肇东市| 宣威市| 彰化县| 桐庐县| 始兴县| 洛隆县| 保德县| 大余县| 靖西县| 田林县| 广州市| 文昌市| 宜城市| 民权县| 修武县| 宿迁市| 玛曲县| 台前县| 拜泉县| 柯坪县| 尉氏县| 中西区| 临朐县| 大埔区| 合肥市| 小金县| 浮山县| 红安县| 石棉县| 皋兰县| 德昌县|