国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MapReduce的OCL的并行查詢(xún)方法

2018-07-25 11:21金仙力馬凱旋
關(guān)鍵詞:文檔集群處理器

金仙力 馬凱旋

(南京郵電大學(xué)計(jì)算機(jī)軟件學(xué)院 江蘇 南京 210003)

0 引 言

近年來(lái),計(jì)算機(jī)應(yīng)用發(fā)展迅速,社交網(wǎng)絡(luò)、電子商務(wù)、數(shù)字城市等許多應(yīng)用領(lǐng)域中產(chǎn)生了規(guī)模巨大的數(shù)據(jù),這些應(yīng)用數(shù)據(jù)不僅存儲(chǔ)量大,而且增長(zhǎng)速度也非常迅猛[1]。為了解決上述問(wèn)題,Google公司在2006年提出了“云計(jì)算”的概念。美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)將云計(jì)算定義為借助互聯(lián)網(wǎng)實(shí)現(xiàn)按需、隨地、便捷地訪問(wèn)共享資源池的計(jì)算模式。云計(jì)算是信息產(chǎn)業(yè)的一大創(chuàng)新模式,一經(jīng)提出就獲得了各個(gè)領(lǐng)域的廣泛關(guān)注。

OCL以約束的形式描述類(lèi)的屬性或方法,可以準(zhǔn)確地約束行為,廣泛地應(yīng)用于模型約束中。隨著信息技術(shù)地發(fā)展,OCL約束變得越來(lái)越復(fù)雜,OCL規(guī)則庫(kù)也相應(yīng)地變得越來(lái)越大。OCL查詢(xún)功能在處理少量的數(shù)據(jù)時(shí)是高效的,但是在處理大量的數(shù)據(jù)時(shí),不能在有效的時(shí)間內(nèi)得出最終的結(jié)果。所以,如何處理大規(guī)模數(shù)據(jù)下的OCL查詢(xún)是迫切需要解決的問(wèn)題。Google 提出的MapReduce并行編程框架,在處理大規(guī)模數(shù)據(jù)問(wèn)題上具有顯著的優(yōu)勢(shì),能夠滿(mǎn)足人們對(duì)數(shù)據(jù)處理的需要。

因此,為了提高OCL查詢(xún)的速度,本文提出來(lái)一種基于MapReduce的OCL并行查詢(xún)方法OPQM(OCL Parallel Query Method)。主要內(nèi)容:使用MapReduce等并行編程框架來(lái)簡(jiǎn)化數(shù)據(jù)的處理模型,通過(guò)提取OCL對(duì)象屬性集合,實(shí)現(xiàn)從OCL規(guī)則庫(kù)查詢(xún)到OCL對(duì)象屬性查詢(xún)的查詢(xún)轉(zhuǎn)化,并利用MapReduce實(shí)現(xiàn)對(duì)象屬性并行查詢(xún)。

1 相關(guān)工作

對(duì)象約束語(yǔ)言O(shè)CL是在UML中特別用來(lái)對(duì)約束和規(guī)則進(jìn)行說(shuō)明的語(yǔ)言[2]。盡管OCL語(yǔ)言是一種形式化語(yǔ)言,但是具有易讀、易寫(xiě)等特點(diǎn)。它主要有兩個(gè)作用:一是對(duì)模型進(jìn)行語(yǔ)義約束;二是對(duì)模型的查詢(xún)。OCL用于查詢(xún)時(shí),主要是用于根據(jù)對(duì)象屬性查詢(xún)滿(mǎn)足約束條件的對(duì)象,并且在查詢(xún)時(shí)可以對(duì)圖中的任何元素寫(xiě)表達(dá)式。其中,對(duì)象屬性是指與模型中對(duì)象有關(guān)的特征。由上述內(nèi)容可得知,對(duì)于OCL的約束查詢(xún)也就相當(dāng)于對(duì)約束中所包含的OCL對(duì)象屬性集合的查詢(xún)。

