欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

通過有選擇地使用屬性或關(guān)鍵字值優(yōu)化查詢生成的方法和裝置的制作方法

文檔序號:6418845閱讀:297來源:國知局
專利名稱:通過有選擇地使用屬性或關(guān)鍵字值優(yōu)化查詢生成的方法和裝置的制作方法
化查詢生成的方法和裝置本發(fā)明涉及查詢數(shù)據(jù)庫中的數(shù)據(jù),更具體說,涉及選擇適當(dāng)查詢參數(shù)來高效執(zhí)行查詢的方法。
數(shù)據(jù)庫通常在一個(gè)或者多個(gè)表示某些性質(zhì)的實(shí)例數(shù)據(jù)的事實(shí)表中存儲數(shù)據(jù),以及用維數(shù)表定義事實(shí)表中的數(shù)據(jù)的屬性。如

圖1所示,事實(shí)表具有每一個(gè)表示與所涉及的實(shí)例相關(guān)的一個(gè)特定維數(shù)的一個(gè)元素的列和一個(gè)或者多個(gè)包含與特定實(shí)例有關(guān)的數(shù)據(jù)的度量列。該度量常常是數(shù)值,它們在事實(shí)數(shù)據(jù)中的記錄被分組歸集時(shí)可以以某種方式合計(jì)。例如,這些項(xiàng)可以求和或求平均。然而,也可以不是這樣,事實(shí)表中的某些度量列中的“度量數(shù)據(jù)”可以只是任意字符串或不能合計(jì)的其它類型的值。本發(fā)明操作任何類型的事實(shí)表,只要它涉及一個(gè)或者多個(gè)具有屬性的維數(shù)。
維數(shù)表示在一個(gè)類中的實(shí)體的有界集合,每類具有一個(gè)或者多個(gè)屬性,這些屬性可以以普通方式分類。維數(shù)通常在一個(gè)維數(shù)表中表示,表中有一列或者多列,唯一標(biāo)識在該維數(shù)中的每一實(shí)體,稱為關(guān)鍵字值。關(guān)鍵字值常常是給予在該維數(shù)中的實(shí)體的任意標(biāo)識符,用于唯一標(biāo)識它們。該表中的其它列,可能包括一個(gè)關(guān)鍵字列,提供每一實(shí)體的不同屬性??梢允褂眠@些屬性值在不同級上分組在該維數(shù)表中的實(shí)體,以及根據(jù)數(shù)據(jù)的屬性從事實(shí)表中抽取或合計(jì)它們。
為空間效率,和為避免可能引起數(shù)據(jù)庫中不一致的冗余,只在事實(shí)數(shù)據(jù)表中存儲每一維數(shù)的關(guān)鍵字值。應(yīng)該注意,如果更有效的話,可以把與所討論的維數(shù)中的關(guān)鍵字值具有一對一的對應(yīng)表的內(nèi)部表示存儲在事實(shí)表中。用戶永遠(yuǎn)看不到這些。在這種場合,為了本討論的目的可認(rèn)為內(nèi)部表示是關(guān)鍵字值。
在本專利申請中的查詢例子以SQL語言給出,因?yàn)樗@然是今天使用的最普遍的查詢語言。然而,顯然,可以以其它查詢語言同樣有效地實(shí)現(xiàn)這里說明的本發(fā)明。
如果使用由用戶請求的屬性值對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢,則必需在該查詢中包括維數(shù)表,如下例SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM fact,dim1,dim2,dim3WHEREdim1.key1=fact.key1 ANDdim2.key2=fact.key2 ANDdim3.key3=fact.key3 ANDdim1.a(chǎn)ttr1 in(attrval11,attrval12,…,attrval1N) ANDdim2.a(chǎn)ttr2 in(attrval21,attrval22,…,attrval2P) ANDdim3.a(chǎn)ttr3 in(attrval31,attrval32,…,attrval3Q);在這一類型查詢中,查詢中指定的表在每一表中的任何公共字段上連接在一起。在上面的例子中,key1字段對于dim1表和事實(shí)表兩者是公共的。key2字段對于dim2表和事實(shí)表兩者是公共的。key3字段對于dim3表和事實(shí)實(shí)兩者是公共的。
使用這樣的連接,在輸出表中為兩個(gè)連接的表中的項(xiàng)的所有組合建立一個(gè)項(xiàng),這里,在每一表中的連接字段是相同的。被連接的字段只在輸出的連接表中出現(xiàn)一次。例如,連接圖2A和2B中所示的兩個(gè)表產(chǎn)生圖2C中所示的輸出表。
然而,如果在每一維數(shù)中選擇的屬性值的初始映射是對在該維數(shù)中的關(guān)鍵字值進(jìn)行的話,則不必在查詢中連接維數(shù)表和事實(shí)表,因?yàn)樗斜匦璧男畔⒃谑聦?shí)表中。例如,該查詢可能讀作SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM factWHEREfact.key1 in(val11,val12,…,val1N) ANDfact.key2 in(val21,val22,…,val2P) ANDfact.key3 in(val31,val32,…,val3Q);這常常比等價(jià)的屬性邏輯查詢有效得多,這取決于數(shù)據(jù)庫如何處理該查詢,因?yàn)榫S數(shù)表不需要被包含在該查詢中。此外,數(shù)據(jù)庫引擎由于各種優(yōu)化,處理關(guān)鍵字值能夠比處理屬性更加有效。
可以例如通過用每一維數(shù)中的關(guān)鍵字值索引事實(shí)表來優(yōu)化數(shù)據(jù)庫。然后通過掃描在該索引中各關(guān)鍵的所有條目可以很快地找到合適的事實(shí)數(shù)據(jù),使其包含在結(jié)果數(shù)據(jù)集中,因?yàn)榕c某特定關(guān)鍵字關(guān)聯(lián)的索引是連續(xù)排列的。
如果數(shù)據(jù)庫使用了這種基于優(yōu)化模式的索引的話,則即使當(dāng)對關(guān)鍵字值查詢時(shí),下述類型的查詢在使用上常常更具優(yōu)點(diǎn),SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM fact,dim1,dim2,dim3WHEREdim1.key1=fact.key1 ANDdim2.key2=fact.key2 ANDdim3.key3=fact.key3 ANDfact.key1 in(val11,val12,…,val1N)ANDfact.key2 in(val21,val22,…,val2P)ANDfact.key3 in(val31,val32,val3Q);不管當(dāng)今的數(shù)據(jù)庫查詢工具使用什么查詢邏輯,它們所有都使用從請求到合適的SQL查詢的同樣變換,而不管通過使用選擇的查詢邏輯將要查詢的條目的數(shù)目。例如在某些場合,所取的選擇,特別在較高級的維數(shù)中,從某個(gè)維數(shù)表中產(chǎn)生很大數(shù)目匹配選擇標(biāo)準(zhǔn)的記錄。例如,有人可能詢問市場上所有信托基金的所有股票基金。事實(shí)上,可能有數(shù)百個(gè)維數(shù)條目匹配該選擇標(biāo)準(zhǔn)。如果數(shù)據(jù)庫查詢工具自動(dòng)建立把選擇的維數(shù)屬性條目轉(zhuǎn)換為在該基金維數(shù)中的關(guān)鍵字值的話,則將檢索這些維數(shù)以發(fā)現(xiàn)匹配選擇標(biāo)準(zhǔn)的關(guān)鍵字值。然后使用一個(gè)“IN”表把所涉及的條目加到該查詢上,如同上面所示。當(dāng)關(guān)鍵字值的數(shù)目非常大時(shí)會產(chǎn)生一個(gè)問題。大多數(shù)數(shù)據(jù)庫系統(tǒng)對在單一“IN”表中的值數(shù)目有限制,因此查詢工具必須把該查詢分成多個(gè)查詢,在數(shù)據(jù)庫中檢索。此外,即使未索引維數(shù),與使用少數(shù)查詢屬性值和在該查詢中引入維數(shù)來執(zhí)行查詢相比,只使用事實(shí)表來執(zhí)行具有相當(dāng)大的數(shù)目關(guān)鍵字值的查詢事實(shí)上可能需要更長時(shí)間。例如,對于一個(gè)數(shù)據(jù)庫引擎來說查閱相關(guān)維數(shù)表的一個(gè)屬性值和檢驗(yàn)它是否匹配與查看一個(gè)關(guān)鍵字值是否匹配幾乎一樣快。如果在該等價(jià)查詢中的關(guān)鍵字值要比屬性值的數(shù)目顯著多的話,則在相關(guān)維數(shù)中查閱這些屬性值要比檢驗(yàn)所有關(guān)鍵字值查看它們中的一個(gè)是否匹配幾乎肯定更快。
可以看到,需要一種查詢工具,它可以根據(jù)所查詢的實(shí)際屬性在可選擇的查詢結(jié)構(gòu)之間選擇。
本發(fā)明提供一種從包括來自一個(gè)或者多個(gè)維數(shù)中的屬性的數(shù)據(jù)請求產(chǎn)生查詢的方法,其中,確定這些屬性的相應(yīng)的關(guān)鍵字值,然后根據(jù)執(zhí)行該查詢所必需的關(guān)鍵字值和屬性的數(shù)目作出決定在查詢中是使用屬性邏輯還是使用關(guān)鍵字值邏輯。
圖1舉例表示3個(gè)類關(guān)系表和一個(gè)事實(shí)表。
圖2A和2B舉例表示兩個(gè)表。
圖2C表示圖2A和2B所示兩個(gè)表的連接。
圖3表示根據(jù)本發(fā)明的第一實(shí)施例的系統(tǒng)的部件。
圖4是表示根據(jù)本發(fā)明的第一實(shí)施例的選擇算法的流程圖。
現(xiàn)在參考圖3-4說明本發(fā)明的一個(gè)特定的實(shí)施例。
如圖3所示,在應(yīng)用程序服務(wù)器2上作為一個(gè)對象提供查詢發(fā)生器20。該查詢發(fā)生器接受外部請求,并從其產(chǎn)生SQL查詢。然后把SQL查詢發(fā)送到數(shù)據(jù)庫引擎4,它從數(shù)據(jù)庫6中檢索請求的數(shù)據(jù)。然后把返回的數(shù)據(jù)從數(shù)據(jù)庫引擎回送到應(yīng)用程序服務(wù)器,要么返回到請求者,要么處理后送到某個(gè)地方,例如到顯示服務(wù)器10。
應(yīng)用程序服務(wù)器還存儲在有關(guān)要被檢索的事實(shí)數(shù)據(jù)的數(shù)據(jù)庫中的維數(shù)的復(fù)制品12。當(dāng)查詢發(fā)生器接收到包含一個(gè)或者多個(gè)屬性的請求時(shí),該查詢發(fā)生器檢索所有維數(shù)條目,識別所有需要的關(guān)鍵字值。這也可以使用對數(shù)據(jù)庫服務(wù)器的查詢而實(shí)現(xiàn),但是效率很低。
然后查詢發(fā)生器20確定,如何使用下面的邏輯產(chǎn)生該查詢,所述邏輯在圖4中作為流程圖表示。
對于每一維數(shù),如果關(guān)鍵字值的數(shù)目小于某個(gè)實(shí)驗(yàn)確定的閾值的話,則認(rèn)為簡單比較該關(guān)鍵字值和在事實(shí)表中的值來獲得該查詢的結(jié)果很可能更有效。對于申請人對其實(shí)施本實(shí)施例的系統(tǒng),這一閾值的理想值被發(fā)現(xiàn)是30。在這一場合產(chǎn)生的查詢不包括維數(shù)而只在事實(shí)數(shù)據(jù)上進(jìn)行(稱為相對于這一維數(shù)的“無”(“without”)查詢,因?yàn)榫S數(shù)不需要)。例如,可以產(chǎn)生下面的查詢。SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM factWHEREfact.key1 in(val11,val12,…,val1N)AND
然而,如果關(guān)鍵字的數(shù)目超過某個(gè)預(yù)定閾值,則產(chǎn)生的查詢將依賴于事實(shí)表是否有對該維數(shù)的索引而變化。
如上所述,如果該維數(shù)被索引,則來自該維數(shù)的一個(gè)關(guān)鍵字值可以被很快地映射到事實(shí)表中包含該關(guān)鍵字值的適合的條目。
如果該維數(shù)關(guān)鍵字被索引,則執(zhí)行比較,查看將在該查詢中出現(xiàn)的關(guān)鍵字值的數(shù)目是否超過屬性值的數(shù)目乘以某個(gè)預(yù)定常數(shù)A,A同樣由實(shí)驗(yàn)確定。對于由申請人對其實(shí)施本實(shí)施例的系統(tǒng),這一閾值的理想值發(fā)現(xiàn)是30,但應(yīng)該注意,該值與上面討論的閾值無關(guān)。
如果關(guān)鍵字值的數(shù)目超過該值,則認(rèn)為屬性邏輯可能更有效,并且產(chǎn)生一個(gè)屬性查詢。例如,可能產(chǎn)生一個(gè)包括下述術(shù)語的“帶連接”的查詢。術(shù)語“帶連接”(with join)指的是這一事實(shí),即在事實(shí)表和所討論的維數(shù)表之間執(zhí)行連接,其已參考圖2A-2C討論。應(yīng)該注意,所有基于屬性的查詢是相對于該維數(shù)的“帶連接”的查詢,因?yàn)閷傩灾挡唤柚诰S數(shù)表不可能被確定。SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM fact,dim1WHEREdim1.key1=fact.key1 ANDdim1.a(chǎn)ttrl in(attrval11,attrval12,…,attrval1N);然而,如果關(guān)鍵字值的數(shù)目不超過屬性值數(shù)目乘以常數(shù)A的話,則使用數(shù)據(jù)庫引擎優(yōu)化的索引產(chǎn)生一個(gè)基于關(guān)鍵字值的、在其內(nèi)包括該維數(shù)的“帶連接”的查詢。該查詢可以包括下面的語句SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM fact,dim1WHEREdim1.key1=fact.key1 ANDfact.key1 in(val11,val12,…,val1N)AND…;如果所討論的維數(shù)未索引,則使用關(guān)鍵字值的優(yōu)點(diǎn)很少,如果畢竟還有什么優(yōu)點(diǎn)的話。例如,對一個(gè)數(shù)據(jù)庫引擎來說,在相關(guān)維數(shù)表中查閱一個(gè)屬性值看其是否匹配,和看一個(gè)關(guān)鍵字值是否匹配幾乎一樣快。因此,在這種場合,把關(guān)鍵字值的數(shù)目和屬性值的數(shù)目作一簡單比較,而不去長時(shí)間建立一個(gè)實(shí)驗(yàn)系數(shù)。然而,取決于數(shù)據(jù)庫引擎,如果合適的話可以使用這樣一個(gè)系數(shù)。
如果關(guān)鍵字值的數(shù)目大于在該維數(shù)查詢中將使用的屬性值的數(shù)目的話,則在該查詢中為該維數(shù)使用一個(gè)“帶連接”的屬性查詢。否則,為該維數(shù)使用一個(gè)“無連接”的關(guān)鍵字查詢,因?yàn)樵跈z索中包含維數(shù)沒有優(yōu)點(diǎn),因?yàn)樗醋魉饕?br> 這一選擇算法為每一維數(shù)重復(fù),然后適當(dāng)產(chǎn)生查詢并傳送到數(shù)據(jù)庫查詢引擎。
當(dāng)然,取決于在每一維數(shù)中的查詢的不同性質(zhì),在每一維數(shù)中可以進(jìn)行不同連接??梢栽诓樵冎邪承┚S數(shù),而不包括其它維數(shù)。此外,某些維數(shù)可以包括屬性邏輯,而其它維數(shù)不包括。例如,可以產(chǎn)生下面完整的查詢,在該查詢中包括第一維數(shù)和第三維數(shù),前者使用關(guān)鍵字值邏輯,而后者使用屬性值邏輯。SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.2FROM fact,dim1,dim3WHEREdim1.key1=fact.key1 ANDdim3.key3=fact.key3 ANDdim1.key1 in(val11,val12,…,val1N)AND…;fact.key2 in(val21,val22,…,val2P)AND…;dim2.a(chǎn)ttr3 in(attrval31,attrval32,…,attrval3Q);某些請求比迄今敘述的更加復(fù)雜。例如,當(dāng)用戶從一個(gè)維數(shù)中進(jìn)行多個(gè)單獨(dú)的選擇(“保持”)時(shí)出現(xiàn)“多重保持”請求。在這一場合產(chǎn)生的查詢需要在WHERE子句中使用“或”邏輯來模擬這一情況。例如,假定當(dāng)用戶從維數(shù)dim1中選擇時(shí)進(jìn)行多重“保持”。第一保持包括屬性attr1和attr2,而第二保持包括屬性attr3和attr4。所產(chǎn)生的查詢應(yīng)為SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.m2,fact.m3FROM fact,dim1 WHERE dim1.key1= fact.key1 AND((dim1.a(chǎn)ttr1 in(attrval11,…attrval1N)ANDdim1.a(chǎn)ttr2 in(attrval21,…attrval2N)OR
(dim1.a(chǎn)ttr3 in(attrval31, … attrval3N)ANDdim1.a(chǎn)ttr4 in(attrval41,…attrval4N))AND fact.key2 in(val21,val22,…,val2N)AND fact.key3 in(val31,val32,…,val3N)根據(jù)本實(shí)施例,通過這種類型的查詢,在基于屬性的查詢中參考的每一屬性在上面的算法中作為一個(gè)屬性計(jì)數(shù)。使用關(guān)鍵字值的等效查詢具有和前面說明的同樣的格式,具有一個(gè)簡單的“IN”表,因此對建立關(guān)鍵字值的數(shù)目不增加復(fù)雜性。
當(dāng)用戶選擇包括一個(gè)“基”計(jì)算的度量(亦即類似份額的“某種東西”)時(shí),會出現(xiàn)更復(fù)雜的情況。這通常從給定維數(shù)中調(diào)用“幕后”的附加選擇。關(guān)鍵字邏輯通過在該維數(shù)的關(guān)鍵字表中的附加的關(guān)鍵字值解決這一情況。屬性邏輯需要在涉及多重“保持”的語義之上執(zhí)行附加的“或”運(yùn)算。我們假定(在從上述例子的多重“保持”之上)用戶選擇一個(gè)“基”計(jì)算,它調(diào)用維數(shù)dim1中的附加選擇,比方說從屬性attr5。該查詢看起來如下SELECT fact.key1,fact.key2,fact.key3,fact.ml,fact.m2,fact.m3FROM fact,dim1WHEREdim1.key1=fact.key1AND( ((diml.a(chǎn)ttr1 in(attrval11,…attrval1N)ANDdim1.a(chǎn)ttr2 in(attrval21,…attrval2N))OR(dim1.a(chǎn)ttr3 in(attrval31,…attrval3N) ANDdim1.a(chǎn)ttr4 in(attrval41,…attrval4N)))ORdim1.a(chǎn)ttr5 in(attrval51,…,attrval5N))AND fact.key2 in(val21,val22,…,val2N)這種情況以和“多重保持”情況類似方式處理。
應(yīng)該注意,可以與屬性邏輯選項(xiàng)一起使用星形連接選項(xiàng),某些維數(shù)根據(jù)一個(gè)索引的維數(shù)使用星形連接,某些維數(shù)使用標(biāo)準(zhǔn)的屬性邏輯。假定為維數(shù)dim1使用一個(gè)簡單的屬性邏輯的例子,則查詢看起來如下SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.m2,fact.m3FROM fact,dim1,dim2,dim3WHEREdim1.key1=fact.key1AND dim2.key2=fact.key2AND dim3.key3=fact.key3ABD(dim1.a(chǎn)ttr1 in(attrval11,..a(chǎn)ttrval1N)AND dim1.a(chǎn)ttr2 in(attrval21,..a(chǎn)ttrval2N)AND dim1.a(chǎn)ttrN in(attrvalN1,…attrvalNN))AND dim2.key2 in(val21,val22,…,val2N)AND dim3.key3 in(val31,val32,…,val3N)在這一實(shí)施例的系統(tǒng)中,用戶輪廓文件允許建立返回到用戶的數(shù)據(jù)的子集。用戶將只訪問他具有特權(quán)看的那些記錄。數(shù)據(jù)庫(base)使用一個(gè)過濾機(jī)構(gòu)來實(shí)現(xiàn)這一點(diǎn)。從屬性邏輯的觀點(diǎn)看,用戶輪廓文件是一組維數(shù)選擇,它們確定用戶可以訪問的數(shù)據(jù)的子集。假定為維數(shù)dim1的用戶輪廓文件定義用戶只可以訪問屬性attrK的值在給定值表中的那些記錄,則由屬性邏輯產(chǎn)生的查詢可以看起來如下SELECT fact.key1,fact.key2,fact.key3,fact.m1,fact.m2,fact.m3FROM fact,dim1WHERE dim1.key1=fact.key1AND (dim1.a(chǎn)ttr1 in(attrval11,..a(chǎn)ttrval1N)AND dim1.a(chǎn)ttr2 in(attrval21,..a(chǎn)ttrval2N)AND dim1.a(chǎn)ttrK in(attrvalK1,…attrvalKN))AND fact.key2 in(val21,val22,…,val2N)AND fact.key3 in(val31,val32,…,val3N)所提到的每一屬性值作為在本發(fā)明的該實(shí)施例的算法中的單一屬性值對待。
屬性邏輯不受劃分的事實(shí)集影響。在物理劃分的場合,使用一個(gè)聚集表定義每一劃分。通常,使用所述邏輯對每一劃分發(fā)布查詢。
盡管圖示和說明了本發(fā)明的優(yōu)選實(shí)施例,但是本技術(shù)領(lǐng)域具有普通技能的人理解,可以進(jìn)行改變和修改而不離開本發(fā)明的更廣闊的范圍。在下面的權(quán)利要求中敘述本發(fā)明的各種特征。
權(quán)利要求
1.一種產(chǎn)生用于從數(shù)據(jù)庫中獲取數(shù)據(jù)的查詢的方法,所述數(shù)據(jù)庫包括事實(shí)表和至少一個(gè)維數(shù)表;每一維數(shù)表提供表示一個(gè)維數(shù)的數(shù)據(jù),所述數(shù)據(jù)包括一組實(shí)體的一組屬性中的屬性值,每一實(shí)體由一個(gè)關(guān)鍵字值標(biāo)識;所述事實(shí)表包括數(shù)據(jù)項(xiàng),每一數(shù)據(jù)項(xiàng)與來自每一所述維數(shù)的一個(gè)實(shí)體相關(guān);所述查詢基于指定來自一個(gè)或者多個(gè)所述維數(shù)中的一個(gè)或者多個(gè)所述屬性值的數(shù)據(jù)請求;對于每一維數(shù),所述方法包括步驟在所述維數(shù)中建立,與在所述維數(shù)中的所述屬性值相關(guān)的所有關(guān)鍵字值;作為在所述維數(shù)中的所述關(guān)鍵字值的數(shù)目和所述屬性值的數(shù)目的函數(shù)選擇是對在該維數(shù)中的關(guān)鍵字值還是屬性值進(jìn)行查詢;以及如果選擇屬性值查詢的話,則使用屬性值產(chǎn)生相應(yīng)于該維數(shù)的所述查詢的部分;如果選擇關(guān)鍵字值查詢的話,則使用關(guān)鍵字值產(chǎn)生相應(yīng)于該維數(shù)的所述查詢的部分。
2.根據(jù)權(quán)利要求1的方法,其中,所述選擇對關(guān)鍵字值還是對屬性值查詢的步驟包括比較所述關(guān)鍵字值的數(shù)目與一個(gè)閾值,和如果關(guān)鍵字值的數(shù)目小于一個(gè)預(yù)定值,則對事實(shí)數(shù)據(jù)表使用關(guān)鍵字值查詢實(shí)現(xiàn)相應(yīng)于該維數(shù)的查詢的部分的步驟。
3.根據(jù)權(quán)利要求2的方法,其中,如果在所述維數(shù)中的關(guān)鍵字值數(shù)目大于所述預(yù)定閾值,則使用屬性值實(shí)現(xiàn)相應(yīng)于該維數(shù)的查詢的部分,如果為實(shí)現(xiàn)所述查詢必需的關(guān)鍵字值對屬性值的比低于某個(gè)比值的話;或使用關(guān)鍵字值實(shí)現(xiàn)相應(yīng)于該維數(shù)的查詢的部分,如果所述比高于所述比值的話。
4.根據(jù)權(quán)利要求3的方法,其中,所述比值根據(jù)該維數(shù)是否索引而變化。
5.根據(jù)權(quán)利要求3的方法,其中,如果使用關(guān)鍵字值實(shí)現(xiàn)所述查詢的所述部分,則只使用事實(shí)數(shù)據(jù)表實(shí)現(xiàn)所述查詢的所述部分,如果所述維數(shù)未索引的話;或通過連接事實(shí)數(shù)據(jù)表與相應(yīng)維數(shù)表并相對于在所述連接的維數(shù)表中的維數(shù)關(guān)鍵字查詢來實(shí)現(xiàn)所述查詢,如果所述維數(shù)進(jìn)行了索引的話。
6.產(chǎn)生從數(shù)據(jù)庫中獲取數(shù)據(jù)的查詢的裝置,所述數(shù)據(jù)庫包括事實(shí)表和至少一個(gè)維數(shù)表;每一維數(shù)表提供表示一個(gè)維數(shù)的數(shù)據(jù),所述數(shù)據(jù)包括一組實(shí)體的一組屬性中的屬性值,每一實(shí)體由一個(gè)關(guān)鍵字值標(biāo)識所述事實(shí)表包括數(shù)據(jù)項(xiàng),每一數(shù)據(jù)項(xiàng)與來自每一所述維數(shù)的一個(gè)實(shí)體相關(guān),所述查詢基于指定從一個(gè)或者多個(gè)所述維數(shù)中的一個(gè)或者多個(gè)所述屬性值的數(shù)據(jù)請求,所述裝置包括為在每一維數(shù)中建立所有關(guān)鍵字值的設(shè)備,所述關(guān)鍵字值與在所述維數(shù)中的所述屬性值相關(guān);作為所述維數(shù)中的所述關(guān)鍵字值的數(shù)目和所述屬性值的數(shù)目的函數(shù)選擇對在該維數(shù)中的關(guān)鍵字值還是屬性值進(jìn)行查詢的設(shè)備;用于在選擇屬性值查詢時(shí)使用屬性值產(chǎn)生相應(yīng)于該維數(shù)的所述查詢的部分的設(shè)備;用于在選擇關(guān)鍵字值查詢時(shí)則使用關(guān)鍵字值產(chǎn)生相應(yīng)于該維數(shù)的所述查詢的部分的設(shè)備。
全文摘要
提供一種連接數(shù)據(jù)庫(6)中兩組或多組數(shù)據(jù)的方法,其中,設(shè)計(jì)事實(shí)數(shù)據(jù)中的某個(gè)維數(shù)(12)為被強(qiáng)迫維數(shù),以及對于每一被強(qiáng)迫維數(shù),當(dāng)且僅當(dāng)至少一項(xiàng)存在于事實(shí)數(shù)據(jù)中,其具有與除被強(qiáng)迫維數(shù)外的維數(shù)中同樣的關(guān)鍵字值組時(shí),在事實(shí)數(shù)據(jù)中產(chǎn)生一組項(xiàng),每一項(xiàng)具有除被強(qiáng)迫維數(shù)外的所有維數(shù)中同樣的關(guān)鍵字值,并且每一項(xiàng)具有為該維數(shù)的事實(shí)數(shù)據(jù)中存在的值組中的不同成員。
文檔編號G06F12/00GK1292125SQ99803525
公開日2001年4月18日 申請日期1999年11月3日 優(yōu)先權(quán)日1998年11月3日
發(fā)明者皮奧特·杰斯克·克里琴雅克 申請人:白金技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
肥西县| 民勤县| 伊川县| 全南县| 垣曲县| 靖江市| 吴堡县| 台山市| 景宁| 南安市| 宜良县| 富民县| 阳东县| 云浮市| 原平市| 普兰店市| 霍邱县| 芦溪县| 玉溪市| 炉霍县| 巴楚县| 平利县| 平武县| 微山县| 西盟| 玉田县| 兰西县| 依安县| 普兰店市| 陵川县| 三都| 金昌市| 阜阳市| 山西省| 双江| 孙吴县| 陆丰市| 桑日县| 景德镇市| 资溪县| 怀安县|