Query Workload-based RDF Graph Fragmentation and Allocation

本文由學者PengPeng,LeiZou,Lei Chen和DongyanZhao於2015年在期刊《Computer Science》聯合發表
原文下載鏈接文末自取

主要概括:由於RDF數據高速增長,需要分佈式管理RDF數據。分佈式RDF數據設計需要將RDF數據劃分爲片段,再分配片段。分發設計=分段+分配。本文提出利用工作負載中查詢結構之間的內在相似性處理碎片化和分配,減少SPARQL查詢處理過程中交又匹配的數量和通信成本。基於所選的頻繁訪問模式,使用垂直和水平分段劃分RDF圖,同時滿足各種查詢處理目標。垂直分段提高吞吐量,水平分段提高性能。分割後再將碎片分佈到各站點。

將RDF數據集看爲圖,主語和賓語通過謂語連接。SPARQL是訪問RDF存儲庫的查詢語言。回答SPARQL查詢Q=在RDF圖G上找到查詢圖Q的子圖匹配。在分佈式數據庫設計中,存在兩個問題:

  • 數據碎片和分配:先將RDF圖分成片段,再分配在站點之間。分佈式系統的數據分段和分配過程的要點是在分佈式查詢評估期間降低不同分段之間的通信成本,爲了通信成本最小化,大多數圖碎片策略要使全局目標最大化。

  • 評估SPARQL查詢:子圖匹配計算的通信成本不僅取決RDF圖,還取決查詢圖。最小化通信成本與最大化全局目標之間無直接關係。本文的基於局部模式的分割策略可降低子圖匹配計算的通信成本。

解決方案:

  • 頻繁訪問模式選擇:對於頻繁訪問模式,通過在RDF圖中收集其所有匹配項構建片段。如果 SPARQL查詢滿足頻繁訪問模式,則可減少通信成本,提高查詢性能。如果簡單選擇所有的頻繁訪問模式作爲隱式模式,數據複製會消耗大量空間成本。
  • 垂直和水平碎片:基於所選的頻繁訪問模式,設計了垂直和水平分段,兩種策略適用於不同的查詢處理目標。垂直碎片策略改善整個查詢,並要求將一種頻繁訪問模式所涉及的所有結構都放置在同一片段。水平碎片策略將一種頻繁訪問模式所涉及的結構分佈在不同的碎片間,以最大化查詢評估的並行性,減少單個查詢的查詢響應時間。
  • 查詢分解:查詢分解取決於碎片,在RDBMS和XML傳統的垂直和水平分段中,因爲不同的分段之間無重疊,所以查詢分解唯一。而在RDF圖的碎片化策略中由於數據複製,可能一個查詢的會有多個分解結果。

利用如下定義將RDF數據表示爲圖:
在這裏插入圖片描述
本文提出高效的分佈式SPARQL查詢,重點是RDF存儲庫的“數據碎片和分配”, 如下是兩個重點的形式化:
在這裏插入圖片描述
允許不同片段間重疊,給定碎片F,然後在不同的站點間分配碎片,即分配
在這裏插入圖片描述
給定RDF圖G,查詢工作負載Q和由站點S組成的分佈式系統。首先將G分解爲一個碎片F,然後找到F對S的分配A。通過對SPARQL査詢負載驅動的數據碎片化和分配問題的實驗研究,觀察到某些RDF屬性只有很少的訪問頻率,整個RDF存儲庫=“熱圖”+“冷圖”,如下定義。
在這裏插入圖片描述
在這裏插入圖片描述
RDF圖G=熱圖H+冷圖C,其中H由所有熱邊組成,C由所有冷邊緣組成。將冷圖看成“黑塊”,冷圖與熱圖不重疊,冷圖和熱圖不相接,如圖是系統架構:
在這裏插入圖片描述
離線階段:挖掘工作負載中的頻繁訪問模式,每個頻繁訪問模式對應單個或多個片段。從一個頻繁訪問模式的所有匹配中生成一個片段,讓許多查詢在沒有重疊片段連接下得到有效回答。
在線階段:將一個查詢分解爲不同片段上的幾個子査詢,並生成有效的執行計劃,再提出分解的成本模型,最後,執行計劃並返回查詢的匹配。

