專利名稱:從相應數(shù)據(jù)填充稀疏矩陣項的方法和裝置的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)庫,特別涉及要求時立即進行的數(shù)據(jù)聚集。
在數(shù)據(jù)倉庫領域,某個組織的成員常常需要對大量數(shù)據(jù)以各種不同的概括級在各種存儲的維數(shù)內(nèi)概括或聚集。
數(shù)據(jù)庫維數(shù)中的數(shù)據(jù)級是在該維數(shù)中的項的分組。例如,如果一個維數(shù)包括不同的商店,則這些商店可以按城市級、州級、或任何其它可想象的級分組。
不同的人在不同時間常常希望得到相同的概括數(shù)據(jù)。不是在每次需要聚集的數(shù)據(jù)時查詢數(shù)據(jù)倉庫中的數(shù)據(jù)并將其聚集,實際中經(jīng)常是在各種通常查詢的聚集級上預聚集數(shù)據(jù),并把這些聚集的數(shù)據(jù)以所謂劃分(partition)存儲在數(shù)據(jù)庫中便于檢索。預聚集并以這種方式存儲的級常常由系統(tǒng)管理員定義。當應用戶請求執(zhí)行另外的聚集時,這些也可以存儲在劃分中以便后來檢索。
與這種劃分數(shù)據(jù)存儲相關的問題是,當請求尚未生成的以某一級聚集的數(shù)據(jù)時,必須使用詳細級數(shù)據(jù)進行聚集,盡管這些數(shù)據(jù)可能實際存儲在層次上臨界的較低級上,很容易進一步聚集到所要求的級。如果與下一級的任何特定的成員相關的所有細目記錄也與上一級的單一成員相關的話,則級在層次上互為上下級。例如,商店的城市級分組在層次上低于商店的州級分組,因為在一個特定城市中的所有商店也在一個特定的州中(假定沒有橫跨州界的城市)。然而,“商店大小”級通常不在州級的上或下,因為沒有理由在商店大小和州之間有什么關系。
為克服必須經(jīng)常重新分類細目級數(shù)據(jù)來執(zhí)行新聚集的問題,經(jīng)常的實踐是為交集(intersection)定義虛擬劃分,它實際不以特定級存儲數(shù)據(jù),而是提供一種以某一聚集級保存數(shù)據(jù)的外部形象,并提供一種從一個或者多個存儲的較低級的物理劃分聚集數(shù)據(jù)的功能。對于到哪一個物理劃分數(shù)據(jù)供用于聚集,虛擬劃分是預編程的。
然而,對于具有大量維數(shù)并在每一維數(shù)中有相當數(shù)目的級的系統(tǒng),要能抑制必須定義的虛擬劃分的數(shù)目,這既是從管理的觀點也從檢索/查詢的觀點。如果為跨越所有維數(shù)上的每一可能的級組(set oflevels)維持一個虛擬劃分的話,則需要存儲的虛擬劃分的數(shù)目是在每一維數(shù)中的級的數(shù)目的乘積。例如,具有6個維數(shù)每一維數(shù)有5級和兩個維數(shù)每一維數(shù)有7級的系統(tǒng)產(chǎn)生具有765625個元素的矩陣。
所需要的是這樣一個系統(tǒng),它允許服務器處理查詢,以選擇隨時(on the fly)從其聚集數(shù)據(jù)的最佳劃分而無需維護從其聚集數(shù)據(jù)的相當劃分的數(shù)據(jù)庫。
本發(fā)明提供一種方法,它使用在較低級已經(jīng)產(chǎn)生的相同維數(shù)上的聚集產(chǎn)生到較高級的聚集。提供這樣一種系統(tǒng),它允許為,滿足請求所存儲的數(shù)據(jù)的各物理劃分確定處理“成本”的度量。然后使用被確定為具有最小成本的劃分執(zhí)行聚集??梢园鸭毮考墧?shù)據(jù)歸類為一個劃分。否則,如果沒有任何劃分能夠提供所需級上的數(shù)據(jù),或者如果最低成本大于從該細目級數(shù)據(jù)執(zhí)行聚集的成本的話,則使用該細目級數(shù)據(jù)執(zhí)行聚集。
根據(jù)本發(fā)明的一個方面,把一個對象與每一個被存儲的數(shù)據(jù)的所存儲的聚集關聯(lián)。該對象可以根據(jù)在一組維數(shù)中需要的級組查詢。然后該對象使用一個表示聚集該數(shù)據(jù)所需要的處理量的報價響應這一查詢,所述數(shù)據(jù)與所需要到達的級相關。請求對象將要求聚集對象返回執(zhí)行該聚集的最低報價并返回相當?shù)木奂瘮?shù)據(jù)。通過存儲定義存儲在一個適合的數(shù)據(jù)結(jié)構(gòu)中的物理劃分中的數(shù)據(jù)的元數(shù)據(jù)和查詢該數(shù)據(jù)結(jié)構(gòu)來確定使用哪一個劃分執(zhí)行該聚集,可以實現(xiàn)等效操作。
根據(jù)本發(fā)明的另一方面,對于每一所需維數(shù)通過把“距離”乘在一起計算返回的報價,這里,距離是在所需級中的項數(shù)對在該存儲的級中的項數(shù)的比。
根據(jù)本發(fā)明的另一方面,通過計算在存儲的數(shù)據(jù)中的估計的或?qū)嶋H的項數(shù)和在聚集的數(shù)據(jù)中將出現(xiàn)的估計的項數(shù)的差計算返回的報價。
圖1表示根據(jù)本發(fā)明的第一實施例的應用服務器。
圖2A表示一個維數(shù)層次結(jié)構(gòu)的例子。
圖2B以不同格式表示圖2A的維數(shù)層次結(jié)構(gòu)。
圖3A和圖3B表示在本發(fā)明的第一實施例的操作實例中的兩個維數(shù)。
圖4表示示于圖3A和3B中的例示維數(shù)的級叉積。
圖5表示本發(fā)明的第一實施例使用圖3A和3B所示維數(shù)數(shù)據(jù)和圖4所示劃分對事實表上各種請求進行操作的結(jié)果。
以下參考圖1和2說明本發(fā)明的一個特定實施例。
圖1表示按照本發(fā)明的第一實施例的一個應用服務器10,它保持劃分對象20,它們每一個表示數(shù)據(jù)庫25的一個物理劃分22。應用服務器10還保持一個數(shù)據(jù)提供對象40,它可以處理從劃分對象20中存儲的事實數(shù)據(jù)中獲聚集的數(shù)據(jù)的請求。
下述信息可以為應用服務器10使用,它們由系統(tǒng)管理員為存儲在該數(shù)據(jù)庫中的每一維數(shù)定義a)在該維數(shù)中的級,b)在該維數(shù)內(nèi)的級層次結(jié)構(gòu)30,c)在每一級內(nèi)的成員數(shù)(在一定時間估計的或確定的,例如當對維數(shù)表進行改變時),d)每一級的定義屬性。
各種物理數(shù)據(jù)劃分22存儲在數(shù)據(jù)庫25中,而更多的將通過系統(tǒng)的操作產(chǎn)生,下面將會明白。物理劃分基本上是一些表,它們在數(shù)據(jù)在其內(nèi)表示的各維數(shù)中的指定的概括級上存儲來自數(shù)據(jù)庫的事實數(shù)據(jù)。給每一個與物理劃分相關的劃分對象20提供下面的數(shù)據(jù)a)存儲在相關劃分中的每一維數(shù)的級,b)存儲在表中的度量,c)存儲在表中的每一級的行(按照屬性值)(例如東或西部區(qū)域,1995或1996年,等)。
在應用服務器10上裝備數(shù)據(jù)提供對象40以接收對在一組維數(shù)中的指定級的交集處表示選擇度量的數(shù)據(jù)的請求50。實際請求可能要求從幾個交集返回數(shù)據(jù),在該種場合,這里說明的處理將對每一交集執(zhí)行。例如,包括商標和尺寸、月份和季度、以及地區(qū)的請求將要求下述交集商標-月份-地區(qū),尺寸-月份-地區(qū),商標-季度-地區(qū)和尺寸-季度-地區(qū)。對于所需要的每一級的交集,數(shù)據(jù)提供對象40對每一劃分對象20提交一個請求,作為參數(shù)給該劃分對象傳送要求。然后每一對象分析請求的數(shù)據(jù)(下面會詳細說明)并返回表示為從與之相關的物理劃分產(chǎn)生所要求的集合的處理成本的報價。如果某個劃分不能滿足該請求,則返回一個無限大的成本。
通過返回一個非常低的出價可以建立特殊的劃分對象21來強迫某些交集請求使用預定的劃分22。如果可以使用一定的優(yōu)化,諸如特定索引方案,來增強一定級組的聚集到另一更高的級組的話,則這將是適宜的。
然后數(shù)據(jù)提供對象從劃分對象收集所有報價并選擇返回最低報價的對象執(zhí)行聚集。然后數(shù)據(jù)提供對象40請求所涉及的對象執(zhí)行聚集,該對象依次給數(shù)據(jù)庫提交適合的查詢以獲得聚集的數(shù)據(jù),然后返回聚集的表。
例如,假定有一個時間維數(shù)存儲在以天、月和季度級的叫做“時間表”的表中,和一個分店維數(shù)存儲在一個包括分店、行政區(qū)和地區(qū)級的叫做“分店”的表中。另外,假定每一維數(shù)表不只包括表示由該維數(shù)表示的項,而還包括表示在該維數(shù)中的每一級成員的項;每一項具有一個標識與所討論的項相關的級成員的級的“級”字段。維數(shù)表中的這樣一組字段簡化了需要產(chǎn)生的查詢,而可以建立下面的查詢以便從具有存儲在行政區(qū)-月份級的數(shù)據(jù)的表StoredTable中獲得地區(qū)-季度級的數(shù)據(jù)。
SELECT Branches.Region AS Region,TimeTable.Quarter ASQuarter,SUM(StoredTable.Sales) AS Sales FROMStoredTable,Branches,TimeTable WHEREStoredTable.Distric=Branches.District ANDStoredTable.Month=TimeTable.Month ANDBranches.Level=″District″ANDTimeTable.Level=″month″GROUP BY Branches.Region,TimeTable.Quarter;然后數(shù)據(jù)提供對象40返回該表作為原來請求的結(jié)果。服務器也可以建立另一劃分22并將劃分對象20與來自該表的數(shù)據(jù)關聯(lián),以便如果再次提出該請求,可以立即使用這些數(shù)據(jù)。此外,新產(chǎn)生的劃分也可以用于聚集數(shù)據(jù)到更高級,如果請求這樣做的話。
每一劃分對象20使用的計算成本的算法如下。該劃分對象,在接收到聚集請求的參數(shù)時,也從服務器得到為每一被調(diào)用的維數(shù)的維數(shù)級層次結(jié)構(gòu),圖2A示出其中一例。對于每一維數(shù),存儲在該對象中的級和正被請求的級一起在該層次結(jié)構(gòu)中被標識。在圖2A所示例子中,正被請求的級是地區(qū)級100,而存儲的級是城市級102。然后檢查該維數(shù)層次結(jié)構(gòu)看通過沿從被請求的存儲的級的分支行進是否可以到達被請求的級。應該注意,該層次結(jié)構(gòu)不必一定是樹,因為不同分支可以在更高級重新連接到一起,如果不同的較低級都可以歸類到同一更高級的話。例如,分配源級可以在層次結(jié)構(gòu)上低于地區(qū)級,如在圖2A中的點線所示,雖然該分配級不高于或低于州級,例如因為兩個不同的分配源級可能分配給同一州的不同城市。
每一維的維層次結(jié)構(gòu)可以表示為一個陣列,其存儲的級作為一個陣列維,而被請求的級作為另一陣列維。如果被請求的級可以從存儲的級中產(chǎn)生的話則標記一個項,如圖2B所示。
如果存儲的級在層次結(jié)構(gòu)上低于被請求的級,則計算在這兩級之間的“距離”的度量。兩級之間的距離定義為在存儲的級中的成員數(shù)目與在被請求的級中的成員數(shù)目的比。每一級中的成員數(shù)目示于圖3A和3B。
如果存儲的級在層次結(jié)構(gòu)上不低于被請求的級的話,則為該維返回無窮大的距離,其依次導致要由該對象返回的一個無窮大成本,這一點十分明顯。
一旦為所有維計算距離后,則將這些距離乘在一起以給出該對象的總報價。如果所存儲的級不能被聚集到在任何特定維數(shù)中的被請求的級的話,則由該維返回的無窮大距離將導致由該對象返回的一個無窮大成本,因為在該乘法中的一個參數(shù)將是無窮大值。
可以看到,在這兩級中的成員數(shù)目的比是該距離的一個合適的度量,而不是例如在這兩級中的關鍵字數(shù)目之間的差,其理由如下。決定由每一劃分需要的處理能力以滿足該請求的關鍵數(shù)值是在該劃分對象中的項數(shù)和在被聚集的表中的項數(shù)之間的差,因為每一次聚集操作將使項數(shù)減1。例如,被3個項聚集到一個項中將對存儲的度量近似取兩次聚集操作(例如加)。在該被聚集的表中的項的數(shù)目對所有報價對象是一個常數(shù),因為它們都將返回同樣的被聚集數(shù)據(jù)。因此,只有在該劃分對象中的項數(shù)才對計算該聚集需要的近似處理時間有關。由于下述理由,該值與返回的比相關
如果R1、R2、…、Rn是在被請求的n個維數(shù)中的關鍵字值的數(shù)目,而S1、S2、…、Sn是在所討論的物理劃分的維數(shù)中的關鍵字值的數(shù)目,則報價值的等式如下 R1* R2*…Rn在所有場合是一個恒定值,所以 所以返回的報價與該維數(shù)中存儲的項的近似數(shù)目成正比,并相對于其它劃分為執(zhí)行該聚集的成本給出很好的估計。
為說明這一點,考慮被請求的劃分具有兩個維數(shù)。在這兩個維數(shù)中的被請求的級的成員數(shù)分別是50和3。
一個物理劃分在第一維數(shù)中的被存儲級上存儲有100個級成員,而在第二維數(shù)中的被存儲級上存儲有4個級成員。假定該劃分相當密集地分布,則在該劃分數(shù)據(jù)中近似有400個項需要被聚集到在被請求的劃分中的近似150個項。返回的報價將是2.67。
另一物理分區(qū)在第一維數(shù)中的被存儲級上存儲有67個級成員,而在第二維數(shù)中的被存儲級上存儲有6個級成員。假定該劃分相當密集地分布,則在該劃分數(shù)據(jù)中也近似有400個項需要被聚集到在被請求的劃分中的近似150個項中,所以聚集這一劃分的處理能力將近似等于聚集另一分區(qū)所需要的處理能力。在這一場合返回的報價類似地為2.68,這是適當?shù)?,因為兩個劃分應該采取近似同樣的處理能力來執(zhí)行該聚集。
應該注意,這不與該聚集的絕對處理成本成正比,因為絕對成本近似地與(S1*S2*…Sn)-(R1*R2*…Rn)成正比,存儲的項數(shù)和被請求的項數(shù)之間的差。例如,將400項聚集成199項的處理要比將200項聚集成同樣199項的處理(其只需要一次聚集操作)需要多數(shù)十倍。但是在后一場合返回的報價將為兩倍大。
顯然在考慮進去該聚集算法中的已知模式、已知強度和在劃分中的可能的稀疏程度時,報價算法可以受啟發(fā)改變。
如果未指定與存儲的數(shù)據(jù)相關的一個或者多個維數(shù),則認為該請求為仿佛該維數(shù)在“所有數(shù)據(jù)”級被請求,“所有數(shù)據(jù)”級有一個成員,一個維數(shù)的所有項都與之相關。如果一個劃分具有在該維數(shù)中較低級存儲的數(shù)據(jù),則為該維數(shù)返回的比將近似為在該存儲級內(nèi)的關鍵字值的數(shù)目(除以單位),于是該報價準確反應所需要的聚集的數(shù)量。
應該注意,不同的數(shù)據(jù)級可以存儲在不同的數(shù)據(jù)庫或不同的應用服務器自身中。給與每一劃分25關聯(lián)的劃分對象提供如何輪詢合適的數(shù)據(jù)庫以便在任何特定級檢索數(shù)據(jù)的知識。
現(xiàn)在參考圖3到5給出報價系統(tǒng)操作的一例。在該例中,有兩個維數(shù),顧客和時期,它們包含圖3A和3B中所示的級。有3個物理劃分22存儲在數(shù)據(jù)庫25中。劃分P1包含每日的顧客數(shù)據(jù),P2包含每月城區(qū)數(shù)據(jù),而P3包含每日地區(qū)數(shù)據(jù)。
有12個可以請求的可能的級交集。因為在這些交集中只有3個實際存在,因此說交集的矩陣是稀疏矩陣。這一矩陣在圖4中表示。圖4中的空元素指示必須“隨時”產(chǎn)生的級交集。使用先前的技術,利用存儲的劃分,必須為每一可能的交集建立一項來指定使用哪一劃分。必須建立虛擬劃分來強迫服務器使用一定的物理劃分。例如,交集3.3包括一個指示,說明系統(tǒng)管理員已建立一個虛擬劃分來強迫該服務器在產(chǎn)生年-地區(qū)記錄時使用物理劃分P1。
使用本發(fā)明的方法,通過簡單直接查詢表示每一物理劃分的對象和定義的任何虛擬劃分,可以避免建立每一可能級交集的矩陣。
使用上述算法來為任何請求的交集決定要查詢哪一個物理劃分來滿足該請求。這通過根據(jù)在每一級內(nèi)的成員決定在每一維數(shù)內(nèi)必須聚集多少成員來產(chǎn)生該被請求的交集而完成。圖5為每一可能的級交集指示每一物理劃分對象的報價是什么,以及給出這些報價后,指示需要查詢哪一個劃分來滿足該請求的圖。在該例中,虛擬劃分對象V1通過返回為1的報價強迫物理劃分P1,如果是請求年-地區(qū)記錄的話。
根據(jù)本發(fā)明的第二實施例,不需要物理劃分包含所表示的事實集中的所有數(shù)據(jù)。例如,一個物理劃分可能只包含1997年在東部地區(qū)銷售的所有產(chǎn)品,而另一個可能包含1997年在西部地區(qū)銷售的所有產(chǎn)品。由于存儲的效率,或者因為所進行的許多請求只要求西部地區(qū)或東部地區(qū),對這些請求的結(jié)果只需分析合適地區(qū)的數(shù)據(jù)而無需來自其它地區(qū)的額外數(shù)據(jù)而可以更加高效地返回的原因而可以這樣做。從內(nèi)部表示或者從劃分對象返回的數(shù)據(jù)給數(shù)據(jù)提供對象提供關于與某一級相關的哪一個級成員由每一劃分存儲的信息。如果在它們之間兩個或者多個劃分滿足一個請求(例如,一個有東部地區(qū)的數(shù)據(jù),另一個有西部地區(qū)的數(shù)據(jù)),它們都將返回同一報價,而數(shù)據(jù)提供對象將請求每一劃分聚集其內(nèi)的數(shù)據(jù)。然后數(shù)據(jù)提供對象組合所有這些對象返回的數(shù)據(jù),并適當?shù)剌敵鲞@一數(shù)據(jù)。
盡管圖示和說明了本發(fā)明的優(yōu)選實施例,但是本技術領域具有普通技能的人理解,可以進行改變和修改而不離開本發(fā)明更廣的范圍。下面的權(quán)利要求敘述了本發(fā)明的各種特征。
權(quán)利要求
1.一個聚集數(shù)據(jù)的系統(tǒng),包括在至少一個維中的多個級中的一級上作為事實數(shù)據(jù)表存儲數(shù)據(jù)的設備;提供為聚集每一事實數(shù)據(jù)表到在至少一個維中的一個被請求的級組所需要的處理量的估計的設備;選擇與用以執(zhí)行聚集的最低估計相關的數(shù)據(jù)表的設備;以及聚集與到被請求的級組的最低估計相關的數(shù)據(jù)表中的數(shù)據(jù)的設備。
2.根據(jù)權(quán)利要求1的聚集數(shù)據(jù)的系統(tǒng),其中,所述提供估計的設備包括劃分對象,每一劃分對象包括與所述數(shù)據(jù)表之一有關的信息,并給每一劃分對象提供響應對所述級組的數(shù)據(jù)請求返回一個報價的功能,該報價的值是被請求的級組和存儲的級組的一個函數(shù)。
3.根據(jù)權(quán)利要求1的系統(tǒng),其中,返回的估計與每一維中在存儲的級中的成員數(shù)目與在被請求的級中的成員數(shù)目的比在所有被請求的維上的乘積成正比。
4.一種聚集數(shù)據(jù)的方法,包括步驟在至少一個維中的多個級中的一級上作為事實數(shù)據(jù)表存儲數(shù)據(jù);提供為聚集每一事實數(shù)據(jù)表到在至少一個維中的一個被請求的級組所需要的處理量的估計;選擇返回用以執(zhí)行聚集的最低估計的數(shù)據(jù)表對象;以及聚集返回最低估計的數(shù)據(jù)表中的數(shù)據(jù)到被請求的級組。
5.根據(jù)權(quán)利要求4的方法,其中,所述提供估計的步驟包括發(fā)送對報價的請求到一個劃分對象,所述劃分對象包括與所述數(shù)據(jù)表之一有關的信息,包括其內(nèi)存儲的級組,以及給所述劃分對象另外提供響應對所述級組的數(shù)據(jù)的請求返回一個報價的功能,所述報價的值是被請求的級組和存儲的級組的一個函數(shù)。
6.根據(jù)權(quán)利要求5的系統(tǒng),其中,返回的估計與每一維中在存儲的級中的成員數(shù)目與在被請求的級中的成員數(shù)目的比在所有請求的維上的乘積成正比。
全文摘要
提供一個系統(tǒng),用于選擇一個適當?shù)谋痪奂氖聦崝?shù)據(jù)表(20),用作從一組存儲的被聚集的事實數(shù)據(jù)表(22)中計算一個聚集請求的基礎。建立為聚集每一表所需要的處理時間量的估計。然后使用具有最低估計的表執(zhí)行聚集。
文檔編號G06F12/00GK1292126SQ99803527
公開日2001年4月18日 申請日期1999年11月3日 優(yōu)先權(quán)日1998年11月3日
發(fā)明者詹姆斯P·羅杰斯 申請人:白金技術有限公司