一種多子空間Skyline查詢計算方法
【技術領域】
[0001] 本發明公開了一種多子空間Skyline查詢計算方法,具體涉及一種用于計算數據 庫系統中同時存在的、若干個子空間上的Skyline查詢的查詢計算方法,屬于計算機領域 中數據管理與查詢技術領域。
【背景技術】
[0002] 近年來,Skyline計算及其計算方法得到了眾多研究者的關注。主要因為Skyline 查詢結果在很多應用中都有著非常重要的作用,例如多目標決策,數據挖掘及可視化,以及 用戶偏好查詢等。數據庫領域最初的Skyline查詢研究主要集中在全空間Skyline查詢, 而隨著數據庫中的數據呈高維海量的趨勢發展,在全空間上所求出的極大Skyline結果變 得毫無意義。在許多場景中,用戶不一定對數據集的所有維度都感興趣,很可能只關心全部 維度中的某幾個維度。因此,有了子空間Skyline的概念,例如,航班信息數據庫包含價格、 起飛時間、歷時、經停站等屬性,某用戶要查找一個從北京到南京的航班,他要求價格便宜 并且歷時較短,則他發出的Skyline查詢就是在子空間(價格和歷時)上的Skyline查詢。
[0003] 傳統的子空間Skyline算法主要集中于對某一特定子空間的查詢和對全部子空 間的查詢。而在實際應用中,用戶往往有從多角度審視數據集的需求。因此,大多數情況下 用戶并非關注某一特定子空間的Skyline結果,同時,全部子空間上的Skyline結果對大多 用戶并無太大意義。用戶通常會根據自身的興趣點關注不同子空間的組合,主要可以概括 為以下兩種情況:
[0004] 1.某一用戶同時關注一個數據集的多個不同維度的組合,例如,足球隊員的數據 集包括:(速度、體能、射門精度、搶斷、力量)五個維度。足球教練為了掌握球員的狀況,對 于前鋒,教練可能關注速度以及射門精度兩個維度的組合,對于后衛教練則可能關心他的 搶斷及力量兩個維度的組合;
[0005] 2.多個用戶分別關心一個數據集的不同組合,例如,飯店數據集包括:(距離、價 位、服務態度、餐廳環境、菜碼、口味)六個維度。幾個人相約一同聚餐,甲關心飯店的位置 和價位兩個維度的組合,乙關心菜的尺碼以及口味兩個維度的組合,丙關心服務員的服務 態度以及餐廳環境兩個維度的組合。
[0006] 上述問題可以概括為:對于一個數據集,系統中同時存在多個不同維度組合的子 空間Skyline查詢。將其稱之為多子空間Skyline查詢問題,目前的有關子空間Skyline 的算法大多都是集中在某一特定子空間或者全部子空間,因此在解決任意多個子空間 Sky1ine查詢問題時效率底下。本發明專利關注如何高效的同時計算多個子空間上的 Skyline查詢,提供了一種計算多子空間Skyline查詢的算法。主要概括如下:首先,基于 Skycube的定義,提出子空間立方體群(SubspaceSkycubeGroup,SSG)概念,并設計出由 子空間集合生成子空間立方體群結構的方法。之后,設計了子空間候選集集合,充分利用子 空間立方體結構中各子空間Skyline結果的共享關系來提高多子空間Skyline查詢處理的 效率。基于子空間立方體群結構,設計了一種高效求解多子空間Skyline查詢的方法。
【發明內容】
[0007] 本發明從現實應用中存在的用戶從多角度審視一個數據集的問題出發,進而發現 了在一個系統中,對于一個數據集S,往往會同時存在多個子空間Skyline查詢的需求,并 稱之為多子空間Skyline查詢問題。為了克服傳統Skyline查詢計算方法在解決該問題時 的不足,本發明專利提供了一種基于子空間立方體群結構的多子空間Skyline查詢計算方 法,該方法可以高效的計算數據庫系統中同時存在的多個子空間Skyline查詢,滿足用戶 的查詢需求。
[0008] 本發明專利為解決其技術問題采用如下技術方案:
[0009] -種多子空間Skyline查詢計算方法,其特征在于,包括以下步驟:
[0010] 步驟一、首先檢測數據庫系統中存在的多個子空間Skyline查詢,并將其整合成 集合〇,之后將該子空間集合〇構造成子空間立方體群結構,以供后續計算。
[0011] 步驟二、對數據庫系統中的數據集進行預處理,分別在每個維度上對數據集進行 排序,形成若干個新的數據序列。
[0012] 步驟三、計算子空間立方體群結構的過程中,對每個子空間生成子空間候選集,通 過該候選集,直接排除了一定為子空間Skyline結果的點,提高了算法效率。
[0013] 步驟四、采用求和過濾方法對數據庫系統中的數據集進行裁剪和過濾,直接將一 定不屬于子空間Skyline結果的點排除。
[0014] 步驟五、采用最大值裁剪方法,無法支配其他數據點的數據全部裁剪,避免多余的 支配關系判定。
[0015] 如所述步驟一中,檢測系統中存在的所有子空間,形成集合0,將0作為輸入,經過 createSSG算法,將集合0中的所有子空間,構造成子空間立方體群SSG。首先,將SSG初 始化為空,然后對于每個子空間,先判斷以其為頂點的子空間立方體(SSC)是否已經屬于 SSG,如果不屬于,則對該子空間建立SSC,并加入SSG,否則,處理下一個子空間。
[0016] 如所述步驟二中,對數據集進行預處理,將數據集分別在子空間立方體群第一層 包含的所有維度上進行排序,從而形成若干個數據序列。
[0017] 如所述步驟三中,對于一個當前正在被計算的子空間V,其候選集的計算方法為: 先對V所有孩子子空間結果集求并,之后排除所有孩子子空間結果集中在V上被其它數據 點支配的數據點,最終形成的數據點的集合則為。子空間V的候選集。這個候選集有以下 幾個作用:第一,實現了子空間Skyline結果的共享,保證MSSCA算法并非獨立的求子空間 立方體群中的所有子空間Skyline結果,上層的求解建立在下層已經求出的結果基礎上; 第二,對于每個子空間Skyline查詢的計算,減小了數據點的輸入量;第三,由于候選集中 的數據點一定屬于當前計算子空間V的Skyline結果,因此有效的避免了對這一部分數據 點的支配判斷過程,很大程度的減少了比較次數。因此子空間候選集,有效的提高了算法效 率。
[0018] 如所述步驟四中,在計算某一子空間V的Skyline結果集skyj^過程中,不可避免 一個支配關系判定的過程,本發明采用求和過濾方法來對這一過程進行優化,這個過濾條 件執行的時間復雜度為〇(1),若滿足該條件,則不必對數據點P進行支配關系判定。顯然, 通過該方法,在算法的執行過程中,時間復雜度為0(d)的支配關系判定過程次數將大大減 少。
[0019] 該過濾條件是利用數據點在子空間V上的維度值的和進行過濾的,對于某一數據 點P,P在子空間V的過濾器設計為:
[0020] '(P) = Z
[0021] 上述公式表明,p點在V上的過濾值為Fv (p),該值等于p點在V上所有維度值的 和。通過這個過濾器,很容易初步判定兩個數據點p和q的支配關系,如果Fv(p) <Fv(q), 顯然表明q在V空間上不可能支配p,因為在V上,q至少有一個維度上的值大于p。
[0022] 算法的執行過程中,兩處利用這個過濾值來提高效率。首先,計算過程中所有子空 間Skyline結果集中的數據點均按照過濾值從小到大進行排序;此外,在計算某一子空間V 的Skyline結果skyjt,判定數據點p與當前sky¥中數據點q的支配關系之前進行過濾條 件測試,若Fv (p) <Fv (q),則顯然成^中數據點q無法支配p,并且由于skyv中數據點按過 濾值非遞減排序,所以q之后的點也無法支配P點,則P點被過濾掉,直接放入skyv中即可; 若Fv(p) >Fv(q),才需要對數據點p和q進行逐個維度上的數值比較以確定支配關系。
[0023] 如所述步驟五中,采用最大值裁剪方法,即數據點p在子空間V上的最小值若大于 目前skyv中的最大值,則顯然數據點p會被sky¥中的某一點支配,因此這些數據點可以直 接被刪除,利用該方法避免了一大部分數據點的支配關系判定過程。
[0024] 本發明采用以上技術方案與現有技術相比,具有以下有益效果:
[0025] (1)本發明從現實應用中存在的用戶從多角度審視一個數據集的問題出發,進而 提出了多子空間Skyline查詢問題。在此基礎上,本發明提供了一種基于子空間立方體群 結構的多子空間Skyline查詢計算方法,該方法高效的計算數據庫系統中同時存在的多個 子空間Skyline查詢。
[0026] (2)本發明提出了一種子空間立方體群結構,有效的將系統中的多個子空間組織 起來,形成了便于MSSCA算法進行計算的組織結構,并利用該結構中各子空間Skyline結果 的共享關系來提高多子空間Skyline查詢處理的效率。
[0027] (3)基于子空間立方體群結構,本發明提供了一種高效求解多子空間Skyline查 詢的算法一MSSCA算法。算法的實施過程中,設計并采用了子空間候選集、求和過濾以及最 大值過濾三種剪枝過濾方法,有效降低了數據比較次數,提高了效率。
【附圖說明】
[0028] 圖1是本發明的整體結構圖。
[0029] 圖2是子空間立方體群生成過程示意圖。
[0030] 圖3是四維數據集的子空間立方體群結構示例圖。
[0031] 圖4是子空間候選集生成過程的流程圖。
[0032] 圖5是多子空間Skyline查詢計算方法流程圖。
【具體實施方式】
[0033]為了解決數據庫系統中多子空間Skyline查詢的問題,本發明提供了一種高效的 多子空間Skyline查詢算法,其整體流程如圖1所示。
[0034] 以下結合附圖和實施例對本發明的技術方案做進一步詳