两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法與流程

文檔序號(hào):12124546閱讀:417來(lái)源:國(guó)知局
云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法與流程

本發(fā)明屬于云存儲(chǔ)技術(shù)領(lǐng)域,更為具體地講,涉及一種云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建與查詢方法。



背景技術(shù):

隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的發(fā)展,云計(jì)算技術(shù)作為一種高性能、低成本的實(shí)用分布式計(jì)算技術(shù),已被廣泛運(yùn)用于以大數(shù)據(jù)處理為代表的各種網(wǎng)絡(luò)應(yīng)用中。高可擴(kuò)展性和可靠性的云存儲(chǔ)系統(tǒng)逐漸成為大數(shù)據(jù)處理的首選方案之一,已有的優(yōu)秀云存儲(chǔ)系統(tǒng)包括:Google的GFS、MapReduce以及其開(kāi)源實(shí)現(xiàn)Hadoop、亞馬遜的Dynamo和Facebook的Cassandra等。相對(duì)于傳統(tǒng)數(shù)據(jù)存儲(chǔ)系統(tǒng),云存儲(chǔ)系統(tǒng)分布更廣,支持?jǐn)?shù)據(jù)更多,這就意味著云存儲(chǔ)時(shí)代的輔助索引系統(tǒng)必然發(fā)生大的變化。

當(dāng)前大多數(shù)的云存儲(chǔ)系統(tǒng)都采用健-值(Key-Value)模型,將查詢的鍵(key)和具體值(value)映射為鍵值對(duì)(kv-pair)來(lái)存取數(shù)據(jù)。該模型簡(jiǎn)單,適合通過(guò)主鍵進(jìn)行查詢。在單鍵查詢的時(shí)候有著良好的表現(xiàn),但卻不能有效支持范圍查詢。實(shí)際的應(yīng)用效果表明,這類基于Key-Value模型的云存儲(chǔ)系統(tǒng)還存在一些亟待提高的地方。例如,對(duì)于一個(gè)在線視頻點(diǎn)播系統(tǒng)來(lái)說(shuō),用戶們往往傾向于采用多于一個(gè)的鍵值來(lái)進(jìn)行查詢,或需要查詢特定屬性處于某一個(gè)數(shù)據(jù)范圍之內(nèi)的視頻信息。為了滿足上述的應(yīng)用需求,當(dāng)前的解決方案主要是通過(guò)運(yùn)行一個(gè)后臺(tái)批處理任務(wù)(例如運(yùn)行一個(gè)MapReduce的任務(wù)),來(lái)掃描整個(gè)數(shù)據(jù)集然后得到查詢結(jié)果。然而,這類解決方案缺乏時(shí)效性,新存入的數(shù)據(jù)不能被及時(shí)的查詢到,必須等到后臺(tái)的批處理任務(wù)完成了完整的掃描,數(shù)據(jù)才會(huì)可查。上述分析表明,當(dāng)前云存儲(chǔ)系統(tǒng)在多維度查詢和范圍查詢方面支持的都不是很理想、且時(shí)效性差,有必要構(gòu)建云環(huán)境下存儲(chǔ)索引結(jié)構(gòu)。

目前少數(shù)基于不同數(shù)據(jù)結(jié)構(gòu)的雙層存儲(chǔ)索引結(jié)構(gòu)已經(jīng)被提出。這些方案能夠很方便地實(shí)現(xiàn)云存儲(chǔ)系統(tǒng)的可擴(kuò)展性,使云存儲(chǔ)系統(tǒng)能夠同時(shí)支持大規(guī)模的查詢。但是,這些方案在全局索引中大都采用了基于P2P協(xié)議的覆蓋網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)并行查詢,但是P2P網(wǎng)絡(luò)本身的維護(hù)比較復(fù)雜,查詢時(shí)的網(wǎng)絡(luò)開(kāi)銷也比較大,這會(huì)影響到云存儲(chǔ)系統(tǒng)的查詢性能。同時(shí),由于現(xiàn)有的云存儲(chǔ)系統(tǒng)一般都是master-slave結(jié)構(gòu)的,要在這些節(jié)點(diǎn)上重新構(gòu)建一個(gè)P2P網(wǎng)絡(luò),會(huì)對(duì)原有的存儲(chǔ)系統(tǒng)帶來(lái)一定的負(fù)面影響。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建與查詢方法,在云存儲(chǔ)系統(tǒng)中存儲(chǔ)索引結(jié)構(gòu)實(shí)現(xiàn)快速有效的多維查詢。