隨著OCL規(guī)則庫(kù)的增大,傳統(tǒng)的查詢(xún)處理方式需要花費(fèi)大量的時(shí)間匹配所有的對(duì)象屬性與查詢(xún)條件。因此,為了提高海量OCL約束查詢(xún)的效率,需要一種方法來(lái)提高OCL約束的查詢(xún)速度,減少整個(gè)查詢(xún)的時(shí)間。OCL規(guī)則庫(kù)可以遵循XML標(biāo)準(zhǔn)進(jìn)行描述[3],參考XML文檔查詢(xún)的優(yōu)化,可以對(duì)OCL規(guī)則庫(kù)進(jìn)行查詢(xún)優(yōu)化。

目前,有很多關(guān)于XML海量數(shù)據(jù)的分布式處理的研究,黃玉龍等[4]借助關(guān)系數(shù)組等設(shè)計(jì)了處理的XPath查詢(xún)算法GRAXQ。在并行查詢(xún)階段,依次執(zhí)行每個(gè)定位步且標(biāo)記返回結(jié)果,極大減少了查詢(xún)過(guò)程中的消重代價(jià)。

閆威等[5]提出了MapReduce編程模型下多謂詞選擇的查詢(xún)處理方法。包括海量XML數(shù)據(jù)的存儲(chǔ)方法、MapReduce編程模型下基于多謂詞選擇的Map邏輯算法和Reduce邏輯算法、基于多謂詞選擇的MapReduce查詢(xún)優(yōu)化方法,提高了系統(tǒng)的性能。

何志學(xué)等[6]提出TwigMRR算法對(duì)XML Twig查詢(xún)進(jìn)行分布式處理。先對(duì)XML數(shù)據(jù)進(jìn)行Dewey編碼,水平切分后存儲(chǔ)于分布式文件系統(tǒng),再進(jìn)行并行查詢(xún)。

李東等[7]為了實(shí)現(xiàn)基于MapReduce的XML查詢(xún)處理,首先實(shí)現(xiàn)了區(qū)間編碼、前綴編碼、層次編碼3種不同的XML數(shù)據(jù)編碼方式,以此為基礎(chǔ)來(lái)研究基于MapReduce的XML結(jié)構(gòu)連接處理。同時(shí),建立了代價(jià)模型,通過(guò)代價(jià)估算獲得優(yōu)化的查詢(xún)計(jì)劃樹(shù)。

Fan等[8]提出了一種基于MapReduce的高效的分布式XPath查詢(xún)處理。他們使用虛擬節(jié)點(diǎn)將大規(guī)模XML數(shù)據(jù)文件拆分成文件片段,分配到分布式存儲(chǔ)系統(tǒng)。此外,為了有效地處理大型的XML數(shù)據(jù),他們構(gòu)建分區(qū)索引并使用隨機(jī)訪問(wèn)機(jī)制來(lái)執(zhí)行查詢(xún)。

Damigos等[9]提出了一種整合大量XML數(shù)據(jù)的技術(shù),并使用MapReduce框架來(lái)有效地查詢(xún)集成數(shù)據(jù)。為了實(shí)現(xiàn)這個(gè)功能,他們提出了一個(gè)單步的MapReduce算法,該算法利用虛擬結(jié)構(gòu),并以分布的方式有效地計(jì)算給定XPath查詢(xún)的答案。

Choi等[10]為大規(guī)模XML數(shù)據(jù)設(shè)計(jì)了并行樹(shù)標(biāo)簽算法。他們提出基于MapReduce框架的兩個(gè)突出的樹(shù)標(biāo)簽方案的并行版本。他們利用工作負(fù)載平衡和數(shù)據(jù)重新分區(qū)的技術(shù),解決由于運(yùn)行時(shí)數(shù)據(jù)偏斜和MapReduce的繼承限制而導(dǎo)致的性能問(wèn)題。

