時序圖的圖數(shù)據(jù)管理方法及其裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體地涉及圖的數(shù)據(jù)管理技術(shù),更具體地涉及時序圖的圖數(shù)據(jù)的組織、存儲、更新和查詢技術(shù)。
【背景技術(shù)】
[0002]圖是一種由頂點(diǎn)的集合和頂點(diǎn)之間的關(guān)聯(lián)關(guān)系即邊的集合共同形成的數(shù)據(jù)結(jié)構(gòu)。圖也可以視為一種網(wǎng)絡(luò)?,F(xiàn)實(shí)生活中的許多問題,例如,社交網(wǎng)絡(luò)中用戶之間的關(guān)系、萬維網(wǎng)中網(wǎng)頁之間的關(guān)系、用戶-項(xiàng)目矩陣(user-1tem matrix)、道路網(wǎng)絡(luò)、語義網(wǎng)絡(luò)等,都可以轉(zhuǎn)化為圖計(jì)算問題。
[0003]這些圖會隨著時間不斷演化,它們的變化規(guī)律是非常值得研究的問題。本文中將隨時間變化的圖,稱為時序圖(temporary graph)。時序圖分析研究時序圖在一系列時間點(diǎn)上的快照,有的需要在這些快照上做全局迭代式計(jì)算,有的需要訪問一些特定的頂點(diǎn)和邊,以及它們的附屬數(shù)據(jù)。典型的研究工作包括分析Web頁面重要程度的變化過程、探索用戶活動對他們在社交網(wǎng)絡(luò)中的關(guān)系的影響,以及觀察社交網(wǎng)絡(luò)的圖直徑的變化等。時序圖分析能夠發(fā)現(xiàn)圖在演化過程中體現(xiàn)出來的性質(zhì),增強(qiáng)了靜態(tài)圖分析的功能,正在成為圖分析的重要手段。
[0004]為了支持圖分析工作的開展,從系統(tǒng)層面需要有圖數(shù)據(jù)管理系統(tǒng)和圖計(jì)算引擎的支持。對于時序圖分析來說,引入時間維度后對系統(tǒng)支持提出了新的挑戰(zhàn),包括如何權(quán)衡空間和時間復(fù)雜度、如何利用數(shù)據(jù)局部性,因此需要設(shè)計(jì)新的系統(tǒng)來解決這些問題。對于計(jì)算部分,本文將在第4章詳細(xì)討論,本章將討論時序圖數(shù)據(jù)管理的問題,重點(diǎn)研究如何設(shè)計(jì)使得系統(tǒng)能夠高效地支持時序圖數(shù)據(jù)的存儲和查詢。
[0005]在已有的相關(guān)工作中,DeltaGraph設(shè)計(jì)了一種類樹結(jié)構(gòu)用來存儲時序圖數(shù)據(jù),其在獲取快照的代價方面和有關(guān)頂點(diǎn)的隨機(jī)訪問開銷上存在需要改進(jìn)之處。
【發(fā)明內(nèi)容】
[0006]鑒于上述情況,做出了本發(fā)明。
[0007]根據(jù)本發(fā)明的一個方面,提供了一種時序圖的圖數(shù)據(jù)管理方法,圖由頂點(diǎn)和邊組成,該圖數(shù)據(jù)管理方法可以包括:獲得時序圖的事件數(shù)據(jù);以及以二維空間-時間數(shù)據(jù)塊C=(Vc, Tc)形式組織時序圖的數(shù)據(jù)并存儲在存儲設(shè)備上,一個維度是時間維度,另一個維度是頂點(diǎn)維度,數(shù)據(jù)塊C= (Vc, Tc)保存一個時間區(qū)間[\,tj中與頂點(diǎn)集合Vc相關(guān)的數(shù)據(jù),所述數(shù)據(jù)塊C = (Vc, Tc)邏輯上包括與頂點(diǎn)集合Vc相關(guān)的、在時刻S。處圖的快照以及在時間區(qū)間[\,tj內(nèi)發(fā)生事件的日志,其中Vc是頂點(diǎn)集合,Tc指示時間區(qū)間,Tc =[s。,tj,S。表示該時間區(qū)間的起始時刻,t。表示該時間區(qū)間的結(jié)束時刻。
[0008]根據(jù)該圖數(shù)據(jù)管理方法,與頂點(diǎn)集合Vc相關(guān)的、在時刻Sc處圖的快照邏輯上可以以下列兩種形式之一表示:在時刻Sc處點(diǎn)和邊的連接情況和屬性設(shè)置情況;在時刻Sc處有效的事件的數(shù)據(jù)的集合。
[0009]圖數(shù)據(jù)管理方法還可以包括:維持全局?jǐn)?shù)據(jù)塊索引,基于該全局?jǐn)?shù)據(jù)塊索引,給定頂點(diǎn)ID和時刻,能夠定位到與該頂點(diǎn)ID和該時刻相關(guān)的數(shù)據(jù)在哪個數(shù)據(jù)塊。
[0010]空間-時間數(shù)據(jù)塊還可以包括數(shù)據(jù)塊內(nèi)部索引,在基于給定頂點(diǎn)ID和時刻、基于全局?jǐn)?shù)據(jù)塊索引定位到具體空間-時間數(shù)據(jù)塊后,基于數(shù)據(jù)塊內(nèi)部索引,基于該給定頂點(diǎn)ID,能夠定位到在該具體空間-時間數(shù)據(jù)塊中與該給定頂點(diǎn)ID相關(guān)的具體數(shù)據(jù)段。
[0011]空間-時間數(shù)據(jù)塊C = (Vc, Tc)物理上可以包括多個頂點(diǎn)的數(shù)據(jù)段,每個頂點(diǎn)的數(shù)據(jù)段包含該頂點(diǎn)的事件以及所有以該頂點(diǎn)作為端點(diǎn)的邊相關(guān)的事件,所述頂點(diǎn)的事件包括關(guān)于該頂點(diǎn)的、在時間SC處有效的事件和在時間區(qū)間[&,tj內(nèi)發(fā)生的所有事件,該頂點(diǎn)的每個邊相關(guān)的事件包括關(guān)于該邊的、在時間SC處有效的事件和在時間區(qū)間[S。,、]內(nèi)發(fā)生的所有事件,每個事件信息包括事件內(nèi)容和事件發(fā)生的時刻。
[0012]多個頂點(diǎn)的數(shù)據(jù)段在物理上可以是一個頂點(diǎn)的數(shù)據(jù)段一個頂點(diǎn)的數(shù)據(jù)段地順序存儲的,每個頂點(diǎn)的數(shù)據(jù)段中的所有數(shù)據(jù)集中存儲在一起。
[0013]圖數(shù)據(jù)管理方法還可以包括,在頂點(diǎn)維度上,針對已經(jīng)存在的每個頂點(diǎn)集合,時間上從該頂點(diǎn)集合的最后一個空間-時間數(shù)據(jù)塊Cn的結(jié)束時刻tne開始,存儲結(jié)束時刻tc的快照作為與該頂點(diǎn)集合相關(guān)聯(lián)的最新快照,以及隨時間進(jìn)行,接收新發(fā)生的事件,并以日志形式存儲。
[0014]9、根據(jù)權(quán)利要求8的圖數(shù)據(jù)管理方法,還包括:
[0015]關(guān)于該頂點(diǎn)集合,以最后一個空間-時間數(shù)據(jù)塊Cn的結(jié)束時刻tne時刻作為下一空間-時間數(shù)據(jù)塊Cn+Ι的開始時刻t (n+1) s,確定下一空間-時間數(shù)據(jù)塊C (n+1)的結(jié)束時刻t(n+l)e,所述下一空間-時間數(shù)據(jù)塊C(n+1)的時間區(qū)間[t (n+1) s, t (n+1) e]的長度是目前數(shù)據(jù)塊的總數(shù)k的指數(shù)函數(shù);以及基于開始時刻t (n+1) s的快照和所述從所述開始時刻t (n+1) s起到目前為止、關(guān)于最后一個空間-時間數(shù)據(jù)塊Cn的頂點(diǎn)集合存儲的日志,形成下一空間-時間數(shù)據(jù)塊C (n+1)。
[0016]在圖數(shù)據(jù)管理方法中,關(guān)于該頂點(diǎn)集合,可以以最后一個空間-時間數(shù)據(jù)塊Cn的結(jié)束時刻tne時刻作為下一空間-時間數(shù)據(jù)塊Cn+Ι的開始時刻t (n+1) S,如下確定下一空間-時間數(shù)據(jù)塊C (n+1)的結(jié)束時刻t (n+1) e:設(shè)Su為下一空間-時間數(shù)據(jù)塊C (n+1)的開始時刻t (n+1) s的快照的大小,Lu為從所述開始時刻t (n+1) s起到目前為止、關(guān)于最后一個空間-時間數(shù)據(jù)塊Cn的頂點(diǎn)集合存儲的日志的大小,當(dāng)Lu/Su彡λ且Lu彡γ時,基于開始時刻t (n+1) s的快照和所述從所述開始時刻t (n+1) s起到目前為止、關(guān)于最后一個空間-時間數(shù)據(jù)塊Cn的頂點(diǎn)集合存儲的日志,形成下一空間-時間數(shù)據(jù)塊C(n+1),其中λ為類底數(shù)參數(shù),γ為最小的分割閾值。
[0017]圖數(shù)據(jù)管理方法還可以包括:形成下一空間-時間數(shù)據(jù)塊C(n+1)時,判斷下一空間-時間數(shù)據(jù)塊C(n+1)的結(jié)束時刻t (n+1) e的快照的大小是否超過預(yù)定閾值,當(dāng)超過預(yù)定閾值時,將空間-時間數(shù)據(jù)塊C (n+1)的頂點(diǎn)集合分割為兩個不相交的第一頂點(diǎn)集合和第二頂點(diǎn)集合,后續(xù)將關(guān)于第一頂點(diǎn)集合和第二頂點(diǎn)集合分別形成對應(yīng)的快照和日志,進(jìn)而形成各自的空間-時間數(shù)據(jù)塊。
[0018]圖數(shù)據(jù)管理方法還可以包括;在形成空間-時間數(shù)據(jù)塊時或空間-時間數(shù)據(jù)塊已形成后,重新確定各個頂點(diǎn)的數(shù)據(jù)段進(jìn)行物理存儲的順序,并按照所確定的順序存儲各個頂點(diǎn)的數(shù)據(jù)段。
[0019]圖數(shù)據(jù)管理方法還可以包括:對于新出現(xiàn)的不屬于任何已經(jīng)存在的頂點(diǎn)集合的頂點(diǎn),維持一最新的頂點(diǎn)集合,最新的頂點(diǎn)集合中的頂點(diǎn)不屬于任何空間-時間數(shù)據(jù)塊相關(guān)聯(lián)的頂點(diǎn)集合,將隨時間進(jìn)行新出現(xiàn)的頂點(diǎn)添加入該最新的頂點(diǎn)集合,并以日志形式存儲關(guān)于該最新頂點(diǎn)集合中各頂點(diǎn)的事件數(shù)據(jù),當(dāng)該日志數(shù)據(jù)大小超過預(yù)定閾值時,基于此時的最新頂點(diǎn)集合和相關(guān)聯(lián)的時間區(qū)間,形成空間-時間數(shù)據(jù)塊;以及將最新頂點(diǎn)集合清零,并接收后續(xù)出現(xiàn)的新頂點(diǎn)和相關(guān)聯(lián)的事件數(shù)據(jù)。
[0020]圖數(shù)據(jù)管理方法還可以包括:接收查詢,該查詢涉及給定頂點(diǎn)或給定頂點(diǎn)集合和涉及給定時刻或給定時間區(qū)間;基于該給定頂點(diǎn)或給定頂點(diǎn)集合和給定時刻或給定時間區(qū)間,查詢?nèi)謹(jǐn)?shù)據(jù)塊索引,定位到相關(guān)聯(lián)的空間-時間數(shù)據(jù)塊;對于定位到的相關(guān)聯(lián)的空間-時間數(shù)據(jù)塊的每個,查詢與該空間-時間數(shù)據(jù)塊相關(guān)聯(lián)的數(shù)據(jù)塊內(nèi)部索引,定位到與給定頂點(diǎn)或給定頂點(diǎn)集合相關(guān)聯(lián)的具體數(shù)據(jù)段;以及掃描該具體數(shù)據(jù)段,返回該具體數(shù)據(jù)段的查詢結(jié)果;以及合并各個查詢結(jié)果,并返回合并得到的查詢結(jié)果。
[0021]根據(jù)本發(fā)明的另一方面,提供了一種圖數(shù)據(jù)管理裝置,可以包括:事件攝入部件,配置為攝入新發(fā)生的事件,并發(fā)送至?xí)r序圖數(shù)據(jù)管理引擎;查詢引擎,配置為接收來自外部的查詢,并將該查詢發(fā)送至?xí)r序圖數(shù)據(jù)管理引擎,接收來自時序圖數(shù)據(jù)管理引擎的查詢結(jié)果,并輸出該查詢結(jié)果;以及時序圖數(shù)據(jù)管理引擎,以二維空間-時間數(shù)據(jù)塊C= (Vc, Tc)形式組織時序圖的數(shù)據(jù)并存儲在存儲設(shè)備上,一個維度是時間維度,另一個維度是頂點(diǎn)維度,數(shù)據(jù)塊C= (Vc, Tc)保存一個時間區(qū)間中與頂點(diǎn)集合Vc相關(guān)的數(shù)據(jù),所述數(shù)據(jù)塊C= (Vc, Tc)邏輯上包括在時刻S。處圖的快照以及在時間區(qū)間內(nèi)發(fā)生事件的日志,其中Vc是頂點(diǎn)集合,Tc指示時間區(qū)間,Tc = [s。,tj,S。表示該時間區(qū)間的起始時刻,t。表示該時間區(qū)間的結(jié)束時刻,在時刻Sc處圖的快照包括在時刻Sc處有效的事件的數(shù)據(jù)的集合。
[0022]根據(jù)本發(fā)明的另一方面,提供了一種時序圖的圖數(shù)據(jù)管理方法,圖由頂點(diǎn)和邊組成,該圖數(shù)據(jù)管理方法可以包括:以二維空間-時間數(shù)據(jù)塊C= (Vc, Tc)形式組織時序圖的數(shù)據(jù)并存儲在存儲設(shè)備上,一個維度是時間維度,另一個維度是頂點(diǎn)維度,數(shù)據(jù)塊C =(Vc, Tc)保存一個時間區(qū)間[\,tj中與頂點(diǎn)集合Vc相關(guān)的數(shù)據(jù),所述數(shù)據(jù)塊C= (Vc, Tc)邏輯上包括在時刻S。處圖的快照以及在時間區(qū)間內(nèi)發(fā)生事件的日志,其中Vc是頂點(diǎn)集合,Tc指示時間區(qū)間,Tc = [s。,tj,S。表示該時間區(qū)間的起始時刻,t。表示該時間區(qū)間的結(jié)束時刻,在時刻Sc處圖的快照包括在時刻Sc處有效的事件的數(shù)據(jù)的集合;將空間-時間數(shù)據(jù)塊分類為封印的空間-時間數(shù)據(jù)塊和未封印的空間-時間數(shù)據(jù)塊,對于基于同樣的頂點(diǎn)集合的封印的空間-時間數(shù)據(jù)塊和未封印的空間-時間數(shù)據(jù)塊,未封印的空間-時間數(shù)據(jù)塊時間上晚于封印的空間-時間數(shù)據(jù)塊,且保持開放狀態(tài)以等待接收關(guān)于該頂點(diǎn)集合中的頂點(diǎn)的任何新發(fā)生的事件,而封印的空間-時間數(shù)據(jù)塊已封閉不再接收新的事件;對于任一未封印的空間-時間數(shù)據(jù)塊,當(dāng)滿足預(yù)定的分割條件時,以滿足預(yù)定的分割條件的時刻作為分界點(diǎn),將該未封印的空間-時間數(shù)據(jù)塊轉(zhuǎn)變?yōu)樾碌姆庥〉目臻g-時間數(shù)據(jù)塊,該新的封印的空間-時間數(shù)據(jù)塊以該分界點(diǎn)作為結(jié)束時刻,創(chuàng)建新的未封印的空間-時間數(shù)據(jù)塊,該新的未封印的空間-時間數(shù)據(jù)塊以該分界點(diǎn)為開始時刻,該新的封印的空間-時間數(shù)據(jù)塊與該新的未封印的空間-時間數(shù)據(jù)塊具有相同的頂點(diǎn)集合;以及將未封印的空間-時間數(shù)據(jù)塊分類為普通的未封印的空間-時間數(shù)據(jù)塊和特殊的未封印的空間-時間數(shù)據(jù)塊,普通的未封印的空間-時間數(shù)據(jù)塊的頂點(diǎn)集合出現(xiàn)于封印的空間-時間數(shù)據(jù)塊的頂點(diǎn)集合,特殊的未封印的空間-時間數(shù)據(jù)塊的頂點(diǎn)集合中的頂點(diǎn)不曾出現(xiàn)于任何封印的空間-時間數(shù)據(jù)塊,在任何當(dāng)前時刻維持一個特殊的未封印的空間-時間數(shù)據(jù)塊,當(dāng)出現(xiàn)的事件涉及新頂點(diǎn)時,將該事件添加入該特殊的未封印的空間-時間數(shù)據(jù)塊,當(dāng)出現(xiàn)的事件涉及存在于普通的未封印的空間-時間數(shù)據(jù)塊的頂點(diǎn)集合中的頂點(diǎn)時,將該事件添加入該普通的未封印的空間-時間數(shù)據(jù)塊。
[0023]圖數(shù)據(jù)管理方法還可以包括:維持全局?jǐn)?shù)據(jù)塊索引和數(shù)據(jù)塊內(nèi)部索引,基于全局?jǐn)?shù)據(jù)塊索引,給定頂點(diǎn)ID和