語或者主語賓語已知的三元組進(jìn)行查詢。索引Is '、Io '、Iso '、Ios '用于處理主語共享 變量、賓語共享變量和主語賓語共享變量的join查詢請(qǐng)求。位圖索引存儲(chǔ)框架Td如表3所 不。
[0083] 表3位圖索引存儲(chǔ)框架Td
[0084]
[0085] 3、算法實(shí)現(xiàn)
[0086] 對(duì)單個(gè)Triple Pattern的查詢算法ASI_TP根據(jù)三元組中已知項(xiàng)查詢未知項(xiàng),如下 所示;
[0089]對(duì)join查詢的算法AJI_TP能夠在兩個(gè)三元組各自的主語、賓語、主語和謂語、謂語 和賓語、主語和謂語分別相同時(shí)能夠快速匹配,如下所示;
[0091] 以及對(duì)BGP查詢的算法Match_BGP,如下所示:
[0094] 其中ASI_TP和AJI_TP為對(duì)BGP查詢時(shí)所調(diào)用的過程算法。Match_BGP算法將BGP中 所有的trpIe pattern進(jìn)行預(yù)處理,即重新排序,具體步驟如下:
[0095] 1、確立選擇度高的trple pattern排序靠前,trple pattern選擇度由高到低的順 序如下:
[0096] (I)Subject 非變量
[0097] (2)Sub ject、Predicate 和 Ob ject 都非變量且謂語非 rdf: type
[0098] (3) Sub ject為變量,Predi cate和Ob ject 都非變量且謂語為rdf: type
[0099] (4) Sub ject和Predicate為變量,Ob ject非變量
[0100] (5) Sub ject和Ob ject為變量,Predi cate 非變量且謂語非 rdf: type
[01011 (6)Subject 和Object 為變量,Predicate 為rdf :type
[0102] (7)Subject、0b ject 和 Predicate 都為變量。
[0103] 2、對(duì)排序后的RDF三元組集bgp中第一個(gè)trple pattern調(diào)用函數(shù)ASI_TP算法查 詢,所返回變量存儲(chǔ)在vs_。并且根據(jù)vs_得出結(jié)果集S。如果結(jié)果集S為空,則直接返回空 集。
[0104] 3、取下一個(gè)trple pattern,查詢之前先判斷該trple pattern與之前的trple pattern是否有共享變量,如果有共享變量,則調(diào)用算法AJI_TP,記錄當(dāng)前trple pattern處 理的結(jié)果集Stpi,合并當(dāng)前結(jié)果集與vs_得出的結(jié)果集。
[0105] 4、重復(fù)第三步驟,直到所有結(jié)果集都查詢結(jié)束。
[01 06] 5、替換結(jié)果集S中的位向量,根據(jù)位向量得出具體的RDF三元組。返回查詢的結(jié)果 集。
[0107] 實(shí)驗(yàn)驗(yàn)證
[0108] 1、空間占用分析
[0109] 本文局部索引技術(shù)增加了三個(gè)新索引來加速查詢效率,所以存儲(chǔ)所占用空間多三 個(gè)索引所占存儲(chǔ)空間。
[0110] 一次工作流中產(chǎn)生400個(gè)RDF三元組中相同的主語、謂語或者賓語的三元組會(huì)多次 出現(xiàn),索引Is、Ip和Io并不用對(duì)每一個(gè)三元組都建立索引項(xiàng)。含有相同元素的三元組,采用 位圖向量的bit位來標(biāo)記即可。比如相同主語只需要在位圖索引中對(duì)該主語首次建立的位 圖向量中對(duì)應(yīng)位置1即可。該位置表示其在數(shù)據(jù)庫中存儲(chǔ)的邏輯位置。
[0111] 對(duì)于工作流記錄的起源數(shù)據(jù)中相同主語謂語、謂語賓語和主語賓語的三元組重復(fù) 項(xiàng)同樣很多,那么對(duì)于重復(fù)項(xiàng)只需在首次建立的向量中不同位置設(shè)置"Γ即可,存儲(chǔ)時(shí)只需 存儲(chǔ)一個(gè)位圖索引。因此,本文在原有的6個(gè)索引的基礎(chǔ)上添加三個(gè)索引項(xiàng),索引的數(shù)量增 加了50%,而索引存儲(chǔ)空間僅僅增加了25%左右,如圖5所示。
[0112] 2、查詢性能分析
[0113]本發(fā)明針對(duì)德克薩斯大學(xué)起源數(shù)據(jù)標(biāo)準(zhǔn)數(shù)據(jù)集分別測(cè)試了 11條UTPB查詢語句來 測(cè)試本發(fā)明所設(shè)計(jì)索引結(jié)構(gòu)的查詢性能。
[0114] 實(shí)驗(yàn)在Hadoop集群環(huán)境下,對(duì)D1、D2、D3、D4、D5五個(gè)數(shù)據(jù)集想分別進(jìn)行了 11條語句 的查詢測(cè)試。每一個(gè)查詢?cè)谖鍌€(gè)數(shù)據(jù)集上各運(yùn)行5次取相應(yīng)時(shí)間的平均值,查詢性能分析如 圖6所示。
[0115]通過實(shí)例執(zhí)行結(jié)果分析,證明了本發(fā)明的可行性也驗(yàn)證了所提出的雙層索引結(jié)構(gòu) 在應(yīng)對(duì)海量數(shù)據(jù)起源存儲(chǔ)時(shí),隨著數(shù)據(jù)量的增加,其存儲(chǔ)和查詢性相對(duì)優(yōu)越,客戶查詢請(qǐng)求 響應(yīng)及時(shí)。面對(duì)復(fù)雜的查詢請(qǐng)求與海量的數(shù)據(jù)性能依然很好。
【主權(quán)項(xiàng)】
1. 一種基于雙層索引結(jié)構(gòu)的起源圖查詢方法,其特征在于,包含以下步驟:首先,面向 起源圖查詢,提出一種雙層索引結(jié)構(gòu);其次,設(shè)計(jì)基于詞典表全局索引,表中記錄起源數(shù)據(jù) 與數(shù)據(jù)之間匹配關(guān)系以及起源圖ID;然后,提出基于位圖局部索引,依據(jù)起源圖RDF查詢方 式,提出了滿足Triple Pattern查詢的索引和三種join查詢方式,并且基于索引設(shè)計(jì)了相 應(yīng)的查詢算法。2. 根據(jù)權(quán)利要求1所述的基于雙層索引結(jié)構(gòu)的起源圖查詢方法,其特征在于,面向起源 圖查詢的雙層索引結(jié)構(gòu)包括基于詞典表全局索引和基于位圖局部索引;全局索引查詢起源 圖所存儲(chǔ)的服務(wù)器節(jié)點(diǎn),局部索引對(duì)全局索引查詢到的服務(wù)器節(jié)點(diǎn)細(xì)化查詢,進(jìn)而查詢到 所需的起源數(shù)據(jù);全局索引分布在云環(huán)境下每一個(gè)節(jié)點(diǎn)上,當(dāng)用戶請(qǐng)求到達(dá)時(shí),只需參照本 地服務(wù)器的全局索引結(jié)構(gòu)即能得出所要查詢起源圖所在節(jié)點(diǎn)位置;局部索引是只建立在本 地服務(wù)器所存儲(chǔ)的起源數(shù)據(jù)的索引,每一個(gè)節(jié)點(diǎn)之間的局部索引并沒有依賴關(guān)系;3. 根據(jù)權(quán)利要求1所述的基于雙層索引結(jié)構(gòu)的起源圖查詢方法,其特征在于,基于詞典 表的全局索引及全局查詢算法為: 首先給出詞典表結(jié)構(gòu)設(shè)計(jì),在此基礎(chǔ)上,完成基于全局索引的查詢流程; 1) 、詞典表結(jié)構(gòu)設(shè)計(jì) 根據(jù)數(shù)據(jù)起源特點(diǎn),從兩方面設(shè)計(jì)詞典表HCPTable;首先,存儲(chǔ)起源圖名稱和對(duì)應(yīng)數(shù)據(jù) 項(xiàng);數(shù)據(jù)項(xiàng)就是起源所描述的數(shù)據(jù),將一次工作流中的所有數(shù)據(jù)都對(duì)應(yīng)一個(gè)起源圖,粗粒度 的描述起源與數(shù)據(jù)之間的關(guān)系;其次,存儲(chǔ)起源圖名稱與對(duì)應(yīng)ID;每一次工作流的執(zhí)行則會(huì) 產(chǎn)生一個(gè)數(shù)據(jù)起源圖,起源ID則在存儲(chǔ)過程中依據(jù)Hash(key)映射產(chǎn)生;全局索引中起源圖 ID為一致性哈希索引算法的輸入項(xiàng),根據(jù)起源ID可以快速計(jì)算出起源圖所存儲(chǔ)服務(wù)器節(jié) 占. 2) 、基于全局索引的查詢流程 根據(jù)HCPTab 1 e中查詢起源圖ID從根節(jié)點(diǎn)開始遍歷到葉子節(jié)點(diǎn),根據(jù)葉子節(jié)點(diǎn)得出起源 圖存儲(chǔ)服務(wù)器;全局索引查詢流程如下: (1) 查找詞典表得到起源圖ID (2) 查找滿足要求的子節(jié)點(diǎn) (3) 計(jì)算輸出此節(jié)點(diǎn)編號(hào)。4. 根據(jù)權(quán)利要求1所述的基于雙層索引結(jié)構(gòu)的起源圖查詢方法,其特征在于,基于位圖 的局部索引及局部查詢算法為: 起源圖查詢包含兩部分:單個(gè)Triple Pattern查詢和join查詢; (1) 單個(gè)Triple Pattern查詢 選擇索引18、1?、1〇、1叩、1?〇、18〇對(duì)主語、謂語、賓語、主語謂語、謂語賓語、主語賓語進(jìn) 行單個(gè)Triple Pattern的查詢; (2) join 查詢 選擇索引I s'、1〇'、I so '用于處理主語共享變量、賓語共享變量和主語賓語共享變量進(jìn) 行join查詢。
【專利摘要】本發(fā)明公開一種基于雙層索引結(jié)構(gòu)的起源圖查詢方法,包含以下步驟:首先,面向起源圖查詢,提出一種雙層索引結(jié)構(gòu);其次,設(shè)計(jì)基于詞典表全局索引,表中記錄起源數(shù)據(jù)與數(shù)據(jù)之間匹配關(guān)系以及起源圖ID;然后,提出基于位圖局部索引,依據(jù)起源圖RDF查詢方式,提出了滿足Triple?Pattern查詢的索引和三種join查詢方式,并且基于索引設(shè)計(jì)了相應(yīng)的查詢算法。最后,通過測(cè)試,驗(yàn)證了基于雙層索引結(jié)構(gòu)的起源圖查詢方法的可行性和有效性。
【IPC分類】G06F17/30
【公開號(hào)】CN105550332
【申請(qǐng)?zhí)枴緾N201510969332
【發(fā)明人】許國艷, 羅章璇, 宋健, 平萍
【申請(qǐng)人】河海大學(xué)
【公開日】2016年5月4日
【申請(qǐng)日】2015年12月21日