Khatchadourian等[11]提出目前ChuQL的實(shí)現(xiàn)利用現(xiàn)有的主存儲(chǔ)器XQuery處理器并面臨兩個(gè)挑戰(zhàn):中間XML值增長(zhǎng)大于內(nèi)存、大量的輸出文件。為此他們描述了兩個(gè)ChuQL構(gòu)造來(lái)克服這些限制,分別是使用迭代器來(lái)處理XML值序列和分割作業(yè)輸出。

Bi等[12]提出了一種基于大規(guī)模XML文檔的分布式學(xué)習(xí)解決方案,它基于MapReduce技術(shù)將XML文檔分布式轉(zhuǎn)換為表示模型,并采用基于極限學(xué)習(xí)機(jī)的分布式學(xué)習(xí)組件進(jìn)行分類(lèi)或聚類(lèi)任務(wù)。

Song等[13]集成了數(shù)據(jù)存儲(chǔ),標(biāo)簽,索引和并行查詢(xún),以處理大量的XML數(shù)據(jù)。具體來(lái)說(shuō),引入了SDN標(biāo)簽算法和使用DHT的分布式分層索引。

Bidoit等[14]提出一個(gè)處理大型XML文檔的查詢(xún)和更新的研究原型。該原型基于靜態(tài)和動(dòng)態(tài)分割輸入文檔的想法,以便在Map / Reduce集群的機(jī)器之間分配計(jì)算負(fù)載??梢赃\(yùn)行預(yù)定義的查詢(xún)和更新符合XMark模式的文檔,以及提交自己的查詢(xún)和更新。

Consens等[15]描述了ChuQL,一個(gè)MapReduce擴(kuò)展到XQuery,以及相應(yīng)的Hadoop實(shí)現(xiàn)。ChuQL語(yǔ)言結(jié)合了記錄來(lái)支持MapReduce的鍵/值數(shù)據(jù)模型,并且利用高階函數(shù)提供語(yǔ)義。

XML已經(jīng)是網(wǎng)絡(luò)信息描述和交換的標(biāo)準(zhǔn),隨著越來(lái)越廣泛的XML應(yīng)用,關(guān)于XML數(shù)據(jù)的查詢(xún)方法也越來(lái)越多。但是,很多XML數(shù)據(jù)查詢(xún)方法都存在相應(yīng)的局限性。

由此可知,OCL規(guī)則庫(kù)可以遵循XML標(biāo)準(zhǔn)進(jìn)行描述,參考XML文檔查詢(xún)的優(yōu)化,可以對(duì)OCL規(guī)則庫(kù)進(jìn)行查詢(xún)優(yōu)化。但是與XML文檔相比,OCL規(guī)則庫(kù)中的對(duì)象屬性所包含了許多豐富的信息,我們需要對(duì)這部分屬性進(jìn)行相應(yīng)的處理。本文中我們采用預(yù)處理的方式,對(duì)涉及的所有OCL對(duì)象屬性進(jìn)行提取,并使用并行模型來(lái)解析匹配這些屬性。

2 基于對(duì)象屬性的OCL并行查詢(xún)

2.1 MapReduce并行處理模型

MapReduce是谷歌首先提出的一種在大型計(jì)算機(jī)集群上處理大數(shù)據(jù)的并行計(jì)算模型,在谷歌以及其他公司的許多項(xiàng)目中得到了廣泛應(yīng)用。它是數(shù)據(jù)密集型的并行計(jì)算模型,即特別適合于處理大規(guī)模海量數(shù)據(jù)。MapReduce既是一種并行計(jì)算模型,又是一種并行計(jì)算框架。

