一種面向分位數查詢的概要數據動態分裂與維護方法
【技術領域】
[0001] 本發明屬于信息技術領域,提出一種以q-digit為基礎的概要數據動態分裂以及 維護方法,該方法包括概要數據結構的分裂點選擇、動態分裂算法、以及分裂后誤差估算方 法等。該方法可用于分布式環境下q-digit概要數據的動態管理,有效支持大數據環境下 概要數據的維護與管理,有效支持分位數查詢與計算。
【背景技術】
[0002] 在流式大數據環境下,一類重要的查詢方法是在流式數據上的進行分位數 (Quantile)查詢,通常表示為Φ-分位數查詢,其物理意義是對數據進行排序之后返回第 ΓφΝ?項,簡稱分位數查詢。分位數Φ的取值范圍是0到1之間的一個實數,即:(0, 1]。1-分 位數(Φ = 1)就是查詢數據集中的最大值,0.5-分位數(Φ = 1)則是數據集中的中值, 又稱作中位數。例如:給定流式數據集D = {6, 1,8, 7, 9, 0, 4, 2, 5, 3},經過排序以后得IV = {0, 1,2, 3, 4, 5, 6, 7, 8, 9},0. 1-分位數查詢返回0 ;0. 5-分位數查詢返回4,1-分位數的 查詢返回最大值9。
[0003] 在流數據環境下,由于無法獲取全部數據,因此無法有效對數據進行排序,此時分 位數查詢顯得尤為重要,例如,實時監控各個地方的溫度走勢,查詢某一個傳感器節點在最 近一段時間之內的最高溫度(1-分位數),中間溫度(〇. 5-分位數),甚至是全部比率的溫 度分布情況。此外分位數查詢還應用在股票市場趨勢分析、web聚集查詢、日志挖掘、分布 式存儲數據管理等領域。
[0004] 由于流數據高速到達、無法獲得并存儲全部的完整數據,目前業界更多采用近似 分位數查詢方法,通過部分的采樣數據,獲得近似的分位數查詢,以達到流數據環境下的實 時分位數計算的目標。
[0005] 目前近似分位數計算的研究主要集中在相關算法的計算效率以及存儲效率的優 化上。典型的研究成果概述如下:Manku等提的MRL99算法(G. S. Manku, S. Rajagopalan, and B.G. Lindsay. Random sampling techniques for space efficient online computation of order statistics of large datasets. In ACM SIGM0D,1999.)是一種基于一次 掃描的查詢算法。該算法的空間復雜度為〇 (il嗯2(εΛ〇),:返回確定的一致性近似 e 結果εΝ)。這個算法不足之處是事先知道數據流中確切的數據項數目N。 Greenwald 與 Khanna 提出另一種分位數查詢算法-GK 算法(Μ. Greenwald and S. Khanna. Space-efficient online computation of quantile summaries. In ACM SIGM0D,200L)〇 該算法不僅將上一個算法空間復雜度降低到了 〇(li〇g (wo),同時也不必事先預知數據項 ε 數Ntj在數據流值域已知的情況下,Cormode與Muthukrishnan進一步提出應用count-min 技術(G. Cormode,S. Muthukrishnan. An improved data stream summary: the count-min sketch and its applications. Journal of Algorithms. 2005, vol. 55, no. I. pp. 58-75.) 進行區間管理,空間復雜度為
:,這個算法空間復雜度僅與劃分的值 域有關而與數據流中的實際到達的數據項個數無關,降低了空間消耗,但是這一方法無法 有效支持任意值域區間的動態劃分。
[0006] Shrivastava 等提出的 q-digit 近似查詢方法(N. Shrivastava, C. Buragohain, D. Agrawal, and S. Suri. Medians and beyond:New aggregation techniques for sensor networks. In ACM SenSys, 2004.),在數據項不斷到達時,可以動態調整概要數據負責的數 值區間,通過一定的遍歷規則,支持流數據分位數查詢。q-digit所構建的概要數據可以近 似地捕獲數據分布特征,而不必對所有達到的具體數據進行存儲和排序。概要數據構建的 核心思想是根據數據的分布,對概要數據中的樣本數值進行自動分組,并將其放到可變大 小的具有相似權重的桶中。q-digit可以進一步支持一些復雜的操作,如查詢中點、位數查 詢、反轉分位數查詢、范圍查詢頻繁項查詢、及協調控制查詢等。
[0007] 另外,q-digit算法具有誤差可控的特征。如果數據項關鍵字取值的整數范圍 是[1,0],q-digit概要數據中樣本數據大小為m,則進行分位數查詢的結果誤差小于 0 (log ( σ )/m)。q-digit是目前在流數據中廣泛采用的分位數據查詢方法。
【發明內容】
[0008] 目前關于分位數查詢的算法和相關應用主要是在集中存儲環境下展開,重點研究 如何提高算法的近似計算精度與算法的效率。但是分布式環境下,數據分布在不同的存儲 設備和加載設備上,需要構建彼此獨立的數據分區模塊,隨著數據的不斷寫入,每個分區內 對應的概要數據也面臨著的分離和合并等操作。
[0009] 本發明針對分布式環境下,支持分位數查詢的概要數據,提出高精度的概要數據 分離/分裂方法,將一個分區的概要數據結構,選擇數據量均等的中間點(Φ =0.5)進行 分離,分裂成兩個數據量近似均等的概要數據結構。每個概要數據結構在分裂以后獨立支 持后續的數據查詢與處理。
[0010] 具體來說,本發明采用的技術方案如下:
[0011] -種面向分位數查詢的概要數據分裂方法,其步驟包括:
[0012] 1)對寫入的數據項進行采樣,構建q-digit概要數據;
[0013] 2)按照q-digit后序遍歷的分位數查詢規則,查詢q-digit概要數據中數據項的 中間點;
[0014] 3)以中間點為基礎逆序遍歷q-digit概要數據,建立分割路徑,根據分割路徑把 q-digit概要數據分裂成兩個數據量近似均等的概要數據結構。
[0015] 進一步地,步驟1)所述q-digit概要數據的數據組織結構可以采用樹形結構、數 組、鏈表等。
[0016] 優選地,所述q-digit概要數據的數據組織結構為樹形結構,對其進行分裂的具 體步驟包括:
[0017] a)根據分裂點的要求,按照q-digit后序遍歷的分位數查詢規則找到中間點,作 為分裂點;
[0018] b)以分裂點為起點,沿著樹形結構逆序到父節點,直到根節點為止,從而得到分割 路徑;以該分割路徑為基礎,將q-digit概要數據的節點分為左右兩顆子樹,該分割路徑上 的節點在左子樹和右子樹中分別保存;
[0019] c)在左右兩棵子樹上,分別修改內節點所負責的數據空間的值域的范圍,當中間 節點負責范圍相同時,合并中間節點。
[0020] -種面向分位數查詢的概要數據動態維護方法,在負載出現不均衡時,或者需要 增加新處理設備時,采用上述方法對概要數據進行分裂操作,將一部分數據分攤到其他處 理節點上,分裂以后的概要數據獨立的支持分裂以后的數據區間內的數據查詢。
[0021] 本發明技術關鍵點主要是下面三點:
[0022] 1.結合分位數查詢規則和誤差分析方法,提出一種逆序遍歷q-digit的方法。 Q-digit查詢過程中,采用至底而上的遍歷方法,以此獲得任意點的分位數查詢結果。根 據這一查詢規則,本發明提出一種從任意分位點,采用tree型結構逆序遍歷方法,上述方 法可以有效建立任意分位點的分割路徑,分割路徑可以分成兩個一定比例的兩個概要數據 集;
[0023] 2.利用方法1中提出的分割路徑,提出q-digit的分裂方法。方法首先根據Φ = 〇. 5的中間點建立分割路徑,采用后序遍歷的方法獲得左右兩個二叉子樹,并修改各個二叉 樹中間內節點對應的數據的區間范圍,進而完成新數據區間內q-digit概要數據的重新構 建;
[0024] 3.對方法(1) (2)下分離后的概要數據進行誤差估算和分析,經過理論分析,分裂 以后的概要數據可以完全獨立的支持分裂以后的數據區間內的數據查詢,并保持最大誤差 不發生改變。
[0025] 與現有技術相比,本發明的有益效果如下:
[0026] 1.本發明提出的分裂方法是根據q-digit查詢規則進行,保證了分裂結果不改變 q-digit原有的查詢方法、誤差估算方法以及與其相關的各種應用,使得本發明方法具備很 好的應用前景與理論基礎;
[0027] 2.本發明僅僅利用到了 q-digit原有的概要數據結構,實現了概要數據的分裂功 能,保證了分裂過程快速執行。分裂以后每個結構仍然是獨立的q-digit結構,可以正常接 收并處理新到達的數據源,因此本方法可以有效支持分布式環境下任意數據分區的動態分 裂與合并等處理。
[0028] 3.本發明可用于分布式環境下q-digit概要數據的動態維護和管理,在任何時刻 都可以按照本發明的方法可以獲得對應的結構。比如負載出現不均衡時,增加新處理設備 時,此時都可以采用本發明的方法分攤一部分數據到其他處理節點上。上層業務可以按照 本發明提出的方法,根據當時的情況,來觸發分裂操作。
【附圖說明】
[0029] 圖1是實施例中q-digit概要數據結構示意圖。
[0030] 圖2是實施例中根據分裂路徑進行分裂后生成的左子樹ql和右子樹q2示意圖, 其中(a)圖為ql子樹不例圖,(b)圖為q2子樹不例圖。
[0031] 圖3是實施例中分裂后左子樹ql維護示意圖,其中(a)圖為分裂后修改ql節點 范圍示意圖,(b)圖為分裂后ql節點合并示意圖。
[0032] 圖4是實施例中分裂后右子樹q2節點維護示意圖,其中(a)圖為分裂后修改q2 節點范圍示意圖,(b)圖為分裂后q2節點合并示意圖,(c)圖為分裂后右子樹q2節點合并 最終結果示意圖。
[0033] 圖5是實施例中q-digit在分布式環境下應用示意圖。
【具體實施方式】
[0034] 為使本發明的上述目的、特征和優點能夠更加明顯易懂,下面通過具體實施例和 附圖,對本發明做進一步說明。
[0035] 本發明以q-digit為基礎,根據分位數查詢規則,可以查詢到數據項的中間點,即 Φ =0.5。然后以中間點為基礎,按照逆序遍歷q-digit概要數據方法,建立分割路徑,根 據分割路徑把概要數據分