為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建與查詢方法包括以下步驟:

S1:記數(shù)據(jù)集中每個(gè)數(shù)據(jù)為Xi=(xi1,xi2,…xij,…,xiL),其中i=1,2,…,N,j=1,2,…,L,其中N表示數(shù)據(jù)集中數(shù)據(jù)數(shù)量,L表示數(shù)據(jù)維數(shù),根據(jù)需要從L維數(shù)據(jù)中選擇M維數(shù)據(jù)作為索引維,然后根據(jù)以下方法構(gòu)建KD樹(shù):

S1.1:令層數(shù)d=1,根據(jù)數(shù)據(jù)集中每個(gè)數(shù)據(jù)的第1維索引維數(shù)據(jù),篩選得到其中位數(shù),將該中位數(shù)所對(duì)應(yīng)的數(shù)據(jù)作為根結(jié)點(diǎn);

S1.2:令d=d+1;

S1.3:如果d<D,D表示預(yù)設(shè)的KD樹(shù)的深度,進(jìn)入步驟S1.4,否則KD樹(shù)構(gòu)建完成;

S1.4:計(jì)算Ad=d%M,%表示取余;

S1.5:對(duì)于第d-1層中的每個(gè)結(jié)點(diǎn),從數(shù)據(jù)集獲取該結(jié)點(diǎn)對(duì)應(yīng)的左子集和右子集范圍內(nèi)的所有數(shù)據(jù),對(duì)于左子集,根據(jù)每個(gè)數(shù)據(jù)的第Ad維索引維數(shù)據(jù),篩選得到其中位數(shù),將該中位數(shù)所對(duì)應(yīng)的數(shù)據(jù)作為左子集的根結(jié)點(diǎn);對(duì)于右子集,根據(jù)每個(gè)數(shù)據(jù)的第Ad維索引維數(shù)據(jù),篩選得到其中位數(shù),將該中位數(shù)所對(duì)應(yīng)的數(shù)據(jù)作為右子集的根結(jié)點(diǎn);返回步驟S1.2;

S2:獲取步驟S1中構(gòu)建得到的KD樹(shù)中各個(gè)葉子結(jié)點(diǎn)數(shù)據(jù)集并存儲(chǔ),將葉子結(jié)點(diǎn)對(duì)應(yīng)的范圍信息作為RowKey值,將葉子結(jié)點(diǎn)數(shù)據(jù)集中所有數(shù)據(jù)存儲(chǔ)指針構(gòu)成的數(shù)組作為Value值,將索引數(shù)據(jù)存儲(chǔ)在HBase中;

S3:對(duì)整個(gè)數(shù)據(jù)集建立其Bloom Filter結(jié)構(gòu)并存儲(chǔ);

S4:在單健值查詢時(shí),采用以下方法:

通過(guò)數(shù)據(jù)集的Bloom Filter結(jié)構(gòu)檢測(cè)所查詢數(shù)據(jù)是否存在,如果未檢測(cè)到數(shù)據(jù)存在,則報(bào)告數(shù)據(jù)不存在,如果存在,則根據(jù)KD樹(shù)的路由定位到數(shù)據(jù)所在的葉子結(jié)點(diǎn)的Key值,然后根據(jù)Key值提取到對(duì)應(yīng)的數(shù)據(jù)集,再進(jìn)行精確查詢,提取數(shù)據(jù)并返回或報(bào)告數(shù)據(jù)不存在;