MapReduce計(jì)算模式是云計(jì)算的核心計(jì)算模式,解決大規(guī)模數(shù)據(jù)的處理問(wèn)題。它在設(shè)計(jì)之初,就將局部性原理納入考慮的范疇,通過(guò)利用局部性原理實(shí)現(xiàn)問(wèn)題的分而治之。Map 調(diào)用能夠被分布到多個(gè)節(jié)點(diǎn)執(zhí)行,是通過(guò)將輸入數(shù)據(jù)分割為若干個(gè)數(shù)據(jù)片段的集合實(shí)現(xiàn)的,不同的節(jié)點(diǎn)能夠同時(shí)并行處理輸入的數(shù)據(jù)片段,同時(shí)Reduce 調(diào)用也會(huì)被分布到多個(gè)節(jié)點(diǎn)上并行執(zhí)行。Map 調(diào)用產(chǎn)生的中間 key 值會(huì)被分區(qū)函數(shù)分成N個(gè)分區(qū),其中的分區(qū)函數(shù)、分區(qū)個(gè)數(shù)(N)由用戶(hù)決定。MapReduce流程的三個(gè)階段如圖1所示。

圖1 MapReduce的操作流程圖

(1) Map階段 由于 Map 是并行操作數(shù)據(jù)集,所以用戶(hù)程序首先會(huì)調(diào)用的MapReduce庫(kù),對(duì)輸入的數(shù)據(jù)集進(jìn)行操作,將數(shù)據(jù)集分割成一些數(shù)據(jù)片段如上圖的數(shù)據(jù)塊。在數(shù)據(jù)分割完以后,會(huì)形成多個(gè)分割體,為了保證處理的效率,分割體會(huì)被分配到不同的Map處理器上進(jìn)行并行處理。Hadoop 中的類(lèi) Input Format,從輸入數(shù)據(jù)中解析出鍵值 (key/value)對(duì)。接下來(lái),Map函數(shù)接收傳入的鍵值(key/value),并對(duì)其進(jìn)行處理,產(chǎn)生中間的鍵值 (key/value)對(duì),并將這些中間數(shù)據(jù)緩存到內(nèi)存中。同時(shí),為了提高Reduce的處理效率以及增加集群內(nèi)部數(shù)據(jù)的傳輸速度,在Map函數(shù)之后設(shè)置了一個(gè)洗牌(shuffle)過(guò)程。

(2) 中間階段 中間階段的實(shí)現(xiàn)主要是由Hadoop 框架提供的一個(gè)合成器(Combine)來(lái)完成。中心控制作業(yè) Job Tracker 會(huì)選取節(jié)點(diǎn)來(lái)進(jìn)行 Map 運(yùn)算,產(chǎn)生鍵值(key/value)對(duì)。同時(shí),綜合考慮性能和效率因素,這些鍵值(key/value)將被收集到一些 List 數(shù)據(jù)集中,而不會(huì)立即寫(xiě)入輸出文件。

(3) Reduce 階段 這個(gè)過(guò)程由復(fù)制、排序、 reduce 任務(wù)這3個(gè)步驟組成。在集群模式下,首先,服務(wù)器上的中間階段數(shù)據(jù)會(huì)周期性地復(fù)制到本地文件系統(tǒng)上。復(fù)制完數(shù)據(jù)之后,Reduce 任務(wù)會(huì)對(duì)這些中間階段的數(shù)據(jù)進(jìn)行排序,將具有相同的數(shù)據(jù)進(jìn)行整理并合并到一個(gè)文件中。最后一步由 Reduce 函數(shù)完成,將鍵(key)所對(duì)應(yīng)的值(values)傳給 Reduce 函數(shù)產(chǎn)生最后的結(jié)果。

將MapReduce并行模型和OCL規(guī)則庫(kù)的存儲(chǔ)結(jié)構(gòu)綜合起來(lái),MapReduce中的最小處理單元即是OCL規(guī)則庫(kù)中的一個(gè)對(duì)象屬性。在處理過(guò)程中,節(jié)點(diǎn)根據(jù)實(shí)際的查詢(xún),匹配并篩選OCL對(duì)象屬性,得到滿(mǎn)足條件的對(duì)象屬性集合,并對(duì)其進(jìn)行構(gòu)造得到最終的查詢(xún)結(jié)果。

