論文導讀 | 最小屬性割RDF資料劃分

qing_yun發表於2022-04-22

本文涉及分散式系統中的資料劃分,特別是涉及到含有屬性的圖資料劃分,更為具體地講,涉及到分散式RDF系統的資料劃分。本文已經被ICDE 2022接收。

01、RDF 資料劃分

RDF(Resource Description Framework)是一種由W3C組織提出的資料模型,其用三元組<主語,謂語,賓語>的基本形式表示web資源的屬性、關係,目前在知識圖譜、社交網路分析等領域均有應用。RDF資料模型表示形式靈活,不僅可以表示成關聯式資料庫中的表,也可以表示成圖模型。當RDF表示成圖時,一個三元組代表著一條由主體指向客體的有向邊及其連線的兩個頂點,主體、客體是邊的兩個頂點,謂語則是有向邊上的標籤。W3C在提出RDF的同時,也提出了一種標準查詢語言SPARQL(Simple Protocol And RDF Query Language)。SPARQL與RDF一樣,也能表示成圖模型。查詢圖中的邊稱為三元組模式,三元組模式中的主語、謂語、賓語均可以是變數或常量。因為SPARQL與RDF都可以表示成圖模型,所以SPARQL查詢可以轉換成子圖匹配問題。

隨著網際網路的快速發展,RDF資料集的規模不斷增大,傳統的單機系統已經無法有效地處理海量RDF資料,因此出現了分散式RDF系統。在分散式系統中,資料劃分是一個最基本的過程。具體而言,即將RDF資料圖G分成一組子圖{F1,F2,…,Fk},每個子圖稱為分割槽,分佈在不同的機器中。目前分散式RDF系統中使用較多的資料劃分方法是按頂點劃分,即將每個頂點劃分到不同分割槽中,例如常見的雜湊劃分。在該類方法中,一些邊會在分割槽之間被“分割”,即邊的兩個頂點被劃分到不同的分割槽中。為了保證圖的完整性,這些被分割的邊會重複儲存在兩個分割槽中,稱為一跳複製。如果一條邊的兩個頂點在同一個分割槽內,則稱為內部邊;否則稱為跨越邊。如果一個屬性不存在跨越邊,則稱該屬性為內部屬性,所有內部屬性集合記為Lin。如果一個屬性至少存在一條跨越邊,則稱該屬性為跨越屬性,即至少有一條跨越邊的屬性為該屬性,所有跨越屬性集合記為Lcross。顯然,Lin=L-Lcross。

查詢的匹配型別與邊的型別一樣,也可以分成兩類:內部匹配,匹配結果只包含在一個分割槽內;跨越匹配,匹配結果包含在多個分割槽內。當待執行的查詢只有內部匹配時,則只需要在每個分割槽內獨立執行即可。對於含有跨越匹配的查詢,現有的方法大多將查詢分解成一組星形查詢,然後在每個分割槽中獨立執行星形查詢,最後執行分割槽間連線得到最終結果。但是分割槽間連線會涉及到資料通訊和額外計算的開銷,對查詢效能影響較大。並且,在傳統的按頂點劃分的方法中,可獨立執行的查詢只能是星形,限制較大,在處理一般的查詢時,通常會進行分散式連線,因此查詢效率並不高。

02、最小屬性割

現有的分散式RDF系統只根據查詢圖的結構來判斷查詢是否可以獨立執行,只有當查詢圖是星形時才被認為可以獨立執行。本文在考慮圖資料中邊的屬性之後,擴充套件了可獨立執行的查詢型別,而不僅僅侷限於星形查詢。本文的目的之一在於提供一種基於最小屬性割的圖資料劃分方法,該方法能夠減少跨越屬性的數量,從而避免分割槽間的連線操作,降低資料通訊時間。本文的目的之二在於提供一種查詢分解方法,該方法能夠將不可以獨立執行的原始查詢分解成一組可以獨立執行的子查詢,從而充分利用最小屬性割資料劃分的優勢,提升查詢效率。

最小屬性割分割槽定義:給定一個RDF資料圖G和一個正整數k,G的最小屬性分割槽{F1,F2,…,Fk}需要滿足:(1)跨越屬性的數量|Lcross|最小;(2)每個分割槽中頂點數量不會超過(1+ε)×|V|/k,其中ε是使用者自定義的最大的不均衡比例,k是分割槽數量。

因為Lcross=L-Lin,所以最小屬性割等價於最大化Lin的大小。基於此,本文提出求解最小屬性割的方法流程如下:

步驟1:讀取原始RDF資料圖G,並將邊屬性儲存到集合L中;

步驟2:遍歷集合L,計算出每個屬性p對應的弱連通元件分量WCC(G{p})以及對應的代價Cost({p});

步驟3:儘可能從屬性集合L中選擇更多的內部屬性Lin。將每個內部屬性Lin中對應的弱連通元件分量作為一個超點,得到資料圖的粗化圖;

步驟4:對粗化圖中的超點使用頂點分割槽演算法進行劃分,在劃分之時確保每個分割槽中的頂點數量不超過(1+ε)×|V|/k。其中ε是使用者自定義的、最大的不均衡比例,k是分割槽數量。

步驟5:將步驟4中劃分到同一個分割槽的超點集合反粗化成最終的一個分割槽,即將超點集合中包含的原始資料點劃分為原始資料圖中的一個分割槽。

圖1給出了一個最小屬性割RDF資料劃分的示例。原始資料圖中有12個頂點、6個邊屬性,當經過粗化的處理後,會選擇出內部屬性Lin={starring, residence, producer, spouse, foundingDate}。內部屬性的邊即為圖1中加粗的邊,這些邊形成兩個弱連通分量。在粗化圖中,這兩個弱連通分量各自形成一個超點,並且超點之間由跨越屬性birthPlace的邊連線。如果分割槽數量為2,則原始資料圖會被圖2中的虛線分割成兩個分割槽,從而得到最終的最小屬性割劃分結果。

圖1 最小屬性割劃分示例

在查詢處理階段,本文首先將待處理的SPARQL查詢分解成一組可以獨立執行的子查詢。在真實的SPARQL查詢任務中,查詢很可能是不可以獨立執行的。為了能夠充分利用最小屬性割資料劃分的優勢,減少分割槽間的連線,還需要將原始查詢分解成一組可以獨立執行的子查詢。具體而言,本文方法如下:

圖片2 查詢分解示例

03、實驗結果

本文在多個真實和人造資料集上進行了實驗。所用的實驗資料集如下圖所示。

圖3. 實驗資料集

本文所提出最小屬性割方法可以提升獨立執行的查詢的比例,圖4給出了不同資料集上可獨立執行查詢(Independently Executable Query,簡寫IEQ)的比例,顯然最小屬性割方法導致的可獨立執行查詢比例最高。

圖4. 不同資料集上可獨立執行查詢比例

由於可獨立執行查詢比例比較高,所以LUBM、YAGO2和Bio2RDF基準查詢的最小屬性割方法所致的分散式執行效能也顯著高於現有其他劃分方法,如圖5所示。

圖5. LUBM、YAGO2和Bio2RDF基準查詢的效能對比

類似地,在WatDiv、DBpedia和LGD的查詢日誌上,本文所提的最小屬性割方法的分散式執行效能也顯著高於現有其他劃分方法,如圖6所示。

圖6. WatDiv、DBpedia和LGD查詢日誌的效能對比

來自 “ 湖大圖譜研究 ”, 原文作者:彭鵬;原文連結:https://mp.weixin.qq.com/s/s0rrvn07k1wr_5DUcDgfEA,如有侵權,請聯絡管理員刪除。

相關文章