頻率訪問模式
查詢通常包含在先前發出的查詢中的某些模式,所以挖掘一些具有較高訪問頻率的模式並將這些模式用作碎片單元。然後,如果查詢Q分解爲與頻繁訪問模式同構的子圖,則可回答Q並避免跨多個片段進行某些聯接。在挖掘頻繁訪問模式之前,首先規範化工作負載中的查詢圖,以避免過度擬合。對於每個SPARQL查詢,刪除主語和賓語上的所有常量(字符串和URIs),並替換爲變量。過濾器表達式也被刪除。如此就可從工作負載中提取SPARQL查詢的一般表示形式。要挖掘高訪問頻率的模式, 需要首先計算工作負載中的查詢數,其中模式p是子圖。定義頻繁訪問模式使用值記錄頻繁訪問模式的訪問頻率,頻繁訪問模式使用值定義如下:
在這裏插入圖片描述
給定工作負載Q={Q1,Q2,…,Qq}和模式p,定義訪問頻率acc§作爲Q中的查詢數,其中模式p是子圖:
在這裏插入圖片描述
如果模式p的訪問頻率不小於閾值minSup,則p是頻繁訪問模式。

頻繁訪問模式選擇
由於空間成本高,無需從所有頻繁訪問模式中生成片段,僅選擇所有頻繁訪問模式的一個子集來生成片段即可。要選擇所有頻繁訪問模式的子集,需考慮兩個因素:

  • (命中整個工作負載)應該選擇頻繁訪問模式儘可能地滿足查詢工作負載。爲了當選擇一個頻繁訪問模式來生成一個片段時,所有與該模式同構的查詢都可以被直接回答,提高效率。
  • (滿足存儲約束)系統的總存儲量有限,選擇太多頻繁訪問模式方式不可取。

命中整個工作負載
如果從由頻繁訪問模式的匹配產生的圖中生成一個片段,那麼使用該片段可以加速評估包含該模式的所有查詢。頻繁訪問模式命中的查詢越多,查詢處理期間獲得的收益越大。選擇頻繁訪問模式以生成其相應片段的優勢應該根據頻繁訪問模式命中的查詢數量來定義。如果工作負載中的同一組查詢包含兩個相似的頻繁訪問模式,只取其一。在相同數量查詢所包含的類似頻繁訪問模式中,只實現最大的頻繁訪問模式。大模式會分解成較少子查詢,避免了分佈式連接,提高了效率。選擇頻繁訪問模式的標準定義如下:
定義8。(大小增加的收益)鑑於頻繁訪問模式p,選擇p來打入查詢Q的好處Benefit(p,Q)表示如下。
工作負載中的查詢可能包含多個選定的頻繁訪問模式。如果評估查詢,則該查詢分解爲多個子查詢集。每組子查詢都映射一個執行計劃。最終只選擇一個執行計劃評估查詢,所以只限制工作負載中的一次查詢就有利益,利益定義如下:
在這裏插入圖片描述
滿足存儲約束
由於系統總存儲量有限,所以選擇太多頻繁訪問模式方式不可取。頻繁訪問模式的選擇需滿足約束條件。 當所有片段大於存儲限制時,則無法選擇任何更頻繁的訪問模式。系統的存儲容量歸一化爲SC,約束爲:
在這裏插入圖片描述
優化目標是在存儲約束下最大化收益,利益函數(定義9)是下面的子模塊:
在這裏插入圖片描述
證明過程此處省略。