2.2 對(duì)象屬性集提取Extraction算法

并行處理模型面對(duì)的處理對(duì)象必須可以拆分,也就是說(shuō)這些處理對(duì)象能夠被分成若干個(gè)子對(duì)象,這樣才能被不同的處理器并行處理。MapReduce模型和上述的工作原理一致,它是把一個(gè)大的數(shù)據(jù)分割成多個(gè)獨(dú)立的片斷(Splits)。

為了讓OCL規(guī)則庫(kù)可以有效地在云計(jì)算的環(huán)境下進(jìn)行并行查詢(xún),就需要對(duì)OCL規(guī)則庫(kù)進(jìn)行預(yù)處理,即對(duì)OCL規(guī)則庫(kù)提取對(duì)象屬性,并由此組成OCL對(duì)象屬性集合,用集合來(lái)替代原來(lái)的OCL規(guī)則庫(kù)作為云計(jì)算并行模型中的輸入數(shù)據(jù)。

在MapReduce并行模型中,這些對(duì)象屬性集合就會(huì)被分割成多個(gè)獨(dú)立的Splits,然后若干個(gè)Splits將被分配到不同的Map處理器上進(jìn)行處理,每個(gè)Splits經(jīng)過(guò)Map函數(shù)處理之后,還會(huì)有一個(gè)洗牌(shuffle)過(guò)程,之后才進(jìn)行相應(yīng)的Reduce任務(wù)。

我們使用的預(yù)處理方法是基于Hadoop的InputFormat,根據(jù)查詢(xún)條件,篩選出OCL規(guī)則庫(kù)中滿(mǎn)足條件的對(duì)象屬性片段并構(gòu)造OCL對(duì)象屬性集合。

使用算法Extraction(fileName,nodeName)提取對(duì)象屬性,其中fileName是OCL原始規(guī)則庫(kù)名(該規(guī)則庫(kù)是預(yù)先存儲(chǔ)在HDFS 中的),nodeName是提取節(jié)點(diǎn)名,也就是OCL對(duì)象屬性名。圖2就是OCL查詢(xún)對(duì)象的轉(zhuǎn)換過(guò)程。

圖2 OCL查詢(xún)對(duì)象的轉(zhuǎn)換

OCL規(guī)則庫(kù)存儲(chǔ)于HDFS(Hadoop Distribute FileSystem),我們需要對(duì)規(guī)則庫(kù)所在的所有塊進(jìn)行并行遍歷,篩選出滿(mǎn)足條件的OCL對(duì)象屬性,用其構(gòu)造成OCL對(duì)象屬性集合,具體的過(guò)程如算法1所描述。

算法1對(duì)象屬性提取Extraction算法

輸入: HDFS file path: ocl; OCL Attribute List : attributeList.

輸出: OCL Attribute Set: attributeSet

1. blockList = procedure Locate(ocl)

2. /*定位ocl對(duì)應(yīng)的所有block*/

3. for each block in blockList do:

4. /*對(duì)存儲(chǔ)在本節(jié)點(diǎn)上的block進(jìn)行處理*/

5. for each attribute in block do:

6. if attribute in attributeList then:

7. /*驗(yàn)證當(dāng)前屬性是否屬于指定OCL屬性*/

8. attributeSet = attributeSet ∪ {attribute}

9. /*將當(dāng)前屬性插入返回集合中*/

10. end if

11. end for

12. end for

上述Extraction算法中的時(shí)間復(fù)雜度為O(m×n),其中m為blockList中的block的數(shù)量,n為block中attribute數(shù)量,Extraction算法的流程圖如圖3所示。

圖3 Extraction算法流程圖

一個(gè)車(chē)輛管理系統(tǒng)和其對(duì)象屬性的XML描述如下所示:

……

This owner is registered

Lily

female

35

2016-12-12

C00005,C00001

