亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種面向大規(guī)模社交網(wǎng)絡(luò)的圖數(shù)據(jù)存儲(chǔ)及查詢方法_3

文檔序號(hào):8922524閱讀:來(lái)源:國(guó)知局
過(guò)block管理池管理空閑內(nèi)存塊,已分配的內(nèi)存塊鏈接成雙向鏈表,數(shù)據(jù)的更新發(fā)生在鏈表末尾,不用引起數(shù)據(jù)的挪動(dòng)和復(fù)制。
[0050]其次,在Redis和Neo4j中,圖數(shù)據(jù)的頂點(diǎn)和邊分別存儲(chǔ),而本文提出的方法直接存儲(chǔ)圖的頂點(diǎn)鄰域。存儲(chǔ)相同規(guī)模的圖數(shù)據(jù),Redis和Neo4j需要啟動(dòng)更多數(shù)目的網(wǎng)絡(luò)I/Oo Redis和Neo4j啟動(dòng)1/0的次數(shù)為圖頂點(diǎn)數(shù)目和邊數(shù)目之和,而本發(fā)明啟動(dòng)1/0的次數(shù)為圖頂點(diǎn)數(shù)目,而在社交媒體圖結(jié)構(gòu)中,圖的邊數(shù)目是遠(yuǎn)遠(yuǎn)大于圖頂點(diǎn)數(shù)目。即便可以采用批量數(shù)據(jù)傳輸,由于Redis和Neo4j數(shù)據(jù)訪問(wèn)采用類似SQL的查詢語(yǔ)言,需要將寫入的數(shù)據(jù)在客戶端轉(zhuǎn)換為批量查詢語(yǔ)句,并且在服務(wù)器端經(jīng)過(guò)解析執(zhí)行,轉(zhuǎn)換和解析影響了效率。而本發(fā)明本身采用頂點(diǎn)及其鄰域作為數(shù)據(jù)組織單位,在遠(yuǎn)程訪問(wèn)過(guò)程中,客戶端采用buffer緩存待寫入目標(biāo)機(jī)器的數(shù)據(jù),當(dāng)緩沖區(qū)滿,或者超時(shí)事件發(fā)生,才將buffer中的數(shù)據(jù)批量地發(fā)送給目標(biāo)機(jī)器。
[0051]最后,Neo4j每次數(shù)據(jù)更新,都是事務(wù)操作,服務(wù)期需要將數(shù)據(jù)寫入同步到磁盤文件中。而Redis采用RDB的機(jī)制,通過(guò)后臺(tái)1/0線程將內(nèi)存中某一時(shí)間斷面的數(shù)據(jù)寫入到磁盤文件中,每次寫入過(guò)程會(huì)阻塞其他更新。而本發(fā)明在更新時(shí),采用mmap接口,在內(nèi)存區(qū)域和磁盤文件之間建立映射,數(shù)據(jù)寫入到內(nèi)存區(qū)域,由操作系統(tǒng)內(nèi)核負(fù)責(zé)將數(shù)據(jù)更新同步到磁盤文件中。
[0052]綜合以上不同點(diǎn),本發(fā)明在做數(shù)據(jù)更新的過(guò)程中在設(shè)計(jì)上有多個(gè)優(yōu)勢(shì),可以達(dá)到更高的更新性能。
[0053]自適應(yīng)數(shù)據(jù)規(guī)模的存儲(chǔ)管理策略
[0054]圖計(jì)算的數(shù)據(jù)訪問(wèn)具有很高的隨機(jī)性,采用內(nèi)存組織數(shù)據(jù)能夠提高數(shù)據(jù)隨機(jī)訪問(wèn)效率。然后,圖數(shù)據(jù)的數(shù)據(jù)規(guī)模具有海量性,集群的有限內(nèi)存無(wú)法負(fù)載大規(guī)模圖數(shù)據(jù)。本文提出了自適應(yīng)數(shù)據(jù)規(guī)模的內(nèi)存管理策略,優(yōu)先使用內(nèi)存組織圖數(shù)據(jù),當(dāng)內(nèi)存資源耗盡時(shí),容許數(shù)據(jù)溢出到磁盤中。具體的做法是:將圖數(shù)據(jù)管理系統(tǒng)的可以使用的存儲(chǔ)資源分成兩類,一類是粗粒度存儲(chǔ)資源,另一類是細(xì)粒度存儲(chǔ)資源。
[0055]粗粒度資源對(duì)應(yīng)本地Linux文件系統(tǒng)的預(yù)先分配的大文件,文件大小為2GB、4GB甚至更大,前提是不超過(guò)集群?jiǎn)蝹€(gè)節(jié)點(diǎn)可用內(nèi)存容量。運(yùn)行時(shí),粗粒度資源被全部加載,并常駐于內(nèi)存。細(xì)粒度資源對(duì)于本地Linux文件系統(tǒng)的按需分配的小文件,文件大小為4MB、8MB,而且小文件的數(shù)目隨著圖數(shù)據(jù)的增加不斷變大。運(yùn)行時(shí),無(wú)法將粗粒度資源和全體細(xì)粒度資源全部置于內(nèi)存,因此在內(nèi)存中開(kāi)辟有界緩存窗口,按需將細(xì)粒度資源載入窗口。當(dāng)窗口被占滿,需要加載新的細(xì)粒度資源時(shí),需要根據(jù)緩存替換算法,選擇窗口中已有的細(xì)粒度資源,將其換出,然后載入新的資源。
[0056]兩類資源都被劃分成固定大小的Block,全體Block擁有唯一的Block ID,可以根據(jù)BlockID隨機(jī)地訪問(wèn)Block。Block是存儲(chǔ)資源的基本分配單位,由Block池管理器負(fù)責(zé)分配和回收Block。當(dāng)頂點(diǎn)鄰域的Block雙向鏈表頭部未滿時(shí),需要為新插入邊分配新的Block作為鏈表的頭部;當(dāng)刪除頂點(diǎn)鄰域的舊邊時(shí),需要釋放和回事空的Block。所有的Block要么處于空閑狀態(tài),要么屬于某個(gè)指定的頂點(diǎn)鄰域。
[0057]資源分配時(shí),可以根據(jù)數(shù)據(jù)的規(guī)模動(dòng)態(tài)地選擇存儲(chǔ)資源。首先從粗粒度資源開(kāi)始分配,目的是盡量采用內(nèi)存組織數(shù)據(jù)。當(dāng)粗粒度資源耗盡時(shí),開(kāi)始按需地動(dòng)態(tài)地分配細(xì)粒度資源,存儲(chǔ)溢出內(nèi)存的數(shù)據(jù)。頂點(diǎn)鄰域中的邊以時(shí)間戳有序存儲(chǔ),可以定期地掃描圖數(shù)據(jù),將過(guò)期的圖數(shù)據(jù)從粗粒度資源中刪除,轉(zhuǎn)存到細(xì)粒度資源中,從而是內(nèi)存中的數(shù)據(jù)保持新鮮。
[0058]采用自適應(yīng)數(shù)據(jù)規(guī)模的存儲(chǔ)分配策略,既可以盡力使用內(nèi)存組織數(shù)據(jù),從而提高數(shù)據(jù)訪問(wèn)的隨機(jī)性,又允許圖數(shù)據(jù)規(guī)模增大時(shí),將數(shù)據(jù)從內(nèi)存溢出到磁盤中,解決了海量圖數(shù)據(jù)的管理問(wèn)題。
[0059]應(yīng)用感知的異地預(yù)取策略
[0060]在本發(fā)明中,為了加快異地?cái)?shù)據(jù)訪問(wèn)的效率,提出了一種感知應(yīng)用特征的異地預(yù)取的機(jī)制。通過(guò)該機(jī)制,更夠顯著地提高異地?cái)?shù)據(jù)訪問(wèn)的吞吐率。
[0061]圖數(shù)據(jù)的訪問(wèn),類似于訪問(wèn)順序存儲(chǔ)的數(shù)據(jù),具有明顯的局部性。圖計(jì)算的算法一般基于圖的遍歷算法。以廣度優(yōu)先遍歷為例,訪問(wèn)頂點(diǎn)V時(shí),V的k階鄰域(從頂點(diǎn)V出經(jīng)過(guò)最短距離k條邊可達(dá)的全部頂點(diǎn)構(gòu)成的集合)的頂點(diǎn)被訪問(wèn)概率隨著k增大而降低,因此,處理V的訪問(wèn)請(qǐng)求時(shí),系統(tǒng)根據(jù)頂點(diǎn)位置信息可以預(yù)測(cè)近期最有可能被訪問(wèn)的頂點(diǎn),將頂點(diǎn)V和近期最有可能被訪問(wèn)的頂點(diǎn)的數(shù)據(jù)合并在一起,傳輸給請(qǐng)求者。請(qǐng)求者將預(yù)先取得的數(shù)據(jù)緩存在本地,下次獲取異地?cái)?shù)據(jù)時(shí),先檢查本地的緩存,如果存在,直接訪問(wèn)本地即可,否則向異地請(qǐng)求數(shù)據(jù)。
[0062]很多圖計(jì)算框架會(huì)順序地讀取圖數(shù)據(jù)的子圖的全部頂點(diǎn),此時(shí),可以采用順序預(yù)取的方式。預(yù)取方式的選擇要符合圖計(jì)算的數(shù)據(jù)訪問(wèn)特點(diǎn),可以提供多種預(yù)取的策略,讓用戶選擇從中選擇最佳的預(yù)取策略。
[0063]實(shí)例I數(shù)據(jù)訪問(wèn)實(shí)例
[0064]本發(fā)明測(cè)試了本發(fā)明以及比較系Redis和Neo4j在不同并發(fā)量下的寫性能,該寫性能取了十個(gè)數(shù)據(jù)集下的平均值,其中在測(cè)試圖3中,本發(fā)明使用NYNN表示。
[0065]由圖3可知,本發(fā)明本地寫性能明顯優(yōu)于Redis和Neo4j,元數(shù)據(jù)的設(shè)計(jì)和數(shù)據(jù)傳輸格式和數(shù)據(jù)寫入的機(jī)制影響了寫的性能。首先本發(fā)明圖數(shù)據(jù)的劃分采用連續(xù)的等寬頂點(diǎn)區(qū)間,能夠通過(guò)首次數(shù)據(jù)寫入請(qǐng)求,將元數(shù)據(jù)緩存在本地,此后使用緩存在本地的元數(shù)據(jù)進(jìn)行數(shù)據(jù)尋址,這樣減少了尋址的1開(kāi)銷。寫入數(shù)據(jù)的時(shí)候,自己寫入本地的內(nèi)存映射文件中。Redis和Neo4j都提供了方便使用的查詢命令/語(yǔ)言,先將用戶寫入數(shù)據(jù)的請(qǐng)求,封裝成查詢命令,然后通過(guò)本地網(wǎng)絡(luò)發(fā)送給server,由server負(fù)責(zé)解析命令,完成查詢。
[0066]本發(fā)明測(cè)試了本發(fā)明以及比較系Redis和Neo4j在不同并發(fā)量下的讀性能,該讀性能取了十個(gè)數(shù)據(jù)集下的平均值。
[0067]如圖4所示,本地讀操作,本發(fā)明可以達(dá)到GB/s量級(jí),而Redis和Neo4j是1MB/s?lOOMB/s,本發(fā)明可以直接將圖數(shù)據(jù)通過(guò)_ap接口映射到客戶進(jìn)程的地址空間中,進(jìn)行操作。而Redis和Neo4j采用查詢命令向server請(qǐng)求數(shù)據(jù)。
[0068]為了反應(yīng)圖數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)效率,本發(fā)明比較了多個(gè)系統(tǒng)的存儲(chǔ)膨脹比,即存儲(chǔ)同樣多的數(shù)據(jù),看內(nèi)存和磁盤的占用膨脹比。
[0069]如圖5所示,對(duì)比Redi s,Neo4j和本發(fā)明的磁盤使用情況,可以明顯的觀察到,Neo4j作為基于磁盤的存儲(chǔ)系統(tǒng),占用磁盤空間最大,數(shù)據(jù)存儲(chǔ)的時(shí)候,需要存儲(chǔ)屬性值和屬性名,而且屬性值采用字符串的形式存儲(chǔ)。Redis所需的磁盤存儲(chǔ)空間最少,Redis的數(shù)據(jù)持久化之前,將數(shù)據(jù)進(jìn)行壓縮。而內(nèi)存的使用中,Redis的內(nèi)存使用最大,因?yàn)镽edis將全部數(shù)據(jù)加載到內(nèi)存。Neo4j和本發(fā)明都可以配置所需內(nèi)存的大小。
[0070]本發(fā)明測(cè)試了本發(fā)明以及比較系Redis和Neo4j在不同并發(fā)量下的遠(yuǎn)程寫性能,該寫性能取了十個(gè)數(shù)據(jù)集下的平均值。
[0071]如圖6所示,遠(yuǎn)程寫數(shù)據(jù),本發(fā)明的性能明顯高于Neo4j和R
當(dāng)前第3頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1