S5:在范圍查詢時(shí),采用以下方法:

根據(jù)KD樹(shù)對(duì)數(shù)據(jù)在所選維度上的劃分,確定查詢范圍對(duì)應(yīng)的子樹(shù);獲取該子樹(shù)下所有葉子結(jié)點(diǎn)對(duì)應(yīng)的Key值,如果要查詢的結(jié)果是Value中已經(jīng)預(yù)先計(jì)算好的函數(shù)值,則直接從對(duì)應(yīng)Value中提取數(shù)據(jù)并返回,如果不是預(yù)先計(jì)算的函數(shù)值,則通過(guò)HBase提取得到所有Key值對(duì)應(yīng)的數(shù)據(jù),根據(jù)范圍查詢條件篩選出相應(yīng)數(shù)據(jù),然后計(jì)算得到函數(shù)值后返回結(jié)果。

本發(fā)明云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法,首先建立KD樹(shù)索引結(jié)構(gòu),在建立KD樹(shù)時(shí)依次采用每個(gè)索引維的數(shù)據(jù)作為層結(jié)點(diǎn)的劃分標(biāo)準(zhǔn),將構(gòu)建得到的KD樹(shù)中各個(gè)葉子結(jié)點(diǎn)數(shù)據(jù)集的索引數(shù)據(jù)存儲(chǔ)在HBase中,并對(duì)整個(gè)數(shù)據(jù)集建立其Bloom Filter結(jié)構(gòu)并存儲(chǔ);在單健值查詢時(shí),先通過(guò)Bloom Filter結(jié)構(gòu)檢測(cè)數(shù)據(jù)是否存在,然后再根據(jù)KD樹(shù)進(jìn)行精確查詢;在范圍查詢時(shí),確定查詢范圍對(duì)應(yīng)的子樹(shù),然后根據(jù)子樹(shù)下的葉子節(jié)點(diǎn)進(jìn)行精確查詢。

本發(fā)明利用KD樹(shù)這種數(shù)據(jù)結(jié)構(gòu)并結(jié)合HBase來(lái)有針對(duì)性地構(gòu)建云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu),利用KD樹(shù)將各維度在一定范圍內(nèi)的數(shù)據(jù)子集映射到一起,這樣知道某些維度的范圍就可以實(shí)現(xiàn)多維范圍的查詢。同時(shí),針對(duì)單鍵值查詢,利用Bloom-Filter的海量數(shù)據(jù)過(guò)濾能力,提高單點(diǎn)查詢的效率。此外,本發(fā)明中的存儲(chǔ)索引結(jié)構(gòu)可以根據(jù)用戶需求進(jìn)行構(gòu)建,以滿足不同程度的查詢需求與索引結(jié)構(gòu)空間占用的平衡,具有很好的擴(kuò)展性。

附圖說(shuō)明

圖1是本發(fā)明中可擴(kuò)展存儲(chǔ)索引的架構(gòu)示意圖;

圖2是本發(fā)明云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法的流程圖;

圖3是本發(fā)明中KD樹(shù)構(gòu)建的流程圖;

圖4是本實(shí)施例中數(shù)據(jù)集;

圖5是圖4所示數(shù)據(jù)集的KD樹(shù);

圖6是單鍵值查詢的具體實(shí)例流程圖;

圖7是范圍查詢的具體實(shí)例流程圖。

具體實(shí)施方式

下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行描述,以便本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當(dāng)已知功能和設(shè)計(jì)的詳細(xì)描述也許會(huì)淡化本發(fā)明的主要內(nèi)容時(shí),這些描述在這里將被忽略。

實(shí)施例