解決方案
定理1證明頻繁訪問模式選擇是NP完全問題。本文提出了算法1貪婪算法。
爲保證分佈式RDF數據碎片的數據完整性,每個熱邊至少應包含在一個片段中。(3-6行)爲每個頻繁屬性初始化一個邊緣的模式,並計算出相應的片段。 貪婪選擇頻繁訪問模式的階段(7-14行),因爲選擇最優的頻繁訪問模式集的問題是最大化子模式的問題,所以在定理1中的揹包約束下,直接應用貪婪算法迭代選擇頻繁訪問模式。
在這裏插入圖片描述
在這裏插入圖片描述
垂直碎片
垂直分段利用SPARQL查詢的局部性改善查詢響應時間和吞吐量。給定頻繁訪問模式p,然後將其轉換爲SPARQL查詢,生成RDF圖的垂直片段。 從選擇的頻繁訪問模式生成的所有垂直碎片構造一個垂直碎片。給定頻繁訪問模式P,在RDF圖G上定義其相應垂直碎片,如下所示:
在這裏插入圖片描述
水平碎片
水平碎片利用站點集羣的並行性減少査詢響應時間,下面擴展了爲關係系統開發的簡單謂詞和minterm謂詞的概念,便於水平劃分RDF圖。

  • 結構minterm謂詞:首先,定義結構簡單謂詞,每個結構簡單謂詞對應具有單個(不等式)的頻繁訪問模式。然後,將結構minterm謂詞定義爲相同頻繁訪問模式的結構簡單謂詞的連接。通過枚舉所有可能的結構簡單謂詞組合獲得所有的結構minterm謂詞。每個結構簡單謂詞可爲自然或否定形式構成結構minterm謂詞,還可定義結構minterm謂詞的使用值和訪問頻率,用於記錄結構minterm謂詞的訪問頻率,並且刪除較小的訪問頻率的minterm謂詞。(具體闡述內容需原論文)

分配
對RDF圖分片後,將所有分段分配在幾個站點上。實際會同時訪問某些頻繁訪問模式或結構minterm謂詞,所以它們的相應片段常放在一個站點,避免跨片段連接。 定義片段親和度來測量兩個頻繁訪問模式或結構minterm謂詞之間的一致性,如下:
在這裏插入圖片描述
基於片段關聯度測量,可顯示片段之間的緊密關係。如果兩個片段的關聯度較大,說明同一查詢涉及兩個片段,如此相關的片段應將它們放在一起減少跨站點連接的數量。

分配算法的目的是搜索具有最高密度的AG的m個子圖。由於問題是完全NP,所以提出算法2圖聚類算法的變體,在每個步驟中選擇合併AG中兩個頂點的局部最優選擇。此外,算法2可找出AG的最優聚類結果。
在這裏插入圖片描述
分佈式查詢處理

  • 數據字典:碎片和分配後,其結果由系統存儲維護。該信息在分佈式查詢處理過程中十分必要。信息存儲在數據字典中,存儲在分段和分配時生成的全局統計文件。數據字典=片段定義+大小+站點映射+訪問頻率。使用哈希表實現用字典確定查詢的相關頻繁訪問模式。首先使用DFS編碼將頻繁訪問模式轉換爲序列。然後,使用哈希表定位頻繁訪問模式並檢索其相應片段的統計信息。
  • 查詢分解:當輸入查詢Q時,首先使用數據字典確定查詢中涉及的片段,並將查詢分解爲片段上的某些子查詢:
    在這裏插入圖片描述
    將查詢分解爲與頻繁訪問模式同構的子查詢,如果查詢涉及的不頻繁屬性無法分解爲與任何頻繁訪問模式同構的子查詢,則該查詢的每個僅包含不頻繁屬性的連接子圖對應於子查詢,有效分解定義如下:
    在這裏插入圖片描述
    至少存在一個有效的分解,可能的分解是單個邊緣的所有子查詢的分解。選擇一個邊緣的所有頻繁訪問模式,故單個邊緣的所有子查詢的分解都有效。 文中的成本模型驅動的選擇方法,說明最佳的有效分解是成本最小的有效分解,提出了查詢分解算法3。由於實際中的SPARQL查詢圖通常包含10個或更少的邊,所以使用暴力法就能枚舉所有可能的分解,並使用最小的成本找到分解。
    在這裏插入圖片描述
  • 查詢優化和執行:分解查詢後,下一步是爲查詢找到一個接近最優的執行計劃。擴展System-R算法得到算法4,找到了分佈式SPARQL查詢的最佳執行計劃。首先,生成n-1個子查詢的最佳執行;然後,將n-1個子查詢的匹配項與第n個子查詢的匹配項結合;最後,每個子查詢在相應站點中並行執行。生成所有子查詢的匹配項後,根據最佳執行計劃連接匹配項。
    在這裏插入圖片描述
    餘下部分是實驗評估內容,不再贅述。

原文下載鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章