資源描述框架分布式引擎及增量式更新方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及語(yǔ)義網(wǎng)數(shù)據(jù)庫(kù)檢索技術(shù),尤其涉及一種資源描述框架分布式引擎及增量式更新方法。
【背景技術(shù)】
[0002]語(yǔ)義網(wǎng)(Semantic Web)通過(guò)給萬(wàn)維網(wǎng)上的文檔,如超級(jí)文本標(biāo)記語(yǔ)言(HyperTextMarkup Language,HTML)添加能夠被計(jì)算機(jī)所理解的語(yǔ)義(Meta data),從而使整個(gè)互聯(lián)網(wǎng)成為一個(gè)通用的信息交換媒介。資源描述框架(Resource Descript1n Framework,RDF)是描述萬(wàn)維網(wǎng)資源的標(biāo)準(zhǔn)模型。
[0003]基于RDF數(shù)據(jù)進(jìn)行語(yǔ)義網(wǎng)的研究過(guò)程中,通過(guò)搜索引擎,如分布式引擎TriAD對(duì)RDF數(shù)據(jù)進(jìn)行存儲(chǔ)和查詢等。具體的,分布式搜索引擎TriAD采用關(guān)系型存儲(chǔ)模型進(jìn)行數(shù)據(jù)存儲(chǔ),對(duì)RDF數(shù)據(jù)模型進(jìn)行優(yōu)化,從而有自己的圖數(shù)據(jù)剪枝、查詢語(yǔ)言和數(shù)據(jù)獲取協(xié)議(SimpleProtocol and RDF Query Language,SPARQL)語(yǔ)句預(yù)處理機(jī)制,具有較高的查詢效率。
[0004]然而,分布式引擎TriAD不支持動(dòng)態(tài)數(shù)據(jù)源支持、并發(fā)請(qǐng)求處理、數(shù)據(jù)持久化策略等功能,無(wú)法滿足多樣化的RDF數(shù)據(jù)查詢需求。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種資源描述框架分布式引擎及增量式更新方法,提供一種支持RDF數(shù)據(jù)查詢的同時(shí),支持?jǐn)?shù)據(jù)通過(guò)增量式方式更新到及數(shù)據(jù)持久化功能的資源描述框架分布式引擎,使其能夠支持動(dòng)態(tài)數(shù)據(jù)源。
[0006]第一個(gè)方面,本發(fā)明實(shí)施例提供一種資源描述框架分布式引擎,所述資源描述框架RDF分布式引擎部署在計(jì)算機(jī)集群上,所述計(jì)算機(jī)集群包括一個(gè)主節(jié)點(diǎn)及N個(gè)從節(jié)點(diǎn),N21且為整數(shù),所述主節(jié)點(diǎn)包括:查詢服務(wù)器、查詢解析器、處理器、備份管理器,其中,
[0007]所述查詢服務(wù)器,用于接收查詢語(yǔ)言和數(shù)據(jù)獲取協(xié)議SPARQL語(yǔ)句,并將所述SPARQL語(yǔ)句發(fā)送至所述查詢解析器;
[0008]所述查詢解析器,用于對(duì)所述SPARQL語(yǔ)句進(jìn)行解析,以將所述SPARQL語(yǔ)句轉(zhuǎn)換為查詢子圖;
[0009]所述處理器,用于根據(jù)所述查詢子圖生成操作日志及執(zhí)行計(jì)劃,根據(jù)哈希映射規(guī)則,從所述N個(gè)從節(jié)點(diǎn)中確定所述SPARQL語(yǔ)句中RDF數(shù)據(jù)的對(duì)應(yīng)從節(jié)點(diǎn),并將所述SPARQL語(yǔ)句、所述執(zhí)行計(jì)劃發(fā)送及所述操作日志發(fā)送至所述備份管理器;
[0010]所述備份管理器,用于根據(jù)所述操作日志,將所述SPARQL語(yǔ)句與所述執(zhí)行計(jì)劃發(fā)送至所述對(duì)應(yīng)節(jié)點(diǎn),并對(duì)所述對(duì)應(yīng)從節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行備份;
[0011]所述對(duì)應(yīng)從節(jié)點(diǎn)中的每一個(gè)從節(jié)點(diǎn)上設(shè)置內(nèi)存,所述對(duì)應(yīng)從節(jié)點(diǎn)用于根據(jù)所述執(zhí)行計(jì)劃,更新所述內(nèi)存。
[0012]可選的,所述處理器根據(jù)哈希映射規(guī)則,從所述N個(gè)從節(jié)點(diǎn)中確定所述SPARQL語(yǔ)句中RDF數(shù)據(jù)的對(duì)應(yīng)從節(jié)點(diǎn),包括:
[0013]所述處理器根據(jù)所述RDF數(shù)據(jù)確定出三元組中的三個(gè)元素,對(duì)所述三元組中的三個(gè)元素進(jìn)行排列組合,形成六種不同的三元組格式,所述六種不同的三元組格式對(duì)應(yīng)六個(gè)索引,根據(jù)所述六個(gè)索引,從所述N個(gè)從節(jié)點(diǎn)中為所述RDF數(shù)據(jù)確定出1個(gè)或2個(gè)從節(jié)點(diǎn),作為所述對(duì)應(yīng)從節(jié)點(diǎn),其中,所述三個(gè)元素為主體S,謂詞P,客體0,所述六個(gè)索引分別為SP0,0PS,S0P,PS0,0SP,P0S;
[0014]所述對(duì)應(yīng)從節(jié)點(diǎn)具體用于將所述六個(gè)索引對(duì)應(yīng)的數(shù)據(jù)更新到所述內(nèi)存中。
[0015]可選的,所述對(duì)應(yīng)節(jié)點(diǎn)中的每一個(gè)從節(jié)點(diǎn)還設(shè)置持久化存儲(chǔ)介質(zhì),
[0016]所述管理備份單元還用于將已經(jīng)更新到所述內(nèi)存中的所述六個(gè)索引對(duì)應(yīng)的數(shù)據(jù),其中兩個(gè)索引對(duì)應(yīng)的數(shù)據(jù)通過(guò)增量式方式更新到所述持久化存儲(chǔ)介質(zhì),其中,所述兩個(gè)索引為所述SP0與所述0PS。
[0017]可選的,所述對(duì)應(yīng)節(jié)點(diǎn)中的每一個(gè)從節(jié)點(diǎn)還具有一個(gè)持久化存儲(chǔ)介質(zhì),
[0018]所述處理器確定出所述操作日志對(duì)應(yīng)的更新數(shù)據(jù)未通過(guò)增量式方式更新到所述對(duì)應(yīng)節(jié)點(diǎn)的持久化存儲(chǔ)介質(zhì),則發(fā)送更新命令與所述更新數(shù)據(jù)至所述對(duì)應(yīng)從節(jié)點(diǎn);
[0019]所述對(duì)應(yīng)從節(jié)點(diǎn)根據(jù)所述更新命令,將所述更新數(shù)據(jù)更新至所述持久化存儲(chǔ)介質(zhì)。
[0020]可選的,所述對(duì)應(yīng)從節(jié)點(diǎn)為編號(hào)為{Smod N}的從節(jié)點(diǎn)與所述編號(hào)為{0 mod N}的從節(jié)點(diǎn),其中,mod為求余操作,當(dāng)所述S mod N與所述0 mod N相同時(shí),所述SPARQL語(yǔ)句的對(duì)應(yīng)從節(jié)點(diǎn)為1個(gè)。
[0021 ] 可選的,所述SPARQL語(yǔ)句包括:插入語(yǔ)句,和/或,刪除語(yǔ)句。
[0022]可選的,所述主節(jié)點(diǎn)與所述N個(gè)從節(jié)點(diǎn)通過(guò)消息傳遞接口MPI進(jìn)行數(shù)據(jù)傳輸。
[0023]第二個(gè)方面,本發(fā)明實(shí)施例提供一種增量式更新方法,適用于部署在算機(jī)集群上的RH)分布式引擎,所述計(jì)算機(jī)集群包括一個(gè)主節(jié)點(diǎn)及N個(gè)從節(jié)點(diǎn),N 2 1且為整數(shù),該方法包括:
[0024]主節(jié)點(diǎn)接收查詢語(yǔ)言和數(shù)據(jù)獲取協(xié)議SPARQL語(yǔ)句;
[0025]所述主節(jié)點(diǎn)對(duì)所述SPARQL語(yǔ)句進(jìn)行解析,以將所述SPARQL語(yǔ)句轉(zhuǎn)換為查詢子圖;
[0026]所述主節(jié)點(diǎn)從所述N個(gè)從節(jié)點(diǎn)中為所述SPARQL語(yǔ)句確定對(duì)應(yīng)從節(jié)點(diǎn),根據(jù)所述查詢子圖生成操作日志及執(zhí)行計(jì)劃;
[0027]所述主節(jié)點(diǎn)根據(jù)所述查詢子圖生成操作日志及執(zhí)行計(jì)劃,根據(jù)哈希映射規(guī)則,從所述N個(gè)從節(jié)點(diǎn)中確定所述SPARQL語(yǔ)句中RDF數(shù)據(jù)的對(duì)應(yīng)從節(jié)點(diǎn),并對(duì)所述對(duì)應(yīng)從節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行備份,以使所述對(duì)應(yīng)從節(jié)點(diǎn)根據(jù)所述執(zhí)行計(jì)劃,更新內(nèi)存,所述對(duì)應(yīng)從節(jié)點(diǎn)中的每一個(gè)從節(jié)點(diǎn)上設(shè)置所述內(nèi)存。
[0028]可選的,所述主節(jié)點(diǎn)根據(jù)哈希映射規(guī)則,從所述N個(gè)從節(jié)點(diǎn)中確定所述SPARQL語(yǔ)句中RDF數(shù)據(jù)的對(duì)應(yīng)從節(jié)點(diǎn),具體為:
[0029]所述處理器根據(jù)所述RDF數(shù)據(jù)確定出三元組中的三個(gè)元素,對(duì)所述三元組中的三個(gè)元素進(jìn)行排列組合,形成六種不同的三元組格式,所述六種不同的三元組格式對(duì)應(yīng)六個(gè)索引,根據(jù)所述六個(gè)索引,從所述N個(gè)從節(jié)點(diǎn)中為所述SPARQL語(yǔ)句確定出1個(gè)或2個(gè)從節(jié)點(diǎn),作為所述對(duì)應(yīng)從節(jié)點(diǎn),其中,所述三個(gè)元素為主體S,謂詞P,客體0,所述六個(gè)索引分別為SP0,0PS,SOP,PS0,0SP,P0S,以使得所述對(duì)應(yīng)從節(jié)點(diǎn)將所述六個(gè)索引對(duì)應(yīng)的數(shù)據(jù)更新到所述內(nèi)存中。
[0030]可選的,所述對(duì)應(yīng)節(jié)點(diǎn)中的每一個(gè)從節(jié)點(diǎn)還設(shè)置持久化存儲(chǔ)介質(zhì);
[0031]所述主節(jié)點(diǎn)還將已經(jīng)更新到所述內(nèi)存中的所述六個(gè)索引對(duì)應(yīng)的數(shù)據(jù),其中兩個(gè)索引對(duì)應(yīng)的數(shù)據(jù)通過(guò)增量式方式更新到所述持久化存儲(chǔ)介質(zhì),其中,所述兩個(gè)索引為所述SP0與所述0PS。
[0032]本發(fā)明實(shí)施例提供的資源描述框架分布式引擎及增量式更新方法,RDF分布式引擎部署在包括一個(gè)主節(jié)點(diǎn)及N個(gè)從節(jié)點(diǎn)的計(jì)算機(jī)集群上,通過(guò)主節(jié)點(diǎn)接收查詢語(yǔ)言和數(shù)據(jù)獲取協(xié)議SPARQL語(yǔ)句,并對(duì)SPARQL語(yǔ)句進(jìn)行解析,以將SPARQL語(yǔ)句轉(zhuǎn)換為查詢子圖,并根據(jù)哈希映射規(guī)則,從N個(gè)從節(jié)點(diǎn)中確定SPARQL語(yǔ)句中RDF數(shù)據(jù)的對(duì)應(yīng)從節(jié)點(diǎn),根據(jù)查詢子圖生成操作日志及執(zhí)行計(jì)劃,并將SPARQL語(yǔ)句、執(zhí)行計(jì)劃發(fā)送及操作日志發(fā)送至主節(jié)點(diǎn)中的備份管理器,將SPARQL語(yǔ)句與執(zhí)行計(jì)劃發(fā)送至對(duì)應(yīng)節(jié)點(diǎn),并對(duì)對(duì)應(yīng)從節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行備份,由對(duì)應(yīng)從節(jié)點(diǎn)用于根據(jù)執(zhí)行計(jì)劃,通過(guò)增量式方式更新內(nèi)存。該過(guò)程中,通過(guò)增加能夠解析SPARQL語(yǔ)句的查詢解析器,使RDF分布式引擎能夠支持?jǐn)?shù)據(jù)更新語(yǔ)句,從而支持動(dòng)態(tài)數(shù)據(jù)源,即支持對(duì)數(shù)據(jù)源的更改,而無(wú)需在更改數(shù)據(jù)源前后中斷TriAD引擎的查詢服務(wù)。
【附圖說(shuō)明】
[0033]圖1為本發(fā)明RDF分布式引擎實(shí)施例一的結(jié)構(gòu)不意圖;
[0034]圖2為本發(fā)明RDF分布式引擎所適用的6個(gè)索引示意圖;
[0035]圖3為本發(fā)明RDF分布式引擎所適用的索引分布規(guī)則示意圖;
[0036]圖4為本發(fā)明一實(shí)施例提供的增量式更新方法的流程圖。
【具體實(shí)施方式】
[0037]圖1為本發(fā)明RDF分布式引擎實(shí)施例一的結(jié)構(gòu)示意圖。如圖1所