圖1是本發(fā)明中可擴(kuò)展存儲(chǔ)索引的架構(gòu)示意圖。如圖1所示,本發(fā)明中可擴(kuò)展存儲(chǔ)索引采用KD樹(shù)型結(jié)構(gòu),每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)范圍信息,用于劃分該結(jié)點(diǎn)左、右子結(jié)點(diǎn)所對(duì)應(yīng)的數(shù)據(jù)范圍。該樹(shù)型結(jié)構(gòu)的深度D可以自定義,從而控制每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)集大小。例如,當(dāng)完整數(shù)據(jù)集大小為1億條記錄,如果設(shè)置KD樹(shù)的深度為11,那么該KD樹(shù)具有1024個(gè)葉子結(jié)點(diǎn),則每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)約1萬(wàn)條記錄;如果設(shè)置KD樹(shù)的深度為21,那么該KD樹(shù)具有1048576個(gè)葉子節(jié)點(diǎn),每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)約100條記錄。KD樹(shù)中的內(nèi)部結(jié)點(diǎn),只是起到路由作用,因此可以稱之為路由結(jié)點(diǎn)(Router-Node)。葉子結(jié)點(diǎn)對(duì)應(yīng)多條記錄的集合,本發(fā)明稱每個(gè)葉子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)為一個(gè)葉子節(jié)點(diǎn)數(shù)據(jù)集(LNS,Leaf-Node-Set)。

根據(jù)KD樹(shù)的特點(diǎn),本發(fā)明提出了云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法。圖2是本發(fā)明云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法的流程圖。如圖2所示,本發(fā)明云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu)的構(gòu)建和查詢方法包括以下步驟:

S201:構(gòu)建KD樹(shù):

對(duì)于本發(fā)明而言,首先需要建立云環(huán)境下可擴(kuò)展存儲(chǔ)索引結(jié)構(gòu),也就是數(shù)據(jù)集的KD樹(shù)。記數(shù)據(jù)集中每個(gè)數(shù)據(jù)為Xi=(xi1,xi2,…xij,…,xiL),其中i=1,2,…,N,j=1,2,…,L,其中N表示數(shù)據(jù)集中數(shù)據(jù)數(shù)量,L表示數(shù)據(jù)維數(shù)。由于數(shù)據(jù)的維數(shù)一般較多,因此為了簡(jiǎn)化KD樹(shù)構(gòu)建流程,本發(fā)明根據(jù)需要從L維數(shù)據(jù)中選擇M維數(shù)據(jù)作為索引維,這些索引維即可視為數(shù)據(jù)集的特征維,然后根據(jù)這些索引維來(lái)構(gòu)建KD樹(shù)。圖3是本發(fā)明中KD樹(shù)構(gòu)建的流程圖。如圖3所示,本發(fā)明中KD樹(shù)構(gòu)建包括以下步驟:

S301:確定根結(jié)點(diǎn):

令層數(shù)d=1,根據(jù)數(shù)據(jù)集中每個(gè)數(shù)據(jù)的第1維索引維數(shù)據(jù),篩選得到其中位數(shù),將該中位數(shù)所對(duì)應(yīng)的數(shù)據(jù)作為根結(jié)點(diǎn)。顯然此時(shí)就可以將整個(gè)數(shù)據(jù)集劃分為兩個(gè)子集。

S302:令d=d+1。

S303:判斷是否d<D,D表示預(yù)設(shè)的KD樹(shù)的深度,如果是,進(jìn)入步驟S304,否則KD樹(shù)構(gòu)建完成。

S304:確定第d層對(duì)應(yīng)數(shù)據(jù)維:

計(jì)算Ad=d%M,%表示取余,那么第d層的數(shù)據(jù)劃分以數(shù)據(jù)中的第Ad維索引維作為劃分標(biāo)準(zhǔn)。

S305:確定第d層結(jié)點(diǎn):

