一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法
【專利摘要】本發(fā)明涉及一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法,屬于數(shù)據(jù)庫查詢【技術(shù)領域】。主要步驟為:采用有連接的算法得到聚集查詢約簡的一致性結(jié)果,并根據(jù)得到的結(jié)果計算;在計算得到根結(jié)點的連接屬性值是否存在于樹葉的查詢子集中后,再對其鍵值進行分組過濾,得到無重復外鍵屬性和分組屬性表達式G的cand_G結(jié)果集;然后用cand_G結(jié)果集代替原有的根結(jié)點,在原有的連接關系上進行連接;對cand_G結(jié)果集的初始分組屬性和根節(jié)點的外鍵屬性進行分組得到聚集值的最大和最小值;最后對結(jié)果集cand的初始分組屬性進行分組求和得到最終聚集值的最小值和最大值。采用本發(fā)明方法,可以有效地針對數(shù)據(jù)庫進行查詢,獲得更好的查詢效果。
【專利說明】一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法
【技術(shù)領域】
[0001]本發(fā)明涉及一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法,屬于數(shù)據(jù)庫查詢【技術(shù)領域】。
【背景技術(shù)】
[0002]隨著計算機應用技術(shù)的不斷普及和發(fā)展,數(shù)據(jù)庫系統(tǒng)正越來越多的走進人們的日常生活。在要求查詢結(jié)果正確無誤的同時,人們越來越關心查詢的效率問題。影響查詢效率的因素很多,諸如處理器的速度、I/o速度、存儲器的容量、操作系統(tǒng)、采取何種的數(shù)據(jù)庫服務系統(tǒng)等。但是對于特定服務器來說查詢的效率主要取決于DBA (數(shù)據(jù)庫管理員)所給定的查詢語句。
[0003]數(shù)據(jù)庫服務器對數(shù)據(jù)進行訪問一般采用下面的兩種方式:①索引掃描,通過索引訪問數(shù)據(jù)表掃描,讀表中的所有頁。當對一個表進行查詢時,如果返回的行數(shù)占全表總行數(shù)的10%到15%時,使用索引可以極大的優(yōu)化查詢的性能。但是如果查詢涉及到全表40%以上的行時,表掃描的效率比使用索引掃描的效率高。索引有助于提高檢索性能,但過多或不當?shù)乃饕矔е孪到y(tǒng)低效。因為用戶在表中每添加一個索引,數(shù)據(jù)庫就要做更多的工作。過多的索引甚至會導致索引碎片。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法,以便更好地針對數(shù)據(jù)庫進行查詢。
[0005]為了實現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下。
`[0006]一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法,具體包括以下步驟:
(I)采用有連接的算法得到聚集查詢約簡的一致性結(jié)果,并根據(jù)得到的結(jié)果計算R0CA,與無聚集的連接查詢重寫算法不同的是,根結(jié)點得到的結(jié)果集兄添加了外鍵屬性;在計算得到根結(jié)點的連接屬性值是否存在于樹葉的查詢子集中后,再對其鍵值進行分組過濾,得到關于根結(jié)點的無重復外鍵屬性和分組屬性表達式G的cmd—G結(jié)果集。
[0007](2)然后結(jié)果集作為根結(jié)點代替原有的根結(jié)點,其他子結(jié)點不變,在原有的連接關系上,進行連接;對^/7(6結(jié)果集的初始分組屬性和根節(jié)點的外鍵屬性進行分組,得到聚集值的最大和最小值;最后對結(jié)果集cand的初始分組屬性進行分組求和,得到最終聚集值的最小值和最大值。
[0008]上述有連接的聚集查詢基于無連接的聚集查詢,首先采用聚集查詢約簡判斷連接圖中每個頂點(關系)的一致性,并考慮相鄰頂點的連接屬性。聚集查詢約簡對應的連接圖是基于初始查詢的樹根,而聚集查詢重寫對應的連接圖則根據(jù)聚集查詢約簡計算得到的一致性結(jié)果集作為樹根。因此,這類算法的聚集查詢約簡是求出沒有聚集的情況下的一致性結(jié)果,然后在已經(jīng)求得的一致性結(jié)果基礎上,再計算聚集屬性的最大值和最小值。
[0009]進一步地,上述無聚集的查詢重寫算法,其基本思想如下:(I)最小值由于存在可能值(即沖突元組的最小值為0),必須要把可能值排除掉,得到必然值(一致性元組),然后再求最大值。首先對初始查詢加入鍵屬性,對初始分組屬性和鍵屬性進行聚集求最大值和最小值,得到Cmd結(jié)果集。
[0010](2)由于沖突元組的最小值為O, min_candl用于剔除中的初始分組屬性值相沖突的元組。在ASC的條件選擇謂詞中,可能有不滿足選擇條件的情況,如選擇條件相反(采用NSC表示)和選擇條件屬性值為空(采用ISNULL (SCA)表示),這種情況表明對于鍵屬性值來說,由于存在多個選擇分組屬性值,則可能是不滿足初始查詢的元組出現(xiàn),因此其最小值也為O,需要在min_candl的過濾基礎上,再過濾掉不滿足初始查詢的元組,得到cand2結(jié)果集。
[0011](3)然后再對過濾產(chǎn)生的最小值必結(jié)果集與候選結(jié)果集進行連接產(chǎn)生過濾的初始分組屬性的最小值O。由于最大值是可能的最大的候選值,因此對結(jié)果集的初始分組屬性聚集求和產(chǎn)生的?結(jié)果集中的最大值是確定的,沒有被
過濾的最小值是確定的。
[0012](4)最后max_cand結(jié)果集左連接結(jié)果集,如栗min_canc/3的初始分組屬性為空,則返回為0,否則返回確定的最小值和最大值。
[0013]該發(fā)明的有益效果在于:通過采用上述方法,可以有效地針對數(shù)據(jù)庫進行查詢,獲得更好的查詢效果。
【專利附圖】
【附圖說明】
[0014]圖1是本發(fā)明實施例中無連接的聚集查詢重寫算法截圖。
[0015]圖2是本發(fā)明實施例中聚集算法的標記圖。
[0016]圖3是本發(fā)明實施例中有連接的聚集查詢重寫算法截圖。
【具體實施方式】
[0017]下面結(jié)合附圖和實施例對本發(fā)明的【具體實施方式】進行描述,以便更好的理解本發(fā)明。
實施例
[0018]聚集是非常普通的,在普通的聚集查詢中,一般都能獲得確定的數(shù)值。聚集操作符的結(jié)果是對整個表中的所有聲明的屬性(列)的值進行計算的結(jié)果。如果在一個查詢里面聲明了組,那么這種(聚集)計算將只發(fā)生在一個組的值上。SQL允許把一個表里面的記錄分成組。然后上面描述的聚集操作符可以應用于這些組上,也就是說,聚集操作符的值不再是對所有聲明的列值進行操作,而是對一個組的所有值進行操作。這樣,聚集函數(shù)為每個組獨立地進行計算。對記錄的分組是通過GROUP BY實現(xiàn)的,GROUP BY后面跟著一個定義組的構(gòu)成的屬性列表。
[0019]然而,由于在非一致性數(shù)據(jù)庫中元組數(shù)值的不確定性,聚集查詢對于每個候選數(shù)據(jù)庫返回不同的結(jié)果,不能返回一致性結(jié)果,因此需要對CQA語義進行調(diào)整,在范圍語義下,關系的數(shù)字屬性的最大值和最小值的計算可以被一階查詢表示。在有限的情況下,聚集查詢基于函數(shù)依賴,由一個標準的聚集操作符應用(MIN(A),MAX(A), COUNTS),COUNT⑷,SUM⑷和AVG⑷)組成。
[0020]一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法,具體包括:
定義區(qū)間(interval):給定一組完整性約束i:和數(shù)據(jù)庫實例/,如果聚集查詢^在每個候選數(shù)據(jù)庫上返回到值rc [a, b],
則<7在/上的一致性結(jié)果是區(qū)間[a, 6] ( —m〈a < K m ),表不為/ l=<7i:e [a,6]。如果IaM是一致性結(jié)果,則a為下界泌為上界。如果沒有子區(qū)間是一致性結(jié)果,則Ca,幻是最優(yōu)的一致性結(jié)果,a為最大下界j為最小上界。
[0021]因為SQL查詢可以有一些屬性在GROUP BY語句中但沒有出現(xiàn)在SELECT語句中(雖然反過來不是)。本發(fā)明中,給出如下的假設。假定查詢中GROUP BY語句中屬性也出現(xiàn)在SELECT語句中。
[0022]進一步地,定義聚集查詢<7表示為如下形式,其中^是一組分組屬性,…,aggjej是聚集表達式。
[0023]SELECT G,aggj (el) el,…,aggn、e) en
FROM R [WHERE ΠGROUP BY G0 [0024]進一步地,定義聚集查詢約簡辦是去掉聚集查詢中的聚集與分組,辦的形式為: SELECT G FROM R [WHERE W]。
[0025]聚集查詢約簡的目的是先得到一致性查詢結(jié)果,再進行聚集計算。由于聚集查詢約簡是無聚集的,因此可以有效地利用無聚集查詢重寫算法。
[0026]對聚集表達返回范圍(邊界值),而不是準確的數(shù)值?;诜秶Z義,需要調(diào)整CQA的語義,叫做一致性查詢范圍。定義4-11給出了范圍保證G的每個值是一致性結(jié)果。
[0027]進一步地,定義一致性查詢范圍(rangeof consistent answer, R0CA)。設D是一個數(shù)據(jù)庫,Q是一個聚集查詢,&是7的聚集查詢約簡,Σ是一組查詢約束。對于每個候選數(shù)據(jù)庫I,如果t是%在0上的一致性結(jié)果,且每個聚集值P滿足(最大下界)^ K ^ lub-answer (最小上界),則(i, glb~answer, lub-answer)良 q 在D 上的一致性查詢范圍。
[0028]基于查詢約簡,先得到無聚集查詢的一致性查詢結(jié)果,再進行聚集計算,得到一致性查詢范圍。由于聚集查詢約簡是無聚集的,因此可以有效地利用無聚集查詢重寫算法,如圖1所示。
[0029]本實施例中,對關系化?添加屬性K。實例為{(ci,/?7,A,1000), {cl,n2,h, 100),{c2,n2,h, 2000),{c2,n2,1, 200),{c3,n2,1, 3000),{c3,nl, I, NULL)}。給定查詢所有U 屬性值和。候選數(shù)據(jù)庫為 Il={tl, t3, t5], 12={tl, t3, t6), 13={tl, t4, t5], 14={tl, t4, t6),15= {t2, t3, t,5),16= {t2, t3, t6),17= {t2, t4, t,5),18 = {t2, t4, t6)。屬性值和分別為{6000, 3000, 4200, 1200,5100,2100,3300,300},因而不是一致性結(jié)果??梢悦枋龇秶鸀閇300,6000]。
[0030]假定對U分組檢索為h的A?屬性值和。tl,泛和M是滿足初始查詢的元組,ROCA由/?7和值的范圍組成,要得到每個U屬性值的邊界值再求和。候選數(shù)據(jù)庫的區(qū)間值分別為{(nI, 1000),(η2, 2000)},ifll, 1000),ifl2, 2000)},{(ηI, 1000),(η2, 0)},{ifll, 1000){η I, 0),{η2, 2100)},{{η I, 0),{η2, 2100)},{ifll, 0), ifl2, 100)}和{(/?7,0),ip2, 100)} ο 因此,ROCA 是{(/?7,0,1000),(城 0,2100)}。在每個候選數(shù)據(jù)庫中,K2為nl的U屬性值和介于O和1000之間,1000在11、12、13和14中,O在其它的候選數(shù)據(jù)庫中'K2為n2的A?屬性值和介于O和2100之間,2100在界和16中,O在其它的候選
數(shù)據(jù)庫中。
[0031]圖2給出了無聚集的查詢重寫算法,基本思想如下:
(I)最小值由于存在可能值(即沖突元組的最小值為0),必須要把可能值排除掉,得到必然值(一致性元組),然后再求最大值。首先對初始查詢加入鍵屬性,對初始分組屬性和鍵屬性進行聚集求最大值和最小值,得到cmd結(jié)果集。 [0032](2)由于沖突元組的最小值為O, min_candl用于剔除中的初始分組屬性值相沖突的元組。在sc的條件選擇謂詞中,可能有不滿足選擇條件的情況,如選擇條件相反(采用asc表示)和選擇條件屬性值為空(采用ISNULL (SCA)表示),這種情況表明對于鍵屬性值來說,由于存在多個選擇分組屬性值,則可能是不滿足初始查詢的元組出現(xiàn),因此其最小值也為O,需要在min_candl的過濾基礎上,再過濾掉不滿足初始查詢的元組,得到論_cand2結(jié)果集。
[0033](3)然后再對過濾產(chǎn)生的最小值必結(jié)果集與候選結(jié)果集進行連接產(chǎn)生過濾的初始分組屬性的最小值O。由于最大值是可能的最大的候選值,因此對結(jié)果集的初始分組屬性聚集求和產(chǎn)生的?結(jié)果集中的最大值是確定的,沒有被
過濾的最小值是確定的。
[0034](4)最后max_cand結(jié)果集左連接結(jié)果集,如栗min_canc/3的初始分組屬性為空,則返回為0,否則返回確定的最小值和最大值。
[0035]有連接的聚集查詢基于無連接的聚集查詢,首先采用聚集查詢約簡判斷連接圖中每個頂點(關系)的一致性,并考慮相鄰頂點的連接屬性。聚集查詢約簡對應的連接圖是基于初始查詢的樹根,而聚集查詢重寫對應的連接圖則根據(jù)聚集查詢約簡計算得到的一致性結(jié)果集作為樹根。因此,這類算法的聚集查詢約簡是求出沒有聚集的情況下的一致性結(jié)果,然后在已經(jīng)求得的一致性結(jié)果基礎上,再計算聚集屬性的最大值和最小值。
[0036]由于在一個SPJ聚集查詢中,多個聚集屬性可能存在于不同的關系中,并且不同的聚集可能是不同的聚集函數(shù)。因此,再給出算法之前,本發(fā)明實施例給出一個關于聚集屬性和聚集函數(shù)的定義。
[0037]定義對于給定的關系7?上的SPJ分組聚集查詢則聚集屬性萬={e7,e2,…,en}的所在關系表示為ER二 [ER1, ER2,…,ERn'。
[0038]在不同的關系中,合取選擇謂詞不一定存在,且對于同一個關系,可能存在多個合取選擇謂詞,因此合取選擇謂詞是可選的。對于初始查詢給定的屬性表達式集合&集合的元素可能存在于多個關系中,因此在每一步從樹葉到樹根的計算過程中,關系的屬性表達式是可選的;對于同一個關系,可能存在多個屬性表達式。本發(fā)明實施例假定4,…,兄依次為連接圖中樹葉到樹根相應的關系。圖2能反映算法的聚集查詢范圍的獲得方法。算法相似的部分是用于求出沒有聚集的情況下的一致性結(jié)果,然后在已經(jīng)求得的一致性結(jié)果基礎上,再計算聚集屬性的最大值和最小值。
[0039]圖3給出了聚集查詢重寫算法,基本思想如下:
(I)類似于有連接的算法,得到聚集查詢約簡的一致性結(jié)果,并根據(jù)得到的結(jié)果計算R0CA。與無聚集的連接查詢重寫算法不同的是,根結(jié)點得到的結(jié)果集兄添加了外鍵屬性。在計算得到根結(jié)點的連接屬性值是否存在于樹葉的查詢子集中后,再對其鍵值進行分組過濾,得到關于根結(jié)點的無重復外鍵屬性和分組屬性表達式G的cand_G結(jié)果集。
[0040](2)然后cand_G結(jié)果集作為根結(jié)點代替原有的根結(jié)點,其他子結(jié)點不變,在原有的連接關系上,進行連接。對cand_G結(jié)果集的初始分組屬性和根節(jié)點的外鍵屬性進行分組,得到聚集值的最大和最小值。最后對結(jié)果集cmd的初始分組屬性進行分組求和,得到最終聚集值的最小值和最大值。
[0041]以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本【技術(shù)領域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護 范圍。
【權(quán)利要求】
1.一種基于范圍語義的數(shù)據(jù)庫聚集查詢方法,其特征在于:具體包括以下步驟: (1)采用有連接的算法得到聚集查詢約簡的一致性結(jié)果,并根據(jù)得到的結(jié)果計算ROCA,根結(jié)點得到的結(jié)果集兄添加了外鍵屬性;在計算得到根結(jié)點的連接屬性值是否存在于樹葉的查詢子集中后,再對其鍵值進行分組過濾,得到關于根結(jié)點的無重復外鍵屬性和分組屬性表達式G的cand_G結(jié)果集; (2)然后結(jié)果集作為根結(jié)點代替原有的根結(jié)點,其他子結(jié)點不變,在原有的連接關系上,進行連接;對^/7(6結(jié)果集的初始分組屬性和根節(jié)點的外鍵屬性進行分組,得到聚集值的最大和最小值;最后對結(jié)果集的初始分組屬性進行分組求和,得到最終聚集值的最小值和最大值。
2.根據(jù)權(quán)利要求1所述的基于范圍語義的數(shù)據(jù)庫聚集查詢方法,其特征在于:所述有連接的聚集查詢基于無連接的聚集查詢,首先采用聚集查詢約簡判斷連接圖中每個頂點(關系)的一致性,并考慮相鄰頂點的連接屬性;聚集查詢約簡對應的連接圖是基于初始查詢的樹根,而聚集查詢重寫對應的連接圖則根據(jù)聚集查詢約簡計算得到的一致性結(jié)果集作為樹根;這類算法的聚集查詢約簡是求出沒有聚集的情況下的一致性結(jié)果,然后在已經(jīng)求得的一致性結(jié)果基礎上,再計算聚集屬性的最大值和最小值。
3.根據(jù)權(quán)利要求1所述的基于范圍語義的數(shù)據(jù)庫聚集查詢方法,其特征在于:所述無聚集的查詢重寫算法,其基本思想如下: (1)最小值由于存在可能值(即沖突元組的最小值為0),要把可能值排除掉,得到必然值(一致性元組),然后再求最大值;首先對初始查詢加入鍵屬性,對初始分組屬性和鍵屬性進行聚集求最大值和最小值,得到Cmd結(jié)果集; (2)由于沖突元組的最小值為O,min_candl用于剔除中的初始分組屬性值相沖突的元組.j£min_candl的`過濾基礎上,再過濾掉不滿足初始查詢的元組,得到min_cand2結(jié)果集; (3)然后再對過濾產(chǎn)生的最小值必結(jié)果集與候選結(jié)果集進行連接產(chǎn)生過濾的初始分組屬性的最小值O; (A)最后niax_cand結(jié)果集左連接結(jié)果集,的初始分組屬性為空,則返回為0,否則返回確定的最小值和最大值。
【文檔編號】G06F17/30GK103559293SQ201310558466
【公開日】2014年2月5日 申請日期:2013年11月12日 優(yōu)先權(quán)日:2013年11月12日
【發(fā)明者】不公告發(fā)明人 申請人:湖南人文科技學院