一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法
【專利摘要】本發(fā)明公開一種基于動態(tài)索引結(jié)構(gòu)(DC-Tree)的海量數(shù)據(jù)實時查詢方法,該方法是將海量多維數(shù)據(jù)集降維,支持高空間效率低查詢時間的方法,并支持分布式冗余存儲,從而提升了傳統(tǒng)分布式機制中數(shù)據(jù)分配的效率,適應(yīng)大規(guī)模數(shù)據(jù)的處理;該方法包括:多維數(shù)據(jù)記錄DR通過MasterNode中Z?Curve映射函數(shù)fz,生成降維結(jié)果集S;MasterNode選定k個哈希函數(shù),通過Bloom?Filter對結(jié)果集S進行映射,生成節(jié)點集NN;更新數(shù)據(jù)記錄DR,對節(jié)點集NN中每個元素實行動態(tài)構(gòu)建;用戶User查詢MDS結(jié)果,通過步驟1、步驟2獲得節(jié)點集NN,啟用并行查詢方法;用戶User對節(jié)點集NN中所有訪問節(jié)點的結(jié)果集進行聚合,得到最終查詢結(jié)果Rset。
【專利說明】一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機大數(shù)據(jù)查詢【技術(shù)領(lǐng)域】,特別涉及一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的飛速發(fā)展,社交網(wǎng)絡(luò)、移動應(yīng)用等日趨火熱,我們看到網(wǎng)絡(luò)信息的數(shù)據(jù)量在日益增多,大數(shù)據(jù)作為一種新興數(shù)據(jù)概念而被定義,數(shù)據(jù)作為信息的載體,起著舉足輕重的作用。數(shù)據(jù)的爆炸式增長使得我們進入了大規(guī)模數(shù)據(jù)分析的時代,其特點是計算強度大,并且要求大規(guī)模并發(fā)存儲和處理能力。如何快速地處理海量數(shù)據(jù),及時有效地從海量數(shù)據(jù)中提取有價值的信息,是急需解決的技術(shù)問題。
[0003]目前,大規(guī)模數(shù)據(jù)分析有2種主流技術(shù):第一種是20世紀(jì)80年代開始,以Teradata, Ga_a研究項目為代表的并行數(shù)據(jù)庫逐步發(fā)展成熟,它是由一系列操作符組成,前一操作符的輸出流是下個操作符的輸入流,記錄按流水線的方式依次經(jīng)過這些操作符,具有較高的性能。第2種是以Google為首的基于Map Reduce和分布式文件系統(tǒng)GFS組成一種“無共享”的簡單函數(shù)式編程的并行計算框架,支持其每天億萬次的搜索。Apache的Hadoop是一種Map Reduce的開源實現(xiàn)。但這些大規(guī)模數(shù)據(jù)處理技術(shù)難以滿足實時性要求,更多的是針對離線數(shù)據(jù)的處理。Hadoop更像是一種ETL工具,兩者的關(guān)系不是相互競爭而是互為補充。
[0004]另一方面,由Guttman提出的動態(tài)索引結(jié)構(gòu)R-Tree及基于R-Tree的變種,其插入、查詢等操作可以同時進行,并且支持多維的模型,在眾多空間索引技術(shù)中的優(yōu)勢非常明顯,但是其針對大規(guī)模數(shù)據(jù)處理時隨著樹高度的增加,其查詢結(jié)點重疊度增加,造成查詢效率下降較快。而本發(fā)明能夠很好地解決上面的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明目的在于提供一種基于動態(tài)索引結(jié)構(gòu)(DC-Tree)的大規(guī)模多維數(shù)據(jù)實時查詢方法,該方法解決了大規(guī)模多維數(shù)據(jù)處理的滯后性問題,實現(xiàn)了在分布式架構(gòu)體系上的海量數(shù)據(jù)實時查詢模型。
[0006]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:本發(fā)明提出一種基于動態(tài)索引結(jié)構(gòu)(DC-Tree)的海量數(shù)據(jù)實時查詢方法,該方法包括如下步驟:
[0007]步驟1:多維數(shù)據(jù)記錄DR通過MasterNode中Z Curve映射函數(shù)fz,生成降維結(jié)果集S ;
[0008]步驟2:MasterNode選定k個哈希函數(shù),通過Bloom Filter對結(jié)果集S進行映射,生成節(jié)點集NN;
[0009]步驟3:更新數(shù)據(jù)記錄DR,對節(jié)點集NN中每個元素實行動態(tài)構(gòu)建;
[0010]步驟4:用戶User查詢MDS結(jié)果,通過步驟1、步驟2獲得節(jié)點集NN,啟用并行查詢方法;[0011]步驟5:用戶User對節(jié)點集NN中所有訪問節(jié)點的結(jié)果集進行聚合,得到最終查詢結(jié)果Rset。
[0012]本發(fā)明是基于動態(tài)索引結(jié)構(gòu)將海量多維數(shù)據(jù)集降維,支持高空間效率低查詢時間的方法,并支持分布式冗余存儲,從而提升了傳統(tǒng)分布式機制中數(shù)據(jù)分配的效率,適應(yīng)大規(guī)模數(shù)據(jù)的處理。本發(fā)明建立了具有概念層次化結(jié)構(gòu)的多維數(shù)據(jù)樹,打破傳統(tǒng)的單一屬性查詢方法,使帶有多維功能屬性的數(shù)據(jù)集分成不同維度進行構(gòu)建,大大降低了單一屬性查詢時的聚合工作量。
[0013]本發(fā)明通過將高維數(shù)據(jù)空間數(shù)據(jù)映射到一維空間,大大降低了數(shù)據(jù)管理節(jié)點的工作負(fù)擔(dān),支持?jǐn)?shù)據(jù)存儲節(jié)點的動態(tài)增加。同時設(shè)計了海量數(shù)據(jù)插入和查詢方法,支持多維屬性數(shù)據(jù)的動態(tài)構(gòu)建,并支持海量數(shù)據(jù)查詢的實時性效果,增加了查詢過程訪問鎖機制,適應(yīng)查詢的并發(fā)性需求。
[0014]一、系統(tǒng)架構(gòu)
[0015]圖1給出海量數(shù)據(jù)實時查詢系統(tǒng)的體系架構(gòu),該系統(tǒng)由以下四部分組成:數(shù)據(jù)管理節(jié)點(Master Node)、動態(tài)索引樹(DC-Tree)、數(shù)據(jù)存儲節(jié)點(Data Node)及用戶(User)。MasterNode負(fù)責(zé)數(shù)據(jù)查詢/更新的定位,主要運用降維和快速查詢技術(shù)。DC-Tree主要是用于動態(tài)構(gòu)建多維屬性數(shù)據(jù)查詢樹,提供實時查詢效果。DataNode負(fù)責(zé)具體數(shù)據(jù)的存儲。用戶(User)向MasterNode發(fā)送查詢請求,MasterNode將對查詢請求內(nèi)容處理,確定所查詢內(nèi)容在部分DataNode上,并將這些符合要求的DataNode提交給用戶。完成這個操作之后,用戶將于MasterNode斷開連接,并主動訪問提交的DataNode進行查詢。系統(tǒng)整體架構(gòu)如下圖1所示。
[0016]本發(fā)明的海量數(shù)據(jù)實時查詢方案由以下四部分操作組成:MDS(最小描述子集)分解、Z curve降維處理、Bloom Filter定位、DC-Tree索引及結(jié)果聚合。
[0017]二、方法流程
[0018]1.MDS (最小描述子集)分解
[0019]MDS(最小描述子集)表現(xiàn)形式為(M1,…,Md),其中風(fēng)GA,不妨設(shè)Mi ={an,ai2,…,aik},其中I≤i≤d,aik e Di,則此MDS (最小描述子集)對應(yīng)的多維數(shù)據(jù)記錄集為{ (&1D &21,...,S(Ji),...,(已lk,^2k>...,,記為 MM。
[0020]2.Z curve 降維處理
[0021]根據(jù)上述步驟I中所得結(jié)果集MM,運用Z Curve方法進行降維操作,設(shè)Z Curve映射函數(shù)為fz(p, m, η),其中P e麗,m為Z Curve階數(shù),η為多維模型的維度數(shù),不妨設(shè)映射函數(shù)fz返回值為yp。該映射函數(shù)計算過程偽代碼如下:
[0022](I)yp = O;
[0023]REPEAT
[0024]REPEAT
[0025](2)yp = yρ+2ηα-1)+^Β,,
[0026]UNTIL j ≥η
[0027]UNTIL i ≥m
[0028](3) RETURN yp
[0029]由于n維m階Z Curve的映射函數(shù)空間復(fù)雜度為0(n),所以上述結(jié)果需要長度為η的數(shù)組來存放結(jié)果集yp,不妨設(shè)此結(jié)果集為S。
[0030]3.Bloom Filter 定位
[0031]根據(jù)上述步驟2中所得降維處理后的結(jié)果集S = {Υι,...,yn},再根據(jù)相關(guān)工作中對Bloom Filter的闡述,此時需要選擇k個哈希函數(shù)HFi,其中I < i < k,由于BloomFilter本身存在一定的錯誤率,為了能夠減少這種正向性錯誤,本發(fā)明在構(gòu)建哈希函數(shù)時運用了 Knuth論證:兩個哈希函數(shù)HF1和HF2通過下面的形式可以生成更多的哈希函數(shù):
[0032]HFi = [HFi+HF^f (i)]mod r
[0033]其中I≤i≤k,r為Bloom Filter數(shù)組長度,HF1和HF2是兩個相互獨立的哈希函數(shù)。當(dāng)f(i) = O時,采用雙哈希函數(shù)機制,否則就為擴展哈希函數(shù)機制,這樣產(chǎn)生的哈希函數(shù)保持了正向性錯誤率不變,并且提高了系統(tǒng)的計算效率。
[0034]選定k個函數(shù)函數(shù)后,對集合S中數(shù)據(jù)進行映射,返回一個DataNode節(jié)點集,不妨設(shè)為NN。并將此集NN返回至用戶。
[0035]4.DC-Tree索引及結(jié)果聚合
[0036]用戶根據(jù)上述步驟3中所得集合NN,定位到所需進行索引的DataNode, DataNode采用DC-Tree索引方法進行查找。在每個DataNode上進行查找后,會將索引結(jié)果發(fā)送到一個索引結(jié)果集中,不妨設(shè)為RSet,此時再對該索引結(jié)果集進行聚合,獲得最終查詢結(jié)果。
[0037]有益效果:
[0038]1、本發(fā)明提高了數(shù)據(jù)分配的效率,適應(yīng)大規(guī)模數(shù)據(jù)的處理,降低了單一屬性查詢時的聚合工作量。
[0039]2、本發(fā)明實現(xiàn)了大規(guī)模數(shù)據(jù)高效并發(fā)處理和實時性功能。
【專利附圖】
【附圖說明】
[0040]圖1是本發(fā)明的系統(tǒng)架構(gòu)圖。
[0041]圖2是本發(fā)明的動態(tài)插入方法流程圖。
[0042]圖3是本發(fā)明的并行查詢方法流程圖。
【具體實施方式】
[0043]下面通過結(jié)合說明書附圖,進一步說明本發(fā)明的技術(shù)方案。
[0044]實施例1
[0045]如圖2和圖3所示,本發(fā)明提出一種基于動態(tài)索引結(jié)構(gòu)(DC-Tree)的海量數(shù)據(jù)實時查詢方法,該方法包括如下步驟:
[0046]步驟1:多維數(shù)據(jù)記錄DR通過MasterNode中Z Curve映射函數(shù)fz,生成降維結(jié)果集S ;
[0047]步驟2:MasterNode選定k個哈希函數(shù),通過Bloom Filter對結(jié)果集S進行映射,生成節(jié)點集NN;
[0048]步驟3:更新數(shù)據(jù)記錄DR,對節(jié)點集NN中每個元素實行動態(tài)構(gòu)建;
[0049]步驟4:用戶User查詢MDS結(jié)果,通過步驟1、步驟2獲得節(jié)點集NN,啟用并行查詢方法;
[0050]步驟5:用戶User對節(jié)點集NN中所有訪問節(jié)點的結(jié)果集進行聚合,得到最終查詢結(jié)果Rset。
[0051]本發(fā)明是基于動態(tài)索引結(jié)構(gòu)將海量多維數(shù)據(jù)集降維,支持高空間效率低查詢時間的方法,并支持分布式冗余存儲,從而提升了傳統(tǒng)分布式機制中數(shù)據(jù)分配的效率,適應(yīng)大規(guī)模數(shù)據(jù)的處理。本發(fā)明建立了具有概念層次化結(jié)構(gòu)的多維數(shù)據(jù)樹,打破傳統(tǒng)的單一屬性查詢方法,使帶有多維功能屬性的數(shù)據(jù)集分成不同維度進行構(gòu)建,大大降低了單一屬性查詢時的聚合工作量。
[0052]本發(fā)明的一個新的多維數(shù)據(jù)記錄DR,通過MasterNode快速定位查詢節(jié)點集NN,并動態(tài)添加到相應(yīng)DC-Tree,用戶User通過MDS查詢節(jié)點集NN,聚合返回查詢結(jié)果。
[0053]則其【具體實施方式】為:
[0054](I)多維數(shù)據(jù)記錄DR通過MasterNode中Z Curve映射函數(shù)fz,生成降維結(jié)果集S ;
[0055](2) MasterNode選定k個哈希函數(shù),通過Bloom Filter對結(jié)果集S進行映射,生成節(jié)點集NN;
[0056](3)更新數(shù)據(jù)記錄DR,對節(jié)點集NN中每個元素實行動態(tài)構(gòu)建;
[0057]動態(tài)插入:為根節(jié)點D申請加鎖LOCK ;更新目錄結(jié)點的Measure值;如果DR僅僅包含在D的一個孩子的MDS中,那么令D置為這個目錄孩子結(jié)點;如果DR包含在多個D的孩子的MDS中,那么找出這些孩子中包含最少數(shù)據(jù)結(jié)點的那個孩子,并將D置為這個目錄孩子結(jié)點;如果DR不包含在D的任何一個孩子的MDS中,首先拷貝一份D,不妨設(shè)為D’,將DR添加到D的每一個孩子結(jié)點中,計算添加后的重疊值,選擇重疊值最小的那個孩子結(jié)點,并將其設(shè)為D ;將數(shù)據(jù)記錄DR插入到D中,并更新D的Measure值;如果D的容納空間已經(jīng)達(dá)到最大,則調(diào)用分裂函數(shù)SPLIT,將D作為參數(shù)傳遞;更新D的父親結(jié)點的Measure和MDS ;令D指向D的父親結(jié)點,如果D沒有更新或者D不是根節(jié)點,則重新將數(shù)據(jù)記錄DR插入到D中,并更新D的Measure值,繼續(xù)執(zhí)行,否則結(jié)束;為根節(jié)點D申請解鎖UNLOCK ;
[0058](4)用戶User查詢MDS結(jié)果,通過步驟1、步驟2獲得節(jié)點集NN,啟用并行查詢方法;
[0059]并行查詢:對節(jié)點集NN中所有節(jié)點,如果該節(jié)點沒有上鎖,則并發(fā)訪問所有在NN中節(jié)點;為根節(jié)點D申請加鎖LOCK ;對D的每一次孩子結(jié)點C,對C的任何一個維度,如果與查詢MDS不在同一維度層次上,則將兩者中較低維度層次轉(zhuǎn)換為較高維度層次;如果C的_MDS包含在查詢MDS中,則將該_1?5及其Measure Values加入到結(jié)果集中;如果和查詢MDS有重疊但并不包含在查詢MDS中,則將該孩子結(jié)點C設(shè)為D,遞歸調(diào)用并行查詢函數(shù)PARALLEL QUERY,繼續(xù)及NN中節(jié)點執(zhí)行同樣操作;如果C為葉子結(jié)點,則訪問結(jié)束;為根節(jié)點D申請解鎖UNLOCK ;
[0060](5)用戶User對節(jié)點集NN中所有訪問節(jié)點的結(jié)果集進行聚合,得到最終查詢結(jié)果Rset ;
[0061](6)全過程結(jié)束。
[0062]實施例2
[0063]如圖1所示,本發(fā)明給出海量數(shù)據(jù)實時查詢系統(tǒng)的體系架構(gòu),該系統(tǒng)由以下四部分組成:數(shù)據(jù)管理節(jié)點(Master Node)、動態(tài)索引樹(DC_Tree)、數(shù)據(jù)存儲節(jié)點(Data Node)及用戶(User)。MasterNode負(fù)責(zé)數(shù)據(jù)查詢/更新的定位,主要運用降維和快速查詢技術(shù)。DC-Tree主要是用于動態(tài)構(gòu)建多維屬性數(shù)據(jù)查詢樹,提供實時查詢效果。DataNode負(fù)責(zé)具體數(shù)據(jù)的存儲。用戶(User)向MasterNode發(fā)送查詢請求,MasterNode將對查詢請求內(nèi)容處理,確定所查詢內(nèi)容在部分DataNode上,并將這些符合要求的DataNode提交給用戶。完成這個操作之后,用戶將于MasterNode斷開連接,并主動訪問提交的DataNode進行查詢。
[0064]本發(fā)明的海量數(shù)據(jù)實時查詢方法由以下四個操作部分組成,包括:MDS(最小描述子集)分解、Z curve降維處理、Bloom Filter定位、DC-Tree索引及結(jié)果聚合。
【權(quán)利要求】
1.一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法,其特征在于,所述方法包含如下步驟: 步驟1:多維數(shù)據(jù)記錄DR通過MasterNode中Z Curve映射函數(shù)fz,生成降維結(jié)果集S ;步驟2:MasterNode選定k個哈希函數(shù),通過Bloom Filter對結(jié)果集S進行映射,生成節(jié)點集NN; 步驟3:更新數(shù)據(jù)記錄DR,對節(jié)點集NN中每個元素實行動態(tài)構(gòu)建; 步驟4:用戶User查詢MDS結(jié)果,通過步驟1、步驟2獲得節(jié)點集NN,啟用并行查詢方法; 步驟5:用戶User對節(jié)點集NN中所有訪問節(jié)點的結(jié)果集進行聚合,得到最終查詢結(jié)果Rset0
2.根據(jù)權(quán)利要求1所述的一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法,其特征在于:所述方法中建立了實時查詢模型,將海量多維數(shù)據(jù)集降維。
3.根據(jù)權(quán)利要求1所述的一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法,其特征在于:所述方法中建立了具有概念層次化結(jié)構(gòu)的多維數(shù)據(jù)樹。
4.根據(jù)權(quán)利要求1所述的一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法,其特征在于,所述方法中包括:MDS(最小描述子集)分解、Z curve降維處理、Bloom Filter定位、DC-Tree索引及結(jié)果聚合。
5.根據(jù)權(quán)利要求1所述的一種基于動態(tài)索引結(jié)構(gòu)的海量數(shù)據(jù)實時查詢方法,其特征在于:所述方法是基于動態(tài)索引結(jié)構(gòu)。
【文檔編號】G06F17/30GK103678550SQ201310648180
【公開日】2014年3月26日 申請日期:2013年12月4日 優(yōu)先權(quán)日:2013年9月9日
【發(fā)明者】陳丹偉, 莊俊 申請人:南京郵電大學(xué)