對(duì)于第d-1層中的每個(gè)結(jié)點(diǎn),從數(shù)據(jù)集獲取該結(jié)點(diǎn)對(duì)應(yīng)的左子集和右子集范圍內(nèi)的所有數(shù)據(jù),對(duì)于左子集,根據(jù)每個(gè)數(shù)據(jù)的第Ad維索引維數(shù)據(jù),篩選得到其中位數(shù),將該中位數(shù)所對(duì)應(yīng)的數(shù)據(jù)作為左子集的根結(jié)點(diǎn);同樣地,對(duì)于右子集,根據(jù)每個(gè)數(shù)據(jù)的第Ad維索引維數(shù)據(jù),篩選得到其中位數(shù),將該中位數(shù)所對(duì)應(yīng)的數(shù)據(jù)作為右子集的根結(jié)點(diǎn);返回步驟S302。

圖4是本實(shí)施例中數(shù)據(jù)集。如圖4所示,本實(shí)施例中共有8條數(shù)據(jù),每個(gè)數(shù)據(jù)有三個(gè)維度。由于本實(shí)施例僅作示例,數(shù)據(jù)集中數(shù)據(jù)較少,設(shè)置KD樹(shù)的層數(shù)為3,將三個(gè)維度均作為索引維。該數(shù)據(jù)集的KD樹(shù)構(gòu)建過(guò)程如下:

第一層選擇第1維索引維(A)作為劃分標(biāo)準(zhǔn),篩選得到第1維索引維數(shù)據(jù)1,5,7,2,11,8,12,9的中位數(shù)為7,故選擇(7,12,1.2)作為根結(jié)點(diǎn);根據(jù)A<7和A>7將數(shù)據(jù)分為兩個(gè)子集,其中左子集包括:(1,14,0.1)、(5,18,0.5)和(2,9,1.3),右子集包括:(11,14,0.8)、(8,11,0.5)、(12,12,0.7)和(9,10,0.4)。第二層選擇第2維索引維(B)作為劃分標(biāo)準(zhǔn),對(duì)第1層結(jié)點(diǎn)的左、右子集進(jìn)行劃分。因?yàn)?4,18,9的中位數(shù)為14,所以選擇(1,14,0.1)做為第二層左子樹(shù)的根結(jié)點(diǎn);對(duì)于右子集,因?yàn)?4,11,12,10的中位數(shù)是11,所以選擇(8,11,0.5)做為右子樹(shù)的根結(jié)點(diǎn)。第三層應(yīng)當(dāng)選擇第3維(C)作為劃分標(biāo)準(zhǔn),但是由于本實(shí)施例中數(shù)據(jù)較少,無(wú)法對(duì)第三層結(jié)點(diǎn)實(shí)現(xiàn)劃分,因此本實(shí)施例中無(wú)法確定第3維的劃分范圍。

圖5是圖4所示數(shù)據(jù)集的KD樹(shù)。如圖5所示,以以(2,9,1.3)所示的葉子結(jié)點(diǎn)為例:該結(jié)點(diǎn)表示的空間范圍為A<=7&&B<=14,那么其Key值=“A<=7&&B<=14”。

S202:存儲(chǔ)葉子節(jié)點(diǎn)數(shù)據(jù)集:

獲取步驟S201中構(gòu)建得到的KD樹(shù)中各個(gè)葉子結(jié)點(diǎn)數(shù)據(jù)集并存儲(chǔ)。由于當(dāng)數(shù)據(jù)集較大時(shí),那么每個(gè)葉子結(jié)點(diǎn)數(shù)據(jù)集中包含的數(shù)量可能較多,因此不方便把數(shù)據(jù)直接存儲(chǔ)在葉子結(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。而由于KD樹(shù)中每個(gè)葉子結(jié)點(diǎn)都有一個(gè)對(duì)應(yīng)的范圍信息,且各不相同,因此本發(fā)明將葉子結(jié)點(diǎn)對(duì)應(yīng)的范圍信息作為RowKey值,將葉子結(jié)點(diǎn)數(shù)據(jù)集中所有數(shù)據(jù)存儲(chǔ)指針構(gòu)成的數(shù)組作為Value值,將索引數(shù)據(jù)存儲(chǔ)在HBase中。此外,為了便于用戶查詢,對(duì)于各個(gè)葉子結(jié)點(diǎn)數(shù)據(jù)集,還可以根據(jù)預(yù)設(shè)的統(tǒng)計(jì)指標(biāo)函數(shù)計(jì)算出該葉子結(jié)點(diǎn)數(shù)據(jù)集對(duì)應(yīng)的統(tǒng)計(jì)指標(biāo)并存儲(chǔ)。統(tǒng)計(jì)指標(biāo)函數(shù)一般可以包括求和函數(shù)SUM、平均值函數(shù)AVG或者用戶自定義的函數(shù)UDFs。

以圖5所示KD樹(shù)為例。本實(shí)施例中,設(shè)置Value為一個(gè)二維數(shù)組,其中Value[0]是對(duì)所對(duì)應(yīng)的數(shù)據(jù)的SUM(A)值,Value[1]是對(duì)所對(duì)應(yīng)的數(shù)據(jù)的AVERAGE(B)值。那么以Key=“A<=7&&B<=14”為例,則對(duì)應(yīng)的Value[0]=10,Value[1]=35/3。在HBase中插入記錄,(“A<=7&&B<=14”,Position:[Pointerto(7,12,1.2),Pointerto(2,9,1.3),Pointerto(1,14,0.1)]。

S203:建立Bloom Filter結(jié)構(gòu):

對(duì)整個(gè)數(shù)據(jù)集建立其Bloom Filter結(jié)構(gòu)并存儲(chǔ)。Bloom Filter結(jié)構(gòu)是一種二進(jìn)制向量數(shù)據(jù)結(jié)構(gòu),它具有很好的空間和時(shí)間效率,被用來(lái)檢測(cè)一個(gè)元素是不是集合中的一個(gè)成員。

S204:?jiǎn)捂I值查詢:

由于本發(fā)明對(duì)于整個(gè)數(shù)據(jù)集建立了Bloom Filter結(jié)構(gòu),由于Bloom Filter結(jié)構(gòu)可以對(duì)海量數(shù)據(jù)起到過(guò)濾作用,因此在本發(fā)明中以Bloom Filter結(jié)構(gòu)作為單鍵值查詢的入口,從而快速檢測(cè)數(shù)據(jù)存在與否。本發(fā)明中單鍵值查詢的具體方法為:

通過(guò)Bloom Filter結(jié)構(gòu)檢測(cè)所查詢數(shù)據(jù)是否存在,如果未檢測(cè)到數(shù)據(jù)存在,則報(bào)告數(shù)據(jù)不存在,如果存在,則根據(jù)KD樹(shù)的路由定位到數(shù)據(jù)所在的葉子結(jié)點(diǎn)的Key值,然后根據(jù)Key值提取到對(duì)應(yīng)的數(shù)據(jù)集,再進(jìn)行精確查詢,提取數(shù)據(jù)并返回或報(bào)告數(shù)據(jù)不存在。

圖6是單鍵值查詢的具體實(shí)例流程圖。如圖6所示,設(shè)置要查找的數(shù)據(jù)為(5,18,0.5)。首先通過(guò)Bloom Filter檢測(cè)數(shù)據(jù)是否存在,此處假設(shè)數(shù)據(jù)存在,那么通過(guò)KD-Tree的路由,找到所對(duì)應(yīng)的葉子結(jié)點(diǎn),提取其Key=“A<=7&&B>14”,然后根據(jù)Key值到HBase中檢索數(shù)據(jù),成功查詢得到該數(shù)據(jù),由提取數(shù)據(jù)并返回。

S205:范圍查詢:

在基于key-value模型存取數(shù)據(jù)的云數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)表經(jīng)過(guò)分片后,分布式存儲(chǔ)在服務(wù)器集群上。在海量數(shù)據(jù)情況下,對(duì)所有數(shù)據(jù)分區(qū)進(jìn)行遍歷是非常耗時(shí)的,通過(guò)索引可以有效過(guò)濾不符合查詢條件的數(shù)據(jù),僅對(duì)有可能包含查詢結(jié)果的分區(qū)進(jìn)行掃描,可以有效提高數(shù)據(jù)檢索的性能。