……

……

其中第一個(gè)中間的部分是一個(gè)對(duì)象屬性,在該片段中表示一個(gè)Owner(車(chē)主對(duì)象)。多個(gè)OCL對(duì)象屬性組成了一個(gè)OCL約束規(guī)則庫(kù)的整體,一個(gè)OCL規(guī)則庫(kù)可以包括多類(lèi)對(duì)象屬性,具體情況根據(jù)實(shí)際需要所定。當(dāng)然,實(shí)際上涉及的OCL規(guī)則庫(kù)都比以上內(nèi)容復(fù)雜得多。

利用圖3的算法,可以從以上案例中提取Owner所有屬性,如Owner=Extraction(″system.xml″,{″Owner″}),得到用于并行查詢(xún)的OCL對(duì)象屬性集合Owner,該數(shù)據(jù)集合Owner如下所示:

1.

2. This is redheaded/registered

3. Lily

4.

5. female

6. 35

7.

8.

9. C00001,C00005

10.

11.

12. 2016-12-12

13.

14.

15. This owner is yellowheaded/registered

16. hobby

17.

18. male

19. 20

20.

21.

22. C11111

23.

24.

25. 2016-12-18

26.

27. ……

2.3 OCL并行查詢(xún)處理

OCL并行查詢(xún)輸入的數(shù)據(jù)實(shí)際上是OCL對(duì)象屬性集合。由上一小節(jié)可知,Extraction算法根據(jù)標(biāo)簽對(duì)從OCL規(guī)則庫(kù)中獲得符合條件的OCL片段,并組合成了OCL對(duì)象屬性集合。在完成預(yù)處理后,OCL并行查詢(xún)剩下的工作就是對(duì)對(duì)象屬性進(jìn)行篩選并獲取結(jié)果,需要依據(jù)實(shí)際的查詢(xún)情況建立對(duì)應(yīng)的MapReduce任務(wù)。在MapReduce任務(wù)中,Mapper或Reducer處理器處理的對(duì)象屬性,是以流的形式傳遞進(jìn)來(lái)的。在Map函數(shù)之后,還會(huì)有一個(gè)洗牌(shuffle)過(guò)程,之后才會(huì)進(jìn)行相應(yīng)的Reduce任務(wù)進(jìn)行最終結(jié)果的構(gòu)建。

整個(gè)OCL并行查詢(xún)包括對(duì)象屬性篩選和構(gòu)造查詢(xún)結(jié)果兩部分。OCL查詢(xún)會(huì)被處理器翻譯成若干個(gè)MapReduce任務(wù),每個(gè)MapReduce任務(wù)可以處理一個(gè)或多個(gè)查詢(xún)條件,以此來(lái)篩選對(duì)象屬性。最后,將篩選出來(lái)符合查詢(xún)條件的對(duì)象屬性進(jìn)行結(jié)果構(gòu)造,得到最終的結(jié)果。以查詢(xún)年齡不小于25的Owner為例,該查詢(xún)可以理解為這樣一個(gè)簡(jiǎn)單MapReduce任務(wù):Mapper處理器將傳入進(jìn)來(lái)的Owner進(jìn)行篩選,如果當(dāng)前處理的Owner對(duì)象年齡小于25就將其忽略掉,如果Owner年齡大于25就會(huì)被傳遞給Reducer處理器進(jìn)行結(jié)果構(gòu)造。圖4所示的就是上述查詢(xún)過(guò)程。

圖4 查詢(xún)流程

在上述的查詢(xún)流程中,3個(gè)Mapper處理的Owner1-Owner6這6個(gè)對(duì)象,其中只有Owner1、Owner4、Owner5滿(mǎn)足要求,所以只有它們將被傳送到Reduce處理器進(jìn)行構(gòu)造最終結(jié)果。實(shí)際的OCL查詢(xún)中涉及的查詢(xún)要比圖4所示內(nèi)容復(fù)雜很多,OCL查詢(xún)會(huì)被查詢(xún)處理器轉(zhuǎn)換成一組MapReduce任務(wù),以此來(lái)篩選規(guī)則庫(kù),并將OCL規(guī)則庫(kù)中符合查詢(xún)要求的片段進(jìn)行最終結(jié)果構(gòu)造。