因?yàn)锽loom Filter結(jié)構(gòu)并不支持范圍查找,因此本發(fā)明在范圍查找的入口即KD樹(shù)本身。本發(fā)明中范圍查詢的具體方法為:

根據(jù)KD樹(shù)對(duì)數(shù)據(jù)在所選維度上的劃分,確定查詢范圍對(duì)應(yīng)的子樹(shù);獲取該子樹(shù)下所有葉子結(jié)點(diǎn)對(duì)應(yīng)的Key值,如果要查詢的結(jié)果是Value中已經(jīng)預(yù)先計(jì)算好的函數(shù)值,則直接從對(duì)應(yīng)Value中提取數(shù)據(jù)并返回,如果不是預(yù)先計(jì)算的函數(shù)值,則通過(guò)HBase提取得到所有Key值對(duì)應(yīng)的數(shù)據(jù),根據(jù)范圍查詢條件篩選出相應(yīng)數(shù)據(jù),然后計(jì)算得到函數(shù)值后返回結(jié)果。

圖7是范圍查詢的具體實(shí)例流程圖。如圖7所示,假設(shè)查詢語(yǔ)句為:

如果沒(méi)有建立索引結(jié)構(gòu),現(xiàn)有的MapReduce執(zhí)行過(guò)程如下:首先執(zhí)行一個(gè)Map任務(wù),一個(gè)Map任務(wù)可以創(chuàng)建多個(gè)mapper,對(duì)數(shù)據(jù)進(jìn)行遍歷,找出在范圍內(nèi)的數(shù)據(jù),然后執(zhí)行聚合函數(shù),返回查詢結(jié)果。

而在本發(fā)明所建立KD樹(shù)索引結(jié)構(gòu)中,通過(guò)KD樹(shù)的路由得知,查詢的范圍落在第一和第二個(gè)葉子結(jié)點(diǎn)上,查詢兩個(gè)結(jié)點(diǎn)對(duì)應(yīng)的所有數(shù)據(jù),因?yàn)楣灿?個(gè)葉子結(jié)點(diǎn),因此實(shí)際需要掃描的數(shù)據(jù)只占原數(shù)據(jù)的1/2左右。因?yàn)橐祷氐氖荢UM(C),所以首先查找前兩個(gè)葉子結(jié)點(diǎn)的LNS的Value值,如果存在SUM(C),則直接返回,否則合并提取兩個(gè)葉子結(jié)點(diǎn)的數(shù)據(jù)并過(guò)濾出所對(duì)應(yīng)的所有數(shù)據(jù)中滿足條件的數(shù)據(jù),即(7,12,1.2)、(2,9,1.3)和(1,14,0.1)三條記錄,計(jì)算后返回。

盡管上面對(duì)本發(fā)明說(shuō)明性的具體實(shí)施方式進(jìn)行了描述,以便于本技術(shù)領(lǐng)域的技術(shù)人員理解本發(fā)明,但應(yīng)該清楚,本發(fā)明不限于具體實(shí)施方式的范圍,對(duì)本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見(jiàn)的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護(hù)之列。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
上犹县| 商丘市| 浦城县| 垫江县| 饶平县| 苏尼特左旗| 贺州市| 清原| 确山县| 洪江市| 正阳县| 谢通门县| 成都市| 庆元县| 锡林浩特市| 鹿邑县| 蓝田县| 无极县| 南昌县| 仁化县| 定西市| 岐山县| 安达市| 修水县| 潢川县| 体育| 印江| 遵义县| 加查县| 驻马店市| 崇义县| 贺州市| 四平市| 绥芬河市| 大庆市| 靖边县| 于都县| 和政县| 南靖县| 宁晋县| 平江县|