3 實(shí)驗(yàn)結(jié)果及分析

3.1 實(shí)驗(yàn)環(huán)境和數(shù)據(jù)

為驗(yàn)證本文方法,設(shè)計(jì)了一個(gè)實(shí)驗(yàn)平臺(tái)。實(shí)驗(yàn)平臺(tái)是由6臺(tái)普通的PC機(jī)(Intel P4 2.8 GHz,雙核處理器,內(nèi)存2 GB,Ubuntu10.04)組成。該實(shí)驗(yàn)平臺(tái)利用Hadoop開(kāi)源框架對(duì)集群進(jìn)行管理:1個(gè)節(jié)點(diǎn)當(dāng)作Name-Node/JobTracker對(duì)整個(gè)集群進(jìn)行管理,剩下的5個(gè)節(jié)點(diǎn)為DataNode/TaskTracker,對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和處理。

實(shí)驗(yàn)數(shù)據(jù)使用的是車(chē)輛管理系統(tǒng)的OCL規(guī)則庫(kù)(包含:用戶(hù)數(shù)據(jù)、車(chē)輛數(shù)據(jù)、登錄數(shù)據(jù)、加入用戶(hù)的數(shù)據(jù))轉(zhuǎn)換成實(shí)驗(yàn)使用的XML描述文檔。表1所示為數(shù)據(jù)集的具體信息。

表1 實(shí)驗(yàn)數(shù)據(jù)集

3.2 實(shí)驗(yàn)與分析

對(duì)于OCL 的查詢(xún),可以將其分成下面幾類(lèi):1) 對(duì)象屬性查詢(xún),如:查詢(xún)年齡大于25的Owner;2) 對(duì)象屬性操作查詢(xún),如查找Owner登錄時(shí)需要滿(mǎn)足哪些約束;3) 對(duì)象屬性關(guān)系查詢(xún),這種類(lèi)型的查詢(xún)需要對(duì)兩個(gè)對(duì)象屬性之間的關(guān)系進(jìn)行匹配,如:查詢(xún) 1號(hào)Owner擁有的所有車(chē),就需要多次進(jìn)行多個(gè)OCL片段集間的比較才能完成。

下面,我們從三個(gè)方面來(lái)研究查詢(xún)的效果。

3.2.1 查詢(xún)時(shí)間隨文檔大小的變化情況

如圖5所示,文檔大小對(duì)查詢(xún)時(shí)間的影響。

圖5 查詢(xún)時(shí)間與文件大小關(guān)系

根據(jù)圖5顯示,隨著文檔大小的增加,查詢(xún)時(shí)間逐漸增長(zhǎng),但二者并不是成正比。這是由于選取OCL片段集時(shí),只選取與查詢(xún)條件相關(guān)的OCL片段,而不是選取原始規(guī)則庫(kù)的全部?jī)?nèi)容。同時(shí),OCL對(duì)象屬性關(guān)系查詢(xún)需要對(duì)兩個(gè)對(duì)象屬性之間的關(guān)系進(jìn)行匹配,需要多次進(jìn)行多個(gè)OCL片段集之間的比較才能完成,所以此類(lèi)查詢(xún)與對(duì)象屬性查詢(xún)、對(duì)象屬性操作查詢(xún)相比,需要更多的時(shí)間?;贛apReduce的OCL并行查詢(xún),同時(shí)利用了OCL片段集的方法,可以有效地減輕查詢(xún)的負(fù)荷,與單機(jī)的OCL查詢(xún)相比,查詢(xún)效率顯著提高。

3.2.2 查詢(xún)時(shí)間隨集群規(guī)模的變化情況

如圖6所示,研究OCL規(guī)則庫(kù)的對(duì)象屬性查詢(xún)、對(duì)象屬性操作查詢(xún),分析集群規(guī)模對(duì)查詢(xún)時(shí)間的影響。

圖6 查詢(xún)時(shí)間與集群規(guī)模的關(guān)系

如圖所示,查詢(xún)時(shí)間與集群規(guī)模成負(fù)相關(guān),但是隨著集群規(guī)模的增大,查詢(xún)時(shí)間的減少幅度逐漸降低。這就需要我們?cè)趯?shí)際的查詢(xún)中,將效率提高收益和硬件成本綜合起來(lái)考慮,選擇最佳的集群規(guī)模。數(shù)據(jù)集的大小為3.9 GB,同時(shí)將集群文件系統(tǒng)的Block設(shè)為64 MB,將處理節(jié)點(diǎn)的最大Mapper和Reducer數(shù)設(shè)為2。因?yàn)楸緦?shí)驗(yàn)所涉及的處理器為雙核,所以設(shè)置為常數(shù)2可以充分地利用處理器的能力。

3.2.3 查詢(xún)時(shí)間隨集群配置的變化情況

圖7表示查詢(xún)時(shí)間與集群配置變化的關(guān)系,數(shù)據(jù)集的大小為5.1 GB。

圖7 查詢(xún)時(shí)間與集群配置的關(guān)系

如圖7所示,查詢(xún)時(shí)間隨著HDFS中塊(Block)的增大而逐漸減小。因?yàn)?,?dāng)HDFS的塊設(shè)置增大時(shí),Hadoop集群需要用來(lái)處理OCL對(duì)象屬性集合的Map和Reduce任務(wù)減少,進(jìn)而使任務(wù)配置和中間結(jié)果的傳輸?shù)臅r(shí)間縮短,所以整個(gè)查詢(xún)時(shí)間會(huì)相應(yīng)縮短。但是HDFS的塊設(shè)置過(guò)大,OCL規(guī)則庫(kù)相對(duì)過(guò)小,會(huì)造成集群內(nèi)各節(jié)點(diǎn)負(fù)載不均衡,進(jìn)而影響查詢(xún)總效率。根據(jù)圖7實(shí)驗(yàn)結(jié)果,將Block大小設(shè)置為64 MB或者128 MB時(shí),處理器可以被充分利用,能夠有效地減小查詢(xún)時(shí)間,提高查詢(xún)效率。

4 結(jié) 語(yǔ)

本實(shí)驗(yàn)將針對(duì)OCL規(guī)則庫(kù)的查詢(xún)轉(zhuǎn)換成對(duì)象屬性集合的查詢(xún),使用MapReduce模型處理集合中的每個(gè)對(duì)象屬性,提高了對(duì)OCL查詢(xún)的效率,縮短了查詢(xún)時(shí)間。本文的OPQM方法充分利用了MapReduce框架,與傳統(tǒng)的單機(jī)查詢(xún)相比,無(wú)論是查詢(xún)時(shí)間還是查詢(xún)效率,都有很大的優(yōu)勢(shì)。后續(xù)將在本文的工作基礎(chǔ)上,學(xué)習(xí)和研究云計(jì)算海量數(shù)據(jù)存儲(chǔ),針對(duì)更大規(guī)模的OCL規(guī)則庫(kù),更好地提高查詢(xún)效率。

猜你喜歡
文檔集群處理器
淺談Matlab與Word文檔的應(yīng)用接口
有人一聲不吭向你扔了個(gè)文檔
功能性新材料產(chǎn)業(yè)集群加速形成
海上小型無(wú)人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
培育世界級(jí)汽車(chē)產(chǎn)業(yè)集群
Word文檔 高效分合有高招
勤快又呆萌的集群機(jī)器人
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
ADI推出新一代SigmaDSP處理器
火線熱訊