專(zhuān)利名稱(chēng):從數(shù)據(jù)庫(kù)提取信息的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及從數(shù)據(jù)庫(kù)提取信息的技術(shù),尤其涉及與包括第 一主計(jì)算和第二主計(jì)算的 一 系列主計(jì)算有關(guān)的技術(shù),其中第一
主計(jì)算對(duì)表示數(shù)據(jù)庫(kù)的數(shù)據(jù)集運(yùn)行第 一 選擇項(xiàng)以產(chǎn)生第 一 結(jié) 果,并且第二主計(jì)算對(duì)該第一結(jié)果運(yùn)行第二選擇項(xiàng)以產(chǎn)生第二
結(jié)果。
背景技術(shù):
經(jīng)常期望從數(shù)據(jù)庫(kù)提取特定信息,并且具體地,匯總數(shù)據(jù) 庫(kù)中的大量數(shù)據(jù)并以易懂的方式將匯總后的數(shù)據(jù)呈現(xiàn)給用戶(hù)。 這種數(shù)據(jù)處理通常由計(jì)算機(jī)來(lái)執(zhí)行,并且可能要求計(jì)算機(jī)的極 大的存儲(chǔ)性能和處理能力。該數(shù)據(jù)處理可以旨在例如通過(guò)以數(shù)
據(jù)透視表或以2D和3D圖表圖形地可視化所選擇的數(shù)據(jù)來(lái)創(chuàng)建 通常已知為多維立方體的大型數(shù)據(jù)結(jié)構(gòu),反過(guò)來(lái)用戶(hù)可以訪問(wèn) 該數(shù)據(jù)結(jié)構(gòu)從而研究該數(shù)據(jù)庫(kù)的數(shù)據(jù)。根據(jù)美國(guó)申請(qǐng)7058621 已知用于創(chuàng)建這種多維立方體的高效算法的例子,在此通過(guò)引 用而包含該申請(qǐng)。
與對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)運(yùn)行的多數(shù)其它算法相同,該現(xiàn)有技 術(shù)算法涉及一系列主計(jì)算,其中, 一個(gè)主計(jì)算的結(jié)果被后續(xù)的 主計(jì)算用作輸入數(shù)據(jù)。例如,在美國(guó)申請(qǐng)7058621的內(nèi)容中,將 數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄讀取至主存儲(chǔ)器,因而用戶(hù)可以選擇一個(gè)
或多個(gè)變量,并且可選地選擇各個(gè)這種變量的值或值的范圍, 從而使該算法提取數(shù)據(jù)庫(kù)中的數(shù)據(jù)記錄的相應(yīng)子集。所提取出 的子集形成了中間結(jié)果。然后,通過(guò)對(duì)所提取出的子集計(jì)算所 選擇的數(shù)學(xué)函數(shù)的值來(lái)計(jì)算該多維立方體,其中,基于所選擇
8的計(jì)算變量的集合進(jìn)行數(shù)學(xué)函數(shù)的求值,并且由所選擇的分類(lèi) 變量的集合給出該立方體的維度。
盡管現(xiàn)有技術(shù)算法是高效的,然而特別地如果要分析大量 數(shù)據(jù),則可能仍需要執(zhí)行大量運(yùn)算以創(chuàng)建該多維立方體。在這 種情況下,該算法可能對(duì)處理硬件設(shè)置不期望的高要求,并且/ 或者造成不期望的長(zhǎng)的計(jì)算時(shí)間。
發(fā)明內(nèi)容
本發(fā)明的目的是至少部分克服現(xiàn)有技術(shù)的上述限制中的一 個(gè)或多個(gè)限制。
通過(guò)根據(jù)獨(dú)立權(quán)利要求的方法、計(jì)算機(jī)可讀介質(zhì)和設(shè)備至 少部分實(shí)現(xiàn)了將從以下說(shuō)明得知的目的和其它目的,其中,由 從屬權(quán)利要求限定本發(fā)明的實(shí)施例。
本發(fā)明的第 一 方面是 一 種計(jì)算機(jī)實(shí)現(xiàn)的方法,用于從數(shù)據(jù) 庫(kù)提取信息,所述方法包括一系列主計(jì)算,所述一系列主計(jì)算 包括第一主計(jì)算和第二主計(jì)算,所述第一主計(jì)算對(duì)表示所述數(shù) 據(jù)庫(kù)的數(shù)據(jù)集運(yùn)行第 一 選擇項(xiàng)以產(chǎn)生第 一 結(jié)果,并且所述第二 主計(jì)算對(duì)所述第一結(jié)果運(yùn)行第二選擇項(xiàng)以產(chǎn)生第二結(jié)果,所述
方法還包括通過(guò)以下步驟高速緩存所述第一結(jié)果和所述第二結(jié)
果計(jì)算步驟,用于計(jì)算作為至少所述第一選擇項(xiàng)的函數(shù)的第 一選擇標(biāo)識(shí)符值,并且計(jì)算作為至少所述第二選擇項(xiàng)和所述第 一結(jié)果的函數(shù)的第二選擇標(biāo)識(shí)符值;以及存儲(chǔ)步驟,用于將所 述第一選擇標(biāo)識(shí)符值和所述第一結(jié)果以及所述第二選擇標(biāo)識(shí)符 值和所述第二結(jié)果分別作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。所提 取出的信息可以包括數(shù)據(jù)庫(kù)中的數(shù)據(jù)的分組、排序或聚合。
因而,在根據(jù)第一方面的方法中,第一結(jié)果和第二結(jié)果被 高速緩存在計(jì)算機(jī)存儲(chǔ)器中并且在所述方法的后續(xù)迭代中可重新使用,從而減少了執(zhí)行用于提取信息的第一主計(jì)算和/或第二 主計(jì)算的需要。該重新使用可以包括在后續(xù)迭代期間計(jì)算第一 選擇標(biāo)識(shí)符值和/或第二選擇標(biāo)識(shí)符值,并且訪問(wèn)數(shù)據(jù)結(jié)構(gòu)從而 可能檢索到第 一結(jié)果和/或第二結(jié)果。
在一個(gè)實(shí)施例中,所述方法還包括使用步驟,所述使用步 驟用于使用所述數(shù)據(jù)結(jié)構(gòu)以基于所述第一選擇項(xiàng)和所述第二選
擇項(xiàng)尋找所述第二結(jié)果,其中,所述使用步驟包括以下子步驟 (a)計(jì)算作為至少所述第 一 選擇項(xiàng)的函數(shù)的所述第 一 選擇標(biāo)識(shí) 符值;(b)基于所述第 一 選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象 以定位所述第一結(jié)果;(c)如果在子步驟(b)中找到了所述第一結(jié) 果,則計(jì)算作為所述第 一 結(jié)果和所述第二選擇項(xiàng)的函數(shù)的所述 第二選擇標(biāo)識(shí)符值,并且基于所述第二選擇標(biāo)識(shí)符值搜索所述 數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二結(jié)果;(d)如果在子步驟(b)中未 找到所述第一結(jié)果,則執(zhí)行所述第一主計(jì)算以產(chǎn)生所述第一結(jié) 果,計(jì)算作為所述第 一 結(jié)果和所述第二選擇項(xiàng)的函數(shù)的所述第
二選擇標(biāo)識(shí)符值,并且基于所述第二選擇標(biāo)識(shí)符值搜索所述數(shù) 據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二結(jié)果;以及(e)如果在子步驟(c) 或(d)中未找到所述第二結(jié)果,則執(zhí)行所述第二主計(jì)算以產(chǎn)生所 述第二結(jié)果。
在一個(gè)實(shí)施例中,所述方法還包括計(jì)算作為所述第一結(jié)果 的函數(shù)的第一結(jié)果標(biāo)識(shí)符值的步驟,其中,所述存儲(chǔ)步驟還包 括以下步驟將所述第 一 選擇標(biāo)識(shí)符值和所述第 一 結(jié)果標(biāo)識(shí)符 值作為關(guān)聯(lián)對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)中;以及將所述第 一 結(jié)果 標(biāo)識(shí)符值和所述第 一 結(jié)果作為關(guān)聯(lián)對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu) 中。
在一個(gè)實(shí)施例中,所述方法還包括使用步驟,所述使用步 驟用于使用所述數(shù)據(jù)結(jié)構(gòu)以基于所述第 一選擇項(xiàng)和所述第二選擇項(xiàng)尋找所述第二結(jié)果,其中,所述使用步驟包括以下子步驟 (a)計(jì)算作為至少所述第 一 選擇項(xiàng)的函數(shù)的所述第 一 選擇標(biāo)識(shí) 符值;(b)基于所述第 一 選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象 以定位所述第一結(jié)果標(biāo)識(shí)符值,并且基于所述第一結(jié)果標(biāo)識(shí)符 值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第一結(jié)杲;(c)如果在子 步驟(b)中找到了所述第一結(jié)果,則計(jì)算作為所述第一結(jié)果和所 述第二選擇項(xiàng)的函數(shù)的所述第二選擇標(biāo)識(shí)符值,并且基于所述 第二選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二結(jié) 果;(d)如果在子步驟(b)中未找到所述第一結(jié)果標(biāo)識(shí)符值或所述 第一結(jié)果,則執(zhí)行所述第一主計(jì)算以產(chǎn)生所述第一結(jié)果,計(jì)算 作為所述第一結(jié)果和所述第二選擇項(xiàng)的函數(shù)的所述第二選擇標(biāo) 識(shí)符值,并且基于所述第二選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的 對(duì)象以定位所述第二結(jié)果;以及(e)如果在子步驟(c)或(d)中未 找到所述第二結(jié)果,則執(zhí)行所述第二主計(jì)算以產(chǎn)生所述第二結(jié) 果。
在一個(gè)實(shí)施例中,在計(jì)算所述第二選擇標(biāo)識(shí)符值時(shí),由所 述第一結(jié)果標(biāo)識(shí)符值來(lái)表示所述第一結(jié)果。
在一個(gè)實(shí)施例中,所述方法還包括使用步驟,所述使用步 驟用于使用所述數(shù)據(jù)結(jié)構(gòu)以基于所述第一選擇項(xiàng)和所述第二選 擇項(xiàng)尋找所述第二結(jié)果,其中,所述使用步驟包括以下子步驟 (a)計(jì)算作為至少所述第 一選擇項(xiàng)的函數(shù)的所述第一選擇標(biāo)識(shí)
符值;(b)基于所述第 一 選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象 以定位所述第一結(jié)果標(biāo)識(shí)符值;(c)如果在子步驟(b)中找到了所 述第 一 結(jié)果標(biāo)識(shí)符值,則計(jì)算作為所述第 一 結(jié)果標(biāo)識(shí)符值和所 述第二選擇項(xiàng)的函數(shù)的所述第二選擇標(biāo)識(shí)符值,并且基于所述 第二選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二結(jié) 果;(d)如果在子步驟(b)中未找到所述第一結(jié)果標(biāo)識(shí)符值,則執(zhí)行所述第一主計(jì)算以產(chǎn)生所述第一結(jié)果,計(jì)算作為所述第一結(jié) 果的函數(shù)的所述第 一 結(jié)果標(biāo)識(shí)符值,計(jì)算作為所述第 一 結(jié)果標(biāo) 識(shí)符值和所述第二選擇項(xiàng)的函數(shù)的所述第二選擇標(biāo)識(shí)符值,并 且基于所述第二選擇標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位
所述第二結(jié)果;(e)如果在子步驟(c)中未找到所述第二結(jié)果,則 基于所述第 一 結(jié)果標(biāo)識(shí)符值搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所 述第一結(jié)果,并且執(zhí)行所述第二主計(jì)算以產(chǎn)生所述第二結(jié)果; (f)如果在子步驟(e)中未找到所述第一結(jié)果,則執(zhí)行所述第一主 計(jì)算以產(chǎn)生所述第 一 結(jié)果,并且執(zhí)行所述第二主計(jì)算以產(chǎn)生所 述第二結(jié)果;以及(g)如果在子步驟(d)中未找到所述第二結(jié)果, 則執(zhí)行所述第二主計(jì)算以產(chǎn)生所述第二結(jié)果。
在一個(gè)實(shí)施例中,所述方法還包括計(jì)算作為所述第二結(jié)果 的函數(shù)的所述第二結(jié)果標(biāo)識(shí)符值的步驟,其中,所述存儲(chǔ)步驟 還包括以下步驟將所述第二選擇標(biāo)識(shí)符值和所述第二結(jié)果標(biāo) 識(shí)符值作為關(guān)聯(lián)對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)中;以及將所述第二 結(jié)果標(biāo)識(shí)符值和所述第二結(jié)果作為關(guān)聯(lián)對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié) 構(gòu)中。
在一個(gè)實(shí)施例中,各個(gè)標(biāo)識(shí)符值在統(tǒng)計(jì)上是唯一的。 在一個(gè)實(shí)施例中,各個(gè)標(biāo)識(shí)符值是通過(guò)哈希函數(shù)生成的數(shù) 字指紋。例如,所述數(shù)字指紋可以包括至少256位。
在一個(gè)實(shí)施例中,所述方法還包括選"^性刪除步驟,所述 選擇性刪除步驟用于至少基于包含所述關(guān)聯(lián)對(duì)象的數(shù)據(jù)記錄的 大小,在所述數(shù)據(jù)結(jié)構(gòu)中選擇性地刪除所述數(shù)據(jù)記錄。所述選 擇性刪除步驟可以用于促進(jìn)刪除包含所述第 一結(jié)果的數(shù)據(jù)記 錄。在一個(gè)這種實(shí)施例中,所述方法包括將各數(shù)據(jù)記錄與權(quán)重 值相關(guān)聯(lián)的步驟,其中,作為各數(shù)據(jù)記錄的使用率參數(shù)、各數(shù) 據(jù)記錄的計(jì)算時(shí)間參數(shù)和各數(shù)據(jù)記錄的大小參數(shù)的函數(shù)而計(jì)算出所述權(quán)重值??梢酝ㄟ^(guò)計(jì)算由W^l^T/M給出的權(quán)重函數(shù)的值 來(lái)計(jì)算所述權(quán)重值,其中,U是所述使用率參數(shù),T是所述計(jì)算 時(shí)間參數(shù),并且M是所述大小參數(shù)。所述使用率參數(shù)的值在每 當(dāng)訪問(wèn)數(shù)據(jù)記錄時(shí)遞增,同時(shí)作為時(shí)間的函數(shù)指數(shù)遞減。所述 選擇性刪除步驟可以基于所述數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)記錄的所述權(quán) 重值。此外,所述選擇性刪除步驟可以基于所述數(shù)據(jù)結(jié)構(gòu)的當(dāng) 前大小和閾值之間的比4交而觸發(fā)。
在一個(gè)實(shí)施例中,所述數(shù)據(jù)庫(kù)是動(dòng)態(tài)數(shù)據(jù)庫(kù),并且作為至 少所述第 一 選擇項(xiàng)和所述數(shù)據(jù)集的函數(shù)而計(jì)算出所述第 一 選擇 標(biāo)識(shí)符值。
在一個(gè)實(shí)施例中,所述第一選擇項(xiàng)定義所述數(shù)據(jù)集中的字 段和各個(gè)字段的條件的集合,所述第一結(jié)果表示所述數(shù)據(jù)集的 子集,所述第二選擇項(xiàng)定義數(shù)學(xué)函數(shù)、所述第一結(jié)果中所包括 的一個(gè)或多個(gè)計(jì)算變量以及所述第一結(jié)果中所包括的一個(gè)或多 個(gè)分類(lèi)變量,所述第二結(jié)果是多維立方體數(shù)據(jù)結(jié)構(gòu),所述多維 立方體數(shù)據(jù)結(jié)構(gòu)包含針對(duì)各分類(lèi)變量的每個(gè)唯一值對(duì)所述一個(gè) 或多個(gè)計(jì)算變量運(yùn)行所述數(shù)學(xué)函數(shù)的結(jié)果。
本發(fā)明的第二方面是一種存儲(chǔ)有計(jì)算機(jī)程序的計(jì)算機(jī)可讀 介質(zhì),所述計(jì)算機(jī)程序用于在由計(jì)算機(jī)執(zhí)行時(shí)執(zhí)行根據(jù)第一方 面所述的方法。
本發(fā)明的第三方面是一種用于從數(shù)據(jù)庫(kù)提取信息的設(shè)備, 所述設(shè)備包括用于執(zhí)行一系列主計(jì)算的部件,所述一系列主計(jì) 算包括第一主計(jì)算和第二主計(jì)算,所述第一主計(jì)算對(duì)表示所述 數(shù)據(jù)庫(kù)的數(shù)據(jù)集運(yùn)行第 一 選擇項(xiàng)以產(chǎn)生第 一 結(jié)果,并且所述第 二主計(jì)算對(duì)所述第 一 結(jié)果運(yùn)行第二選擇項(xiàng)以產(chǎn)生第二結(jié)果,所 述設(shè)備還包括通過(guò)以下操作來(lái)高速緩存所述第 一 結(jié)果和所述第 二結(jié)果的部件計(jì)算作為至少所述第 一 選擇項(xiàng)的函數(shù)的第 一 選擇標(biāo)識(shí)符值,并且計(jì)算作為至少所述第二選擇項(xiàng)和所述第 一 結(jié)
果的函數(shù)的第二選擇標(biāo)識(shí)符值;以及將所述第 一 選擇標(biāo)識(shí)符值
和所述第一結(jié)果以及所述第二選擇標(biāo)識(shí)符值和所述第二結(jié)果分
別作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。
第三方面的設(shè)備同樣具有第一方面的方法的優(yōu)點(diǎn),并且可 以進(jìn)一步包括與以上針對(duì)第 一方面所述的任意實(shí)施例相對(duì)應(yīng)的
其它特征。
通過(guò)以下根據(jù)所附權(quán)利要求書(shū)和附圖的詳細(xì)說(shuō)明,本發(fā)明 的其它目的、特征、方面和優(yōu)點(diǎn)將變得明顯。
現(xiàn)在將參考所附示意圖更詳細(xì)地說(shuō)明本發(fā)明的實(shí)施例,其 中,使用相同的附圖標(biāo)記來(lái)標(biāo)識(shí)相應(yīng)的元件。
圖l示出包括從數(shù)據(jù)庫(kù)提取信息的一系列計(jì)算的處理,其 中,將標(biāo)識(shí)符和結(jié)果選擇性地存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中并且從該 計(jì)算機(jī)存儲(chǔ)器選擇性地檢索標(biāo)識(shí)符和結(jié)果。
圖2示出圖1中的處理的一個(gè)實(shí)施例。
圖3示出圖1中的處理的另 一 實(shí)施例。
圖4示出圖1中的處理的又一實(shí)施例。
圖5示出圖1中的處理的又一實(shí)施例。
圖6是圖5中的處理的典型流程圖。
圖7是以具體背景實(shí)現(xiàn)的圖5中的處理的概述。
圖8是用于實(shí)現(xiàn)本發(fā)明實(shí)施例的基于計(jì)算機(jī)的環(huán)境的框圖。
具體實(shí)施例方式
本發(fā)明涉及從數(shù)據(jù)庫(kù)提取信息的技術(shù)。為了便于理解,首 先將針對(duì)一般例來(lái)說(shuō)明一些基本原理。然后,將針對(duì)具體實(shí)現(xiàn)說(shuō)明不同的方面、特征和優(yōu)點(diǎn)。 一般例
圖l示出用于從數(shù)據(jù)庫(kù)DB提取信息的計(jì)算機(jī)實(shí)現(xiàn)的處理的 示例,其中可以將該信息存4諸在實(shí)現(xiàn)該處理的計(jì)算才幾外部,也 可以不將該信息存儲(chǔ)在實(shí)現(xiàn)該處理的計(jì)算機(jī)外部。提取處理包 括例如通過(guò)將原始數(shù)據(jù)集或范圍R 0讀取至計(jì)算機(jī)的主存儲(chǔ)器 (例如,RAM)來(lái)從數(shù)據(jù)庫(kù)DB提取該原始數(shù)據(jù)集RO。該原始數(shù)據(jù) 集R0可以包括數(shù)據(jù)庫(kù)DB的全體內(nèi)容或其子集。
圖1的處理包括進(jìn)行運(yùn)算以基于原始數(shù)據(jù)集R 0生成最終結(jié) 果R2的主計(jì)算過(guò)程P1、 P2的序列。具體地,第一過(guò)程P1對(duì)原始 數(shù)據(jù)集RO進(jìn)行運(yùn)算以產(chǎn)生中間結(jié)果Rl,并且第二過(guò)程P2對(duì)該中 間結(jié)果進(jìn)行運(yùn)算以產(chǎn)生最終結(jié)果R2。
由第 一 選擇項(xiàng)S1控制第 一 過(guò)程P1,該第 一 選擇項(xiàng)S1可以從 用戶(hù)輸入產(chǎn)生,也可以不從用戶(hù)輸入產(chǎn)生。類(lèi)似地,由第二選 擇項(xiàng)S2控制第二過(guò)程P2 ,該第二選擇項(xiàng)S2可以從用戶(hù)輸入產(chǎn) 生,也可以不乂人用戶(hù)輸入產(chǎn)生。各選擇項(xiàng)S1、 S2可以包括變量 和/或數(shù)學(xué)函數(shù)的任意組合,其中數(shù)學(xué)函數(shù)分別定義了對(duì)各個(gè)過(guò) 程的輸入數(shù)據(jù)即數(shù)據(jù)集R0和中間結(jié)果R1的細(xì)化。
圖l還示出提取處理通過(guò)運(yùn)行第 一過(guò)程P1和第二過(guò)程P2以 將數(shù)據(jù)項(xiàng)存儲(chǔ)在存儲(chǔ)器10中并從存儲(chǔ)器10檢索數(shù)據(jù)項(xiàng)而與計(jì)算 機(jī)存儲(chǔ)器10(—般為RAM或高速緩沖存儲(chǔ)器)進(jìn)行交互。在所示 的例子中,第一過(guò)程P1運(yùn)行,以存儲(chǔ)并4僉索通常由ID表示的標(biāo) 識(shí)符和中間結(jié)果Rl,并且第二過(guò)程P2運(yùn)^",以存4諸并#全索通常 由ID表示的標(biāo)識(shí)符、中間結(jié)果R1和最終結(jié)果R2。在下面,將標(biāo) 識(shí)符和結(jié)果存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器10中的過(guò)程還被稱(chēng)為"高速緩 存"。
一般由過(guò)程P1、 P2作為其它標(biāo)識(shí)符和/或選擇項(xiàng)S1、 S2和/或結(jié)果R1、 R2等的一個(gè)或多個(gè)處理參數(shù)的函數(shù)來(lái)生成不同的標(biāo) 識(shí)符。不同的函數(shù)不一定用于生成不同的識(shí)別符。用于生成標(biāo) 識(shí)符的函數(shù)可以是生成相關(guān)處理參數(shù)的數(shù)字指紋的哈希算法 (hashing algorithm)。適當(dāng)?shù)嘏渲迷?這些函數(shù),以使得參數(shù)值的 各唯一組合產(chǎn)生在針對(duì)處理內(nèi)的全部不同的標(biāo)識(shí)符所生成的全 部標(biāo)識(shí)符值中唯一的標(biāo)識(shí)符值。在上下文中,"唯一"不僅包括 理論上的唯一標(biāo)識(shí)符值而且包括統(tǒng)計(jì)上的唯一標(biāo)識(shí)符值。這種 函數(shù)的 一 個(gè)非限制性的例子是生成至少2 5 6位的數(shù)字指紋的哈 希算法。
在圖2中進(jìn)一步所示的一個(gè)實(shí)施例中,第一過(guò)程P1用于計(jì) 算作為第 一 選擇項(xiàng)Sl的函數(shù)的第 一 選擇標(biāo)識(shí)符值ID1 ,即 IDl=f(Sl),并且第二過(guò)程P2用于計(jì)算作為第二選擇項(xiàng)S2和中間 結(jié)果R1的函數(shù)的第二選擇標(biāo)識(shí)符值ID3,即ID3二f(S2,Rl)。第一 過(guò)程P1還用于將ID1和中間結(jié)果R1作為關(guān)聯(lián)對(duì)象存儲(chǔ)在計(jì)算機(jī) 存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)12中,并且第二過(guò)程P2用于將ID3和R2作 為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中。因而,計(jì)算機(jī)存儲(chǔ)器10中的 數(shù)據(jù)結(jié)構(gòu)12用于存儲(chǔ)不同種類(lèi)的對(duì)象集合,即不同類(lèi)型的對(duì)象。
本實(shí)施例使得能夠通過(guò)減少執(zhí)行用于分別計(jì)算中間結(jié)果 R1和最終結(jié)果R2的主計(jì)算過(guò)程P1、 P2的必要性,減少提取處理 的應(yīng)答時(shí)間并且/或者減少實(shí)現(xiàn)該提取處理的計(jì)算機(jī)的處理要 求。例如,該提取處理可被配置為只要有可能就使用數(shù)據(jù)結(jié)構(gòu) 12,以基于第一選擇項(xiàng)S1和第二選擇項(xiàng)S2來(lái)尋找最終結(jié)果R2。 因而,當(dāng)處理發(fā)現(xiàn)需要計(jì)算最終結(jié)果R2時(shí),基于S1和S2,它可 以生成IDl二f(Sl),并基于ID1訪問(wèn)數(shù)據(jù)結(jié)構(gòu)12。如果以前在第 一過(guò)程P1中使用過(guò)同 一第 一選擇項(xiàng)S1,則所生成的ID1的值可 能在數(shù)據(jù)結(jié)構(gòu)12中找到,并與相應(yīng)的中間結(jié)果R1相關(guān)聯(lián)。因而, 代替利用過(guò)程P 1進(jìn)行計(jì)算,可以從數(shù)據(jù)結(jié)構(gòu)12中檢索中間結(jié)果
16Rl。如果在數(shù)據(jù)結(jié)構(gòu)12中未找到中間結(jié)果R1,則處理可以使第 一過(guò)程P1計(jì)算中間結(jié)果R1。此外,在獲得了中間結(jié)果R1之后, 處理可以生成ID3二f(Rl,S2),并基于ID3訪問(wèn)數(shù)據(jù)結(jié)構(gòu)12。而且, 如果以前利用過(guò)程P2執(zhí)行過(guò)相同的運(yùn)算,則所生成的ID3的值 可能在數(shù)據(jù)結(jié)構(gòu)12中找到,并與相應(yīng)的最終結(jié)果R2相關(guān)聯(lián)。由 此,代替利用過(guò)程P2進(jìn)行計(jì)算,可以從數(shù)據(jù)結(jié)構(gòu)12中檢索最終 結(jié)果R2。
在圖3中進(jìn)一步所示一個(gè)實(shí)施例中,第一過(guò)程P1還用于計(jì) 算作為中間結(jié)果R1的函數(shù)的第 一 結(jié)果標(biāo)識(shí)符值ID 2 。第 一 過(guò)程 Pl還用于將ID1和ID2作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中,并將 ID2和中間結(jié)果R1作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中。
即使兩個(gè)或更多個(gè)第一選擇項(xiàng)S1產(chǎn)生相同的中間結(jié)果R1, 由于僅將各中間結(jié)果R1存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中l(wèi)次,因此本實(shí)施 例使得能夠減小處理所需要的計(jì)算機(jī)存儲(chǔ)器的大小。當(dāng)中間結(jié) 果R1大時(shí)本實(shí)施例尤其適合,其中在對(duì)來(lái)自數(shù)據(jù)庫(kù)的信息進(jìn)行 處理時(shí)經(jīng)常是這種情況。
第 一 結(jié)果標(biāo)識(shí)符值ID 2的該計(jì)算還使得能夠執(zhí)行圖4所示 的又一實(shí)施例,其中,在計(jì)算第二選擇標(biāo)識(shí)符值ID3時(shí),由第 一結(jié)果標(biāo)識(shí)符值ID2來(lái)表示中間結(jié)果R1,即ID3=f(ID2,S2)。
由于可以才艮據(jù)基于ID2而不是中間結(jié)果R1所生成的ID3從 數(shù)據(jù)結(jié)構(gòu)12檢索最終結(jié)果R2,因此本實(shí)施例導(dǎo)致將中間結(jié)果R1 存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中的需要減少。這使得即使已從數(shù)據(jù)結(jié)構(gòu)12 清除了中間結(jié)果Rl,也能夠高效地計(jì)算最終結(jié)果R2。例如,該 處理可被配置為只要有可能就使用數(shù)據(jù)結(jié)構(gòu)12 ,以基于第 一 選 擇項(xiàng)S1和第二選擇項(xiàng)S2尋找最終結(jié)果R2。因而,當(dāng)處理發(fā)現(xiàn)需 要計(jì)算最終結(jié)果R2時(shí),基于S1和S2,如果以前在第一過(guò)程P1 中使用過(guò)同一第一選擇項(xiàng)S1,則可以生成IDl二f(Sl),并基于ID1訪問(wèn)數(shù)據(jù)結(jié)構(gòu)12乂人而一僉索與ID1相關(guān)耳關(guān)的ID2。然后,如果以前 第二過(guò)程P 2對(duì)同 一 中間結(jié)果R1和同 一 第二選擇項(xiàng)S 2進(jìn)行過(guò)運(yùn) 算,則處理可以生成ID3^f(ID2,S2),并基于ID3訪問(wèn)數(shù)據(jù)結(jié)構(gòu) 12從而檢索與ID3相關(guān)聯(lián)的最終結(jié)果R2。在該例子中,即使已 經(jīng)刪除了中間結(jié)果Rl,也可以從數(shù)據(jù)結(jié)構(gòu)12中檢索最終結(jié)果 R2。
在圖5所示的一個(gè)實(shí)施例中,第二過(guò)程P2還用于計(jì)算作為 最終結(jié)果R2的函數(shù)的第二結(jié)果標(biāo)識(shí)符值ID4。第二過(guò)程P2還用 于將ID3和ID4作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中,并將ID4和 最終結(jié)果R 2作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中。
即使兩個(gè)或更多個(gè)第二選擇項(xiàng)S2產(chǎn)生相同的最終結(jié)果R2, 由于僅將各最終結(jié)果R2存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)12中l(wèi)次,因此本實(shí)施 例使得能夠減小處理所需要的計(jì)算機(jī)存儲(chǔ)器的大小。當(dāng)最終結(jié) 果R2大時(shí),本實(shí)施例尤其適合。
迄今為止,假定數(shù)據(jù)庫(kù)DB以及數(shù)據(jù)集RO是靜態(tài)的。如果該 數(shù)據(jù)庫(kù)是動(dòng)態(tài)的,則可以適當(dāng)?shù)厣勺鳛榈?一 選擇項(xiàng)S1和數(shù)據(jù) 集R0的函數(shù)的第一選擇標(biāo)識(shí)符ID1,即IDl二f(Sl,RO)。利用這種 變形,針對(duì)圖1 5所述的全部實(shí)施例等同地可應(yīng)用于動(dòng)態(tài)數(shù)據(jù) 庫(kù),即隨時(shí)可能變化的數(shù)據(jù)庫(kù)。
圖6是示出用于對(duì)動(dòng)態(tài)數(shù)據(jù)庫(kù)運(yùn)行的圖5中的實(shí)施例的一個(gè) 典型實(shí)現(xiàn)的流程圖。處理以輸入數(shù)據(jù)集R0(步驟600)、第一選擇 項(xiàng)S1(步驟602)和第二選擇項(xiàng)S2(步驟604)而開(kāi)始。然后,作為 S1和R0的函數(shù)生成第一選擇標(biāo)識(shí)符ID1的值(步驟606)?;贗D1 在數(shù)據(jù)結(jié)構(gòu)中進(jìn)行查找(步驟608)。如果在該數(shù)據(jù)結(jié)構(gòu)中找到了 ID1的值,即在先前迭代中已高速緩存了ID1的值,則處理檢索 與ID1的值相關(guān)聯(lián)的第 一結(jié)果標(biāo)識(shí)符ID2的值(步驟610),并且進(jìn) 入步驟612。如果在步驟6 0 8中在數(shù)據(jù)結(jié)構(gòu)中未找到ID1的值,則處理通 過(guò)對(duì)RO運(yùn)行SH吏第 一過(guò)程P1計(jì)算R1(步驟614)。然后,作為R1 的函數(shù)生成ID2的值(步驟616),并且將ID1、 ID2和R1的值以關(guān) 聯(lián)對(duì)ID1:ID2和ID2:R1存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中(步驟618)。然后,處 理進(jìn)入步驟612。
在步驟612中,作為S2和ID2的函數(shù)生成第二選擇標(biāo)識(shí)符 ID3的值。然后,基于ID3在數(shù)據(jù)結(jié)構(gòu)中進(jìn)行查找(步驟620)。如 果在數(shù)據(jù)結(jié)構(gòu)中找到了ID3的值,即在先前迭代中已高速緩存 了 ID 3的值,則處理檢索與ID 3的值相關(guān)聯(lián)的第二結(jié)果標(biāo)識(shí)符 ID4的值(步驟622)。基于ID4在數(shù)據(jù)結(jié)構(gòu)中進(jìn)行進(jìn)一步的查找 (步驟624)。如果在數(shù)據(jù)結(jié)構(gòu)中找到了ID4的值,即在先前迭代 中已高速緩存了ID4的值,則處理檢索與ID4的值相關(guān)聯(lián)的最終 結(jié)果R2(步驟626)。
如果在步驟620中在數(shù)據(jù)結(jié)構(gòu)中未找到ID3的值,則基于在 步驟610或步驟616中確定出的ID2的值在數(shù)據(jù)結(jié)構(gòu)中進(jìn)行進(jìn)一 步的查找(步驟628)。如果在數(shù)據(jù)結(jié)構(gòu)中找到了ID2的值,即在 先前迭代中已高速緩存了ID2的值,則處理檢索與ID2的值相關(guān) 聯(lián)的中間結(jié)果R1(步驟630)。然后,處理通過(guò)對(duì)R1運(yùn)行S2使第 二過(guò)程P2計(jì)算R2(步驟632)。為了更新該數(shù)據(jù)結(jié)構(gòu),該處理還生 成作為R2的函數(shù)的ID4的值(步驟634),并將ID3、 ID4和R2的值 以關(guān)聯(lián)對(duì)ID3:ID4和ID4:R2存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中(步驟636)。
如果在步驟628中在數(shù)據(jù)結(jié)構(gòu)中未找到ID2的值,則處理通 過(guò)對(duì)R0運(yùn)行S1使第 一過(guò)程P1計(jì)算R1(步驟638),并將ID2和R1 的值以關(guān)聯(lián)對(duì)ID2:R1存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中(步驟640)。然后,處理 進(jìn)入步驟632。然而,應(yīng)當(dāng)認(rèn)識(shí)到,如果在步驟614中已計(jì)算出 了中間結(jié)果R1,則不必進(jìn)行步驟628、 630、 638和640。在這種 情況下,如果在步驟620中未找到ID3,則處理可以直接進(jìn)入步驟632,在步驟632中,通過(guò)對(duì)R1運(yùn)行S2使第二過(guò)程P2計(jì)算R2。 如果在步驟624中在數(shù)據(jù)結(jié)構(gòu)中未找到ID 4的值,則處理通 過(guò)對(duì)R1運(yùn)行S24吏第二過(guò)程P2計(jì)算R2(步驟642)。為了更新該數(shù) 據(jù)結(jié)構(gòu),處理還生成作為R2的函數(shù)的ID4的值(步驟644),并將 ID4和R2的值以關(guān)聯(lián)對(duì)ID4:R2存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中(步驟646)。
技術(shù)人員容易理解,盡管圖2 4中的實(shí)施例使用了標(biāo)識(shí)符 的不同組合,但產(chǎn)生了相應(yīng)的存儲(chǔ)和檢索處理。為了表現(xiàn)簡(jiǎn)潔, 在流程圖中沒(méi)有示出這些處理,而僅將這些處理作為前述概要 部分中的典型實(shí)施例而給出。
可以理解,可以使用線性或非線性的任何數(shù)據(jù)結(jié)構(gòu)12來(lái)存 儲(chǔ)標(biāo)識(shí)符和結(jié)果。然而,為了處理速度,可以?xún)?yōu)選使用排序列 表、哈希表或AVL樹(shù)等的二值樹(shù)等具有高效索引系統(tǒng)的數(shù)據(jù)結(jié) 構(gòu)12。
具體實(shí)施例、實(shí)現(xiàn)和示例
在以下,將更詳細(xì)地說(shuō)明和舉例示出本發(fā)明的實(shí)施例。
在本發(fā)明的實(shí)施例中,在針對(duì)新數(shù)據(jù)和新計(jì)算的后續(xù)請(qǐng)求 的處理中使用了先前的計(jì)算和結(jié)果。為此,提取處理被設(shè)計(jì)成 在處理數(shù)據(jù)請(qǐng)求期間對(duì)結(jié)果進(jìn)行高速緩存。當(dāng)處理后續(xù)請(qǐng)求時(shí), 該提取處理判斷是否已生成并高速緩存了適當(dāng)?shù)南惹敖Y(jié)果。如 果是,則在處理后續(xù)請(qǐng)求時(shí)使用先前的結(jié)果。由于不需要重新 生成先前的計(jì)算,因此可以顯著減少后續(xù)請(qǐng)求的處理時(shí)間。
在本發(fā)明的實(shí)施例中,數(shù)字標(biāo)識(shí)符(數(shù)字指紋)用于識(shí)別高 速緩存的信息,并且以這種方式,在與先前計(jì)算相比以不同的 方式得到時(shí),也可以重新使用高速緩存的結(jié)果。
在本發(fā)明的實(shí)施例中,將數(shù)字標(biāo)識(shí)符自身存儲(chǔ)在高速緩沖 存儲(chǔ)器中。具體地,將計(jì)算過(guò)程的輸入的標(biāo)識(shí)符連同該計(jì)算過(guò) 程的輸出的標(biāo)識(shí)符一起存儲(chǔ)。因而,當(dāng)已從高速緩沖存儲(chǔ)器清除了所需要的復(fù)雜中間結(jié)果時(shí),也可以得到多級(jí)運(yùn)算的最終結(jié) 果。僅需要中間結(jié)果的數(shù)字標(biāo)識(shí)符。
在本發(fā)明的實(shí)施例中,通過(guò)可以存儲(chǔ)表、數(shù)據(jù)子集、數(shù)組 和數(shù)字標(biāo)識(shí)符等不同種類(lèi)的對(duì)象的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)該高速緩沖 存儲(chǔ)器。
因而,本發(fā)明的實(shí)施例可以用于最小化或至少減少用戶(hù)的 應(yīng)答時(shí)間,其中該用戶(hù)4吏用最近由同一或其它用戶(hù)已扭^亍的查 詢(xún)來(lái)查詢(xún)數(shù)據(jù)存儲(chǔ)。
本發(fā)明的實(shí)施例還可以用于在兩個(gè)查詢(xún)或計(jì)算恰好產(chǎn)生相 同的結(jié)果的情況下,通過(guò)針對(duì)幾個(gè)不同的查詢(xún)或計(jì)算重新使用 相同高速緩存條目,來(lái)最小化或至少減少高速緩沖存儲(chǔ)器的存 儲(chǔ)器使用。
本發(fā)明的實(shí)施例可應(yīng)用于從關(guān)系型數(shù)據(jù)庫(kù)、后關(guān)系型數(shù)據(jù) 庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)和分級(jí)數(shù)據(jù)庫(kù)等任意類(lèi)型的已知數(shù)據(jù)庫(kù)提 取任意類(lèi)型的信息。還可以將因特網(wǎng)看作為在本發(fā)明的情況下 的數(shù)據(jù)庫(kù)。
圖7公開(kāi)了作為包括數(shù)據(jù)庫(kù)查詢(xún)的提取處理或信息搜索的 本發(fā)明的具體實(shí)施例,其中基于查詢(xún)結(jié)果執(zhí)行后續(xù)的圖表計(jì)算。
表示為"圖表結(jié)果(Chart Result)"的圖表計(jì)算的結(jié)果一般是例如 以如在背景技術(shù)部分中說(shuō)明的多維立方體的形式按一 維、二維 或多維而聚合、排序或分組的數(shù)據(jù)。
在第一步驟中,定義信息搜索的范圍(Scope)。在數(shù)據(jù)庫(kù)查
以及它們是如何連接的來(lái)定義該范圍。對(duì)于因特網(wǎng)搜索,該范 圍可以是通常還以 一 個(gè)或多個(gè)表的形式組織的所找到的網(wǎng)頁(yè)的 索引。因而,第一步驟的輸出是數(shù)據(jù)集(參見(jiàn)圖1 6中的R0)。 在第二步驟中,用戶(hù)在數(shù)據(jù)集中進(jìn)行選擇,從而使推理機(jī)(Inference Engine)計(jì)算數(shù)據(jù)集上的多個(gè)過(guò)濾器的值。該推理機(jī)可以是例如數(shù)據(jù)庫(kù)引擎、查詢(xún)工具或商務(wù)智能工具。例如,在對(duì)保持放置定單的數(shù)據(jù)的數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)時(shí),該查詢(xún)可以要求定單年份是"2007"并且產(chǎn)品組是"乳制品"。因而,可以由所包括的字段的列表以及針對(duì)各個(gè)字段所選擇的值或者,更廣泛地說(shuō),條件的列表來(lái)唯一地定義該選擇。
基于該選擇(參見(jiàn)圖1~6中的S1),推理機(jī)執(zhí)行計(jì)算過(guò)程(參見(jiàn)圖1 6中的P1),以生成表示范圍(參見(jiàn)圖1 6中的RO)的一部分的數(shù)據(jù)子集(參見(jiàn)圖1 6中的R1)。因而,該數(shù)據(jù)子集可以包含來(lái)自該范圍的一組相關(guān)數(shù)據(jù)記錄,或者對(duì)這些相關(guān)數(shù)據(jù)記錄的參考(例如,索引、指針或二值編號(hào))的列表。在以上例子中,相關(guān)數(shù)據(jù)記錄將僅是與年份"2007"和產(chǎn)品組"乳制品"有關(guān)的數(shù)據(jù)記錄。
如果以前從未進(jìn)行選擇,則運(yùn)行圖7中的推理機(jī)以計(jì)算數(shù)據(jù)子集。然而,如果以前進(jìn)行過(guò)計(jì)算,則作為替代,運(yùn)行推理機(jī)以通過(guò)訪問(wèn)特定的數(shù)據(jù)結(jié)構(gòu)"高速緩沖存儲(chǔ)器"而重新使用先前的結(jié)果。
下一步驟經(jīng)常是基于數(shù)據(jù)子集進(jìn)行例如聚合和/或排序和/或分組等的進(jìn)一步計(jì)算。在圖7的例子中,通過(guò)基于數(shù)據(jù)子集和所選擇的圖表屬性的集合(參見(jiàn)圖1 6中的S2)計(jì)算圖表結(jié)果的圖表引擎來(lái)進(jìn)行后續(xù)計(jì)算。由此,圖表引擎執(zhí)行圖表計(jì)算過(guò)程(參見(jiàn)圖1~6中的P2)以生成圖表結(jié)果(參見(jiàn)圖1 6中的R2)。如果以前從未進(jìn)行這些計(jì)算,則運(yùn)行圖7中的圖表引擎以生成圖表結(jié)果。然而,如果以前進(jìn)行過(guò)這些計(jì)算,則作為替代,運(yùn)行圖表引擎以通過(guò)訪問(wèn)前述高速緩沖存儲(chǔ)器來(lái)重新使用先前的結(jié)果。然后,可以以數(shù)據(jù)透4見(jiàn)表或以2D和3D圖表圖形地對(duì)用戶(hù)可一見(jiàn)化該圖表結(jié)果。
22圖7還示出使用高速緩沖存儲(chǔ)器的處理,其中f表示運(yùn)行以
生成數(shù)字標(biāo)識(shí)符的哈希算法,ID1 ID4表示由此生成的數(shù)字標(biāo)識(shí)符,并且實(shí)線箭頭表示用于生成標(biāo)識(shí)符ID1 ID4的數(shù)據(jù)流。此外在圖7中,虛線箭頭表示高速緩沖存儲(chǔ)器查找。
在圖7中,當(dāng)用戶(hù)進(jìn)行新的選擇時(shí),推理機(jī)計(jì)算數(shù)據(jù)子集。此外,基于范圍和選擇中的過(guò)濾器生成選擇和范圍的標(biāo)識(shí)符ID1。隨后,基于數(shù)據(jù)子集定義, 一般為定義數(shù)據(jù)子集的內(nèi)容的位序列,生成該數(shù)據(jù)子集的標(biāo)識(shí)符ID2。最終,使用ID1作為查找標(biāo)識(shí)符將ID2置于高速緩沖存儲(chǔ)器中。同樣,使用ID2作為查找標(biāo)識(shí)符將數(shù)據(jù)子集定義置于高速緩沖存儲(chǔ)器中。
在圖7中,圖表計(jì)算以類(lèi)似的方式發(fā)生。這里,存在兩個(gè)信息集數(shù)據(jù)子集和相關(guān)圖表屬性。后者一般是但不限于數(shù)學(xué)函數(shù)、計(jì)算變量以及分類(lèi)變量(維度)。這兩個(gè)信息集均用于計(jì)算圖表結(jié)果,并且這兩個(gè)信息集還用于生成向圖表計(jì)算的輸入的標(biāo)識(shí)符ID3。在前述步驟中已生成了ID2,并且作為圖表計(jì)算過(guò)程中的第一步驟,生成ID3。
根據(jù)ID 2和相關(guān)圖表屬性形成標(biāo)識(shí)符ID 3 。可以將ID 3看作
包括計(jì)算具體圖表結(jié)果所需要的全部信息的具體圖表生成實(shí)例的標(biāo)識(shí)符。另外,根據(jù)圖表結(jié)果定義, 一般為定義圖表結(jié)果的位序列,創(chuàng)建圖表結(jié)果標(biāo)識(shí)符ID4。最終,使用ID3作為查找標(biāo)識(shí)符將ID4置于高速緩沖存儲(chǔ)器中。同樣,使用ID4作為查找標(biāo)識(shí)符將圖表結(jié)果定義置于高速緩沖存儲(chǔ)器中。
在該具體例子中,在推理過(guò)程和圖表計(jì)算過(guò)程兩者中進(jìn)行了結(jié)果的兩級(jí)高速緩存。在該推理過(guò)程中,ID1和ID2分別表示不同的事物選擇和數(shù)據(jù)子集定義。如果兩個(gè)不同的選擇產(chǎn)生相同的數(shù)據(jù)子集(這是極有可能的),則兩級(jí)高速緩存(ID1:ID2;ID2:數(shù)據(jù)子集)使得僅對(duì)數(shù)據(jù)子集高速緩存 一 次。在以下將此表
23示為對(duì)象疊合(Object Folding),即高速緩沖存儲(chǔ)器中的幾個(gè)數(shù)據(jù)對(duì)象共享同一高速緩沖存儲(chǔ)器條目。類(lèi)似地,在圖表計(jì)算過(guò)程中,ID3和ID4分別表示不同的事物圖表生成實(shí)例和圖表結(jié)果定義。如果兩個(gè)不同的圖表生成實(shí)例產(chǎn)生相同的圖表結(jié)果(這是極有可能的),則兩級(jí)高速緩存(ID3:ID4; ID4:圖表結(jié)果)使得僅對(duì)該圖表結(jié)果高速緩存一次。
此外,通過(guò)高速緩存ID3,如果已從高速緩沖存儲(chǔ)器清除該數(shù)據(jù)子集定義,則也可以重新創(chuàng)建圖表結(jié)果。由于數(shù)據(jù)子集定義可以非常大因而如果實(shí)現(xiàn)了高速緩沖存儲(chǔ)器清除機(jī)制則該數(shù)據(jù)子集定義趨于被從高速緩沖存儲(chǔ)器清除,這是適當(dāng)?shù)膬?yōu)勢(shì)。以下將進(jìn)一 步說(shuō)明這種機(jī)制的非限制性例子。
在提取處理期間,如圖7中的虛線箭頭所示,根據(jù)選擇、相關(guān)圖表屬性等計(jì)算出標(biāo)識(shí)符,并且這些標(biāo)識(shí)符用于查找可能高速緩存的計(jì)算結(jié)果。如果找到標(biāo)識(shí)符,則將重新使用相應(yīng)的高速緩存的結(jié)果。如果沒(méi)有找到,則提取處理將生成新的標(biāo)識(shí)符,并且與各自的結(jié)果一起對(duì)它們進(jìn)行高速緩存。
為了進(jìn)一步舉例說(shuō)明提取處理,考慮定單年份"2007"和產(chǎn)品組"乳制品,,的上述選擇。第 一 步驟是生成作為該選擇的函數(shù)的數(shù)字標(biāo)識(shí)符ID1 (例如,以十六進(jìn)制計(jì)數(shù)法編寫(xiě)的)
為了簡(jiǎn)潔,在以下例子中由每個(gè)標(biāo)識(shí)符的最初的4個(gè)字符來(lái)表示各標(biāo)識(shí)符。因此,作為替代,IDl變?yōu)?31dc"。此外,為了清楚,以下的圖解表在lt字標(biāo)識(shí)符之前包括標(biāo)識(shí)符標(biāo)記,例如"ID1:"。在實(shí)際方案中,這是不需要的。
后續(xù)的提取處理如下當(dāng)已生成ID1時(shí),在高速緩沖存儲(chǔ)器中查找該ID1。第一次進(jìn)行選擇時(shí),在高速緩沖存儲(chǔ)器中將不會(huì)找到該標(biāo)識(shí)符,因此必須以普通方式計(jì)算由此得到的數(shù)據(jù)子集。一旦進(jìn)行了該操作,則可以根據(jù)該數(shù)據(jù)子集生成ID2為
例如"d2b8"。然后,高速緩存IDl,指向ID2;并且高速緩存ID2,指向定義由此得到的數(shù)據(jù)子集的位序列。該位序列在大小可能相當(dāng)大。以下在表l中示出了高速緩沖存儲(chǔ)器的內(nèi)容。
表l:
ID高速緩存的值
IDl:31dcID2:d2b8
ID2:d2b8<由此得到的數(shù)據(jù)子集中的數(shù)據(jù)記錄>
下次進(jìn)行相同的選擇時(shí),處理將不同現(xiàn)在在高速緩沖存儲(chǔ)器中找到了IDl,指向"ID2:d2b8",反過(guò)來(lái)該"ID2:d2b8,,用于第二次查找,從而代替耗時(shí)間的計(jì)算,尋找、取出并使用由此得到的數(shù)據(jù)子集的位序列。
現(xiàn)在者慮進(jìn)行了不同的選擇但是產(chǎn)生了相同的由此得到的數(shù)據(jù)子集的情況。例如,可能發(fā)生用戶(hù)準(zhǔn)確地選擇了在未明確要求"奶制品"的情況下已購(gòu)買(mǎi)了 "奶制品,,的客戶(hù)以及除了 "奶制品"以外什么也沒(méi)買(mǎi)的客戶(hù)?,F(xiàn)在將ID 1生成為例如"f 142",并且在高速緩沖存儲(chǔ)器中將未找到ID1。因而,必須以普通方式計(jì)算由此得到的數(shù)據(jù)子集。 一旦進(jìn)行了該操作,則可以從數(shù)據(jù)子集生成ID2,并且該ID2是已存儲(chǔ)在高速緩沖存儲(chǔ)器中的"d2b8,,。因此,該算法僅需要向高速緩沖存儲(chǔ)器添加一個(gè)條目,即"IDl:fl42,,指向"ID2:d2b8,,的一個(gè)條目。以下在表2中示出了高速緩沖存儲(chǔ)器的內(nèi)容。表2:_
ID 高速緩存的值
IDl:fl42 ID2:d2b8 IDl:31dc ID2:d2b8 ID2:d2b8 <由此得到的數(shù)據(jù)子集中的數(shù)據(jù)記錄>
此時(shí)沒(méi)有節(jié)省計(jì)算時(shí)間,但是重新使用了高速緩存條目以 防止高速緩沖存儲(chǔ)器不必要地增長(zhǎng)?,F(xiàn)在,"IDl:fl42"和 "IDl:31dc"兩者都指向包含相同的由此得到的數(shù)據(jù)集 "ID2:d2b8,,的高速緩存條目,并且可以在稍后的查找中使用這 兩者。因而,這是前述"對(duì)象疊合"的例子。
當(dāng)進(jìn)行后續(xù)的圖表計(jì)算時(shí),高速緩存數(shù)字標(biāo)識(shí)符的又一優(yōu) 點(diǎn)將變得清楚。因此,假定已經(jīng)進(jìn)行了上述選擇,并且已經(jīng)進(jìn) 行了后續(xù)的圖表計(jì)算。已經(jīng)分別將ID3和ID4生成為"e40A"和 "7505",并將它們存儲(chǔ)在高速緩沖存儲(chǔ)器中。以下在表3中示出 了高速緩沖存儲(chǔ)器的內(nèi)容。
表3: _
ID 高速緩存的值
IDl:fl42 ID2:d2b8
IDl:31dc ID2:d2b8
ID2:d2b8 <由此得到的數(shù)據(jù)子集中的數(shù)據(jù)記錄>
ID3:e40A ID4:7505
ID4:7505 <表示圖表結(jié)果的數(shù)字的矩陣〉
26在表3中的5個(gè)條目中,一個(gè)條目極有可能比全部其它的條
目大得多包含定義了可能大的數(shù)據(jù)子集的全體位序列的 "ID2:d2b8"。如以下將進(jìn)一步說(shuō)明,當(dāng)維護(hù)高速緩存時(shí)/如果維 護(hù)高速緩存,則其大小使得"ID2:d2b8"成為要被清除的候選。 因此,稍后高速緩沖存儲(chǔ)器的內(nèi)容可能如以下的表4所示。
_
ID 高速緩存的值
IDl:fl42 ID2:d2b8
IDl:31dc ID2:d2b8
ID3:e40A ID4:7505
ID4:7505 <表示圖表結(jié)果的數(shù)字的矩陣>
然而,由于對(duì)數(shù)字標(biāo)識(shí)符進(jìn)行了高速緩存,因此仍可以在
無(wú)需重新計(jì)算中間數(shù)據(jù)子集的情況下獲得圖表結(jié)果。替代地, 當(dāng)進(jìn)行選擇時(shí),計(jì)算ID1。接著,在高速緩沖存儲(chǔ)器中進(jìn)行對(duì)ID1 的查找,結(jié)果檢索到了ID2。隨后,根據(jù)相關(guān)圖表屬性和ID2的 組合生成了ID3。在高速緩沖存儲(chǔ)器中進(jìn)行對(duì)ID3的查找,并且 檢索到了ID4。最終,在高速緩沖存儲(chǔ)器中進(jìn)行對(duì)ID4的查找, 并且再生圖表結(jié)果。因此,在無(wú)需任何大量計(jì)算的情況下,僅 基于可以通過(guò)快速且高效處理的操作所生成的數(shù)字標(biāo)識(shí)符,找 到了圖表結(jié)果。
根據(jù)以上可以理解,數(shù)字標(biāo)識(shí)符應(yīng)當(dāng)是唯一的,以使得高 速緩沖存儲(chǔ)器中各個(gè)標(biāo)識(shí)符的含義是明確的。在 一 個(gè)實(shí)施例中, 使用哈希算法或函數(shù)生成數(shù)字標(biāo)識(shí)符。哈希算法是接受任意大 小的輸入(消息)并返回被稱(chēng)為哈希值(消息摘要)的固定大小的串的變換。該算法一般切斷并混合,例如替換或調(diào)換該輸入以 創(chuàng)建其數(shù)字指紋。最簡(jiǎn)單和最古老的哈希算法是通過(guò)質(zhì)數(shù)運(yùn)算 的簡(jiǎn)要模塊。哈希算法用于包括加密技術(shù)的各種計(jì)算目的。一 般而言,哈希算法應(yīng)當(dāng)在仍實(shí)際為確定性的同時(shí)通過(guò)以等同的 "可能性"生成任意可能的固定大小的串,盡可能地表現(xiàn)為隨機(jī) 函數(shù)。
存在幾種已知的并且經(jīng)常使用的可以用于生成上述數(shù)字標(biāo)
識(shí)符的哈希算法。不同的哈希算法針對(duì)不同的目的是最優(yōu)的, 其中一些哈希算法針對(duì)高效且快速地計(jì)算哈希值的目的是最優(yōu)
的,而另 一些哈希算法設(shè)計(jì)用于高加密安全性的目的。具有高 加密安全性的算法被設(shè)計(jì)成使得難以在合理的時(shí)間內(nèi)計(jì)算出與 給定的哈希值相匹配的消息,并且難以找到生成與第 一 給定消
息相同的哈希值的消息的第二消息。這種哈希算法包括S H A (安 全哈希算法)和MD5 (Message-Digest algorithm 5, 消息摘要算 法5)。高效處理的哈希算法一般展現(xiàn)了較低的加密安全性。這 種哈希算法包括被設(shè)計(jì)成在通常維持非常低的沖突率(collision
偏移基開(kāi)始,該偏移基原則上可以是任意隨機(jī)串的值,但傳統(tǒng) 上 一 般總是為貫穿原始的FNV-0算法的以十六進(jìn)制碼的發(fā)明者 簽名。為了生成256位FNV哈希值,通常使用以下的偏移基
對(duì)于向哈希算法的輸入中的各字節(jié),首先將偏移乘以大的 質(zhì)數(shù),然后與來(lái)自輸入的字節(jié)相比較,并最終計(jì)算出按位對(duì)稱(chēng) 差(XOR),以形成下一循環(huán)的哈希值。在7>開(kāi)文獻(xiàn)中可以找到 適當(dāng)?shù)馁|(zhì)數(shù)。任意大的質(zhì)數(shù)都可以,但其中一些比另一些更加 抗沖突。
28可以使用合理地抗沖突的任何哈希算法來(lái)生成數(shù)字標(biāo)識(shí) 符。在一個(gè)實(shí)施例中,使用具有高抗沖突性和低加密安全性的 快速哈希算法來(lái)生成標(biāo)識(shí)符。
在一個(gè)具體實(shí)施例中,可以通過(guò)連結(jié)各自使用不同的質(zhì)數(shù)
乘數(shù)而生成的4個(gè)6 4位F N V哈希來(lái)創(chuàng)建2 5 6位標(biāo)識(shí)符。通過(guò)使用4 個(gè)較短的哈希并連結(jié)這些哈希,可以更快速地生成標(biāo)識(shí)符。為 了進(jìn)一步加速標(biāo)識(shí)符的生成,可以對(duì)算法進(jìn)行修改,從而不在 每次循環(huán)時(shí)僅使用輸入的 一 個(gè)字節(jié),而是替代地使用4個(gè)字節(jié)。 這可能導(dǎo)致加密安全性的丟失,但抗沖突性保持大致相同。
長(zhǎng)度為至少256位的標(biāo)識(shí)符可以產(chǎn)生有益的抗沖突性。256 位哈希值表示存在約1E+77個(gè)可能的標(biāo)識(shí)符值??梢詫⒃摂?shù)量 與已估計(jì)為lE+80的宇宙中的原子的數(shù)量進(jìn)行比較。這意味著 沖突的風(fēng)險(xiǎn),即兩個(gè)不同的選擇/數(shù)據(jù)子集/圖表屬性/圖表結(jié)果 產(chǎn)生相同的標(biāo)識(shí)符的風(fēng)險(xiǎn)不僅非常小,而且可忽略的。因此, 我們可以確定地說(shuō)沖突的風(fēng)險(xiǎn)小到可以接受。這意味著,盡管 哈希算法理論上未生成唯一標(biāo)識(shí)符,然而統(tǒng)計(jì)上生成了唯一標(biāo) 識(shí)符。然而,可以理解,對(duì)于特定用途,64^立或128位等的位長(zhǎng) 度較短的標(biāo)識(shí)符可以在統(tǒng)計(jì)上充分唯一 。
如上所述,可以實(shí)現(xiàn)清除機(jī)制以清除高速緩沖存儲(chǔ)器中的 舊的或未使用的條目。 一個(gè)策略可以是消除高速緩沖存儲(chǔ)器中 的低使用率的條目。然而,可以實(shí)現(xiàn)更高級(jí)的清除機(jī)制以支持 處理器使用率和存儲(chǔ)器使用率這兩者的最優(yōu)化。這種高級(jí)清除 機(jī)制的一個(gè)實(shí)施例對(duì)使用率、計(jì)算時(shí)間和存儲(chǔ)器需求這三個(gè)參 數(shù)進(jìn)行運(yùn)算。
使用率參數(shù)是可以考慮是否"最近但不經(jīng)常"訪問(wèn)條目和是 否"經(jīng)常但最近沒(méi)有,,訪問(wèn)條目?jī)烧叩臄?shù)值。可以通過(guò)將各個(gè)條 目與使用率參數(shù)U相關(guān)聯(lián)來(lái)實(shí)現(xiàn)該操作,其中該使用率參數(shù)U
29在每次訪問(wèn)該條目時(shí)增加例如一個(gè)單位,^旦是該-使用率參ftu 的值隨著時(shí)間的過(guò)去以指數(shù)方式或者按照任何其它函數(shù)減小。 在一個(gè)實(shí)現(xiàn)中,周期性地將高速緩沖存儲(chǔ)器中的U的所有值減 少固定量。因而,與放射性衰變類(lèi)似,使用率參數(shù)具有半衰期。 現(xiàn)在U的值將反映已訪問(wèn)了該條目多少次以及在多近的時(shí)間訪 問(wèn)了該條目。
如果計(jì)算條目所需要的處理器時(shí)間相當(dāng)長(zhǎng),則在高速緩沖 存儲(chǔ)器中應(yīng)當(dāng)將該條目保持較久。相反,如果計(jì)算所需要的處 理器時(shí)間短,則重新計(jì)算的成本小,并且將該條目保持在高速 緩沖存儲(chǔ)器中的好處也小。因而,將各個(gè)條目與表示所估計(jì)出
的計(jì)算時(shí)間的時(shí)間參數(shù)T相關(guān)聯(lián)。
如果存儲(chǔ)條目所需要的存儲(chǔ)器空間相當(dāng)大,則需要大量的 高速緩沖存儲(chǔ)器資源以保持該條目,并且與需要較少的存儲(chǔ)器 空間的條目相比較,應(yīng)當(dāng)更快將該條目從高速緩沖存儲(chǔ)器清除。 相反,需要小的存儲(chǔ)器空間的條目可以在高速緩沖存儲(chǔ)器中保 持較長(zhǎng)時(shí)間。因此,將各個(gè)條目與表示所估計(jì)出的存儲(chǔ)器需求 的存儲(chǔ)器參數(shù)M相關(guān)聯(lián)。
對(duì)于高速緩沖存儲(chǔ)器中的各個(gè)條目,通過(guò)由W二U-T/M 給出的權(quán)重函數(shù)W來(lái)評(píng)價(jià)U、 T和M參數(shù)的值。
對(duì)于條目的W的大的值表示存在好的理由將該條目保持在 高速緩沖存儲(chǔ)器中。因而,應(yīng)當(dāng)將具有大的W值的條目保持在 高速緩沖存儲(chǔ)器中,并且應(yīng)該清除具有小的W值的條目。
高效的清除機(jī)制可以包括根據(jù)W值對(duì)高速緩沖存儲(chǔ)器進(jìn)行 排序,并從一端即具有最小W值的條目開(kāi)始清除排序后的高速 緩沖存儲(chǔ)器。保持排序后的高速緩沖存儲(chǔ)器的一個(gè)可能的但非 必需的方法是將標(biāo)識(shí)符、結(jié)果和U、 T、 M和W值作為AVL (Adelson- Velsky和Landis)樹(shù)即自平衡二值搜索樹(shù)而存儲(chǔ)。清除機(jī)制可以間歇地清除W值落在預(yù)定閾值以下的全部的 條目。
可選地,可以由計(jì)算機(jī)上可用存儲(chǔ)器的量或可用存儲(chǔ)器相 對(duì)總存儲(chǔ)器的比來(lái)控制清除機(jī)制。因而,每當(dāng)高速緩沖存儲(chǔ)器 的大小達(dá)到存儲(chǔ)器閾值時(shí),清除機(jī)制基于各自的W值從高速緩 沖存儲(chǔ)器條目去除條目。通過(guò)設(shè)置存儲(chǔ)器閾值,可以使高速援 沖存儲(chǔ)器大小適合本地硬件狀況,例如,用處理能力換取存儲(chǔ) 器。例如,可以通過(guò)為計(jì)算機(jī)添加更多的主存儲(chǔ)器并增加存儲(chǔ) 器閾值來(lái)補(bǔ)償計(jì)算機(jī)中的較低的處理器。由此,更多的結(jié)果將 被保留在高速緩沖存儲(chǔ)器中,并且將減少處理的需求。
本發(fā)明的實(shí)施例還涉及用于進(jìn)行前述的算法、方法、處理 和過(guò)程中任一個(gè)的設(shè)備??梢葬槍?duì)所需要的目的專(zhuān)門(mén)構(gòu)造該設(shè) 備,或者該設(shè)備可以包括由計(jì)算機(jī)中所存儲(chǔ)的計(jì)算機(jī)程序選擇 性地啟動(dòng)或重新配置的通用計(jì)算機(jī)。
圖8是用于實(shí)現(xiàn)本發(fā)明實(shí)施例中的任意實(shí)施例的基于計(jì)算 機(jī)的環(huán)境的框圖。用戶(hù)l與包括處理器3的數(shù)據(jù)處理系統(tǒng)2交互, 其中處理器3執(zhí)行操作系統(tǒng)軟件以及實(shí)現(xiàn)本發(fā)明實(shí)施例的 一 個(gè) 或多個(gè)應(yīng)用程序。用戶(hù)通過(guò)使用鼠標(biāo)、鍵盤(pán)和觸摸墊等的一個(gè) 或多個(gè)眾所周知的輸入裝置4向數(shù)據(jù)處理系統(tǒng)2輸入信息??蛇x 地,可以通過(guò)卡讀取器、光學(xué)讀取器或其它計(jì)算機(jī)系統(tǒng)等的其 它類(lèi)型的輸入裝置在需要或無(wú)需用戶(hù)干涉的情況下輸入信息。 可以通過(guò)在顯示器5上顯示字符、圖形符號(hào)、窗口和按鈕等向用 戶(hù)給出視覺(jué)反饋。數(shù)據(jù)處理系統(tǒng)進(jìn)一步包括前述存儲(chǔ)器IO。由
并且從存儲(chǔ)器10檢索適當(dāng)?shù)男畔?。存?chǔ)器10 —般包括主存儲(chǔ)器 (RAM、高速緩沖存儲(chǔ)器等)和非易失性從存儲(chǔ)器(硬盤(pán)、閃速存 儲(chǔ)器和可移除介質(zhì))??梢詫?shù)據(jù)庫(kù)存儲(chǔ)在數(shù)據(jù)處理系統(tǒng)的存儲(chǔ)器10中,或者可以經(jīng)由數(shù)據(jù)處理系統(tǒng)2中的通信接口 6在外部存
儲(chǔ)裝置上訪問(wèn)該數(shù)據(jù)庫(kù)。
參考一些實(shí)施例已經(jīng)在上面主要說(shuō)明了本發(fā)明。然而,如 本領(lǐng)域的技術(shù)人員容易理解,在僅由所附的專(zhuān)利權(quán)利要求書(shū)定 義和限定的本發(fā)明的范圍和精神內(nèi),除以上公開(kāi)的實(shí)施例以外 的其它實(shí)施例也是可以的。
例如,本發(fā)明不僅可應(yīng)用于計(jì)算多維立方體,而且還可用 于使用 一 系列計(jì)算從數(shù)據(jù)庫(kù)提取信息的任意情況。
此外,創(chuàng)造性的提取處理可應(yīng)用于包括多于兩個(gè)的連續(xù)計(jì) 算的一系列計(jì)算。例如,與前面所述的中間結(jié)果類(lèi)似,可以高 速緩存該一 系列計(jì)算中的兩個(gè)或更多個(gè)中間結(jié)果中的每一個(gè)中 間結(jié)果,并且隨后進(jìn)行檢索。
此外,創(chuàng)造性的提取處理無(wú)需高速緩存和隨后檢索最終結(jié) 果,但替代地可以運(yùn)行以在一 系列計(jì)算中僅高速緩存并檢索一 個(gè)或多個(gè)中間結(jié)果。
此外,應(yīng)當(dāng)注意,可以省略從數(shù)據(jù)庫(kù)揭:耳又初始數(shù)據(jù)集或范 圍的初始步驟,并且替代地可以對(duì)數(shù)據(jù)庫(kù)直接運(yùn)行該提取處理。 相關(guān)申請(qǐng)交叉引用
本申請(qǐng)要求2008年7月18日提交的瑞典專(zhuān)利申請(qǐng)0801708-9 以及2008年7月18日提交的美國(guó)臨時(shí)申請(qǐng)61/081,761的優(yōu)先權(quán), 在此通過(guò)引用包含其全部?jī)?nèi)容。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,用于從數(shù)據(jù)庫(kù)提取信息,所述方法包括一系列主計(jì)算,所述一系列主計(jì)算包括第一主計(jì)算(P1)和第二主計(jì)算(P2),所述第一主計(jì)算(P1)對(duì)表示所述數(shù)據(jù)庫(kù)的數(shù)據(jù)集(R0)運(yùn)行第一選擇項(xiàng)(S1)以產(chǎn)生第一結(jié)果(R1),并且所述第二主計(jì)算(P2)對(duì)所述第一結(jié)果(R1)運(yùn)行第二選擇項(xiàng)(S2)以產(chǎn)生第二結(jié)果(R2),所述方法還包括通過(guò)以下步驟高速緩存所述第一結(jié)果(R1)和所述第二結(jié)果(R2)計(jì)算步驟,用于計(jì)算作為至少所述第一選擇項(xiàng)(S1)的函數(shù)的第一選擇標(biāo)識(shí)符值(ID1),并且計(jì)算作為至少所述第二選擇項(xiàng)(S2)和所述第一結(jié)果(R1)的函數(shù)的第二選擇標(biāo)識(shí)符值(ID3);以及存儲(chǔ)步驟,用于將所述第一選擇標(biāo)識(shí)符值(ID1)和所述第一結(jié)果(R1)以及所述第二選擇標(biāo)識(shí)符值(ID3)和所述第二結(jié)果(R2)分別作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。
2. 根據(jù)權(quán)利要求l所述的方法,其特征在于,還包括使用 步驟,所述使用步驟用于使用所述數(shù)據(jù)結(jié)構(gòu)以基于所述第一選 擇項(xiàng)(S1)和所述第二選擇項(xiàng)(S2)尋找所述第二結(jié)果(R2),其中,所述使用步驟包括以下子步驟(a) 計(jì)算作為至少所述第 一 選擇項(xiàng)(S1)的函數(shù)的所述第 一 選 擇標(biāo)識(shí)符值(ID1);(b) 基于所述第 一 選擇標(biāo)識(shí)符值(ID1)搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第 一 結(jié)果(R1);(c) 如果在子步驟(b)中找到了所述第一結(jié)果(R1),則計(jì)算作 為所述第 一 結(jié)果(R1)和所述第二選擇項(xiàng)(S2)的函數(shù)的所述第二 選擇標(biāo)識(shí)符值(ID3),并且基于所述第二選擇標(biāo)識(shí)符值(ID3)搜索 所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二結(jié)果(R2);(d) 如果在子步驟(b)中未找到所述第一結(jié)果(R1),則執(zhí)行所述第一主計(jì)算(P1)以產(chǎn)生所述第一結(jié)果(R1),計(jì)算作為所述第一結(jié)果(Rl)和所述第二選擇項(xiàng)(S2)的函數(shù)的所述第二選擇標(biāo)識(shí) 符值(ID3),并且基于所述第二選擇標(biāo)識(shí)符值(ID3)搜索所述數(shù)據(jù) 結(jié)構(gòu)的對(duì)象以定位所述第二結(jié)果(R2);以及(e)如果在子步驟(c)或(d)中未找到所述第二結(jié)果(R2),則執(zhí) 行所述第二主計(jì)算(P2)以產(chǎn)生所述第二結(jié)果(R2)。
3. 根據(jù)權(quán)利要求l所述的方法,其特征在于,還包括計(jì)算 作為所述第 一結(jié)果(R1)的函數(shù)的第 一結(jié)果標(biāo)識(shí)符值(ID2)的步 驟,其中,所述存儲(chǔ)步驟還包括以下步驟將所述第一選擇標(biāo) 識(shí)符值(ID 1)和所述第 一 結(jié)果標(biāo)識(shí)符值(ID2)作為關(guān)聯(lián)對(duì)象存儲(chǔ) 在所述數(shù)據(jù)結(jié)構(gòu)中;以及將所述第 一 結(jié)果標(biāo)識(shí)符值(ID 2)和所述 第 一 結(jié)果(R1)作為關(guān)聯(lián)對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)中。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括使用 步驟,所述使用步驟用于使用所述數(shù)據(jù)結(jié)構(gòu)以基于所述第一選 擇項(xiàng)(S1)和所述第二選擇項(xiàng)(S2)尋找所述第二結(jié)果(R2),其中, 所述使用步驟包括以下子步驟(a) 計(jì)算作為至少所述第 一選擇項(xiàng)(S1)的函數(shù)的所述第 一選 擇標(biāo)識(shí)符值(ID1);(b) 基于所述第 一 選擇標(biāo)識(shí)符值(ID1)搜索所述數(shù)據(jù)結(jié)構(gòu)的 對(duì)象以定位所述第 一 結(jié)果標(biāo)識(shí)符值(ID 2),并且基于所述第 一 結(jié) 果標(biāo)識(shí)符值(ID2)搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第 一 結(jié)果(Rl);(c) 如果在子步驟(b)中找到了所述第一結(jié)果(R1),則計(jì)算作 為所述第 一 結(jié)果(R1)和所述第二選擇項(xiàng)(S 2)的函數(shù)的所述第二 選擇標(biāo)識(shí)符值(ID3),并且基于所述第二選擇標(biāo)識(shí)符值(ID3)搜索 所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二結(jié)果(R 2);(d) 如果在子步驟(b)中未找到所述第 一 結(jié)果標(biāo)識(shí)符值(ID2)或所述第 一結(jié)果(R1),則執(zhí)行所述第一主計(jì)算(P1)以產(chǎn)生所述第一結(jié)果(R1),計(jì)算作為所述第一結(jié)果(R1)和所述第二選擇項(xiàng) (S2)的函數(shù)的所述第二選擇標(biāo)識(shí)符值(ID3),并且基于所述第二 選擇標(biāo)識(shí)符值(ID 3)搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二 結(jié)果(R2);以及(e)如果在子步驟(c)或(d)中未找到所述第二結(jié)果(R2),則執(zhí) 行所述第二主計(jì)算(P2)以產(chǎn)生所述第二結(jié)果(R2)。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,在計(jì)算所述 第二選擇標(biāo)識(shí)符值(ID3)時(shí),由所述第 一 結(jié)果標(biāo)識(shí)符值(ID2)來(lái)表 示所述第一結(jié)果(R1)。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括使用 步驟,所述使用步驟用于使用所述數(shù)據(jù)結(jié)構(gòu)以基于所述第一選 擇項(xiàng)(S1)和所述第二選擇項(xiàng)(S2)尋找所述第二結(jié)果(R2),其中, 所述使用步驟包括以下子步驟(a) 計(jì)算作為至少所述第 一選擇項(xiàng)(S1)的函數(shù)的所述第一選 擇標(biāo)識(shí)符值(ID1);(b) 基于所述第 一 選擇標(biāo)識(shí)符值(ID 1)搜索所述數(shù)據(jù)結(jié)構(gòu)的 對(duì)象以定位所述第 一 結(jié)果標(biāo)識(shí)符值(ID 2);(c) 如果在子步驟(b)中找到了所述第 一 結(jié)果標(biāo)識(shí)符值 (ID2),則計(jì)算作為所述第 一 結(jié)果標(biāo)識(shí)符值(ID2)和所述第二選擇 項(xiàng)(S2)的函數(shù)的所述第二選擇標(biāo)識(shí)符值(ID3),并且基于所述第 二選擇標(biāo)識(shí)符值(ID 3)搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第 二結(jié)果(R2);(d) 如果在子步驟(b)中未找到所述第 一 結(jié)果標(biāo)識(shí)符值 (ID2),則執(zhí)行所述第 一 主計(jì)算(P 1)以產(chǎn)生所述第 一 結(jié)果(R 1), 計(jì)算作為所述第 一結(jié)果(R1)的函數(shù)的所述第 一結(jié)果標(biāo)識(shí)符值 (ID2),計(jì)算作為所述第 一 結(jié)果標(biāo)識(shí)符值(ID2)和所述第二選擇項(xiàng)(S2)的函數(shù)的所述第二選擇標(biāo)識(shí)符值(ID3),并且基于所述第二 選擇標(biāo)識(shí)符值(ID 3)搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所述第二 結(jié)果(R2);(e) 如果在子步驟(c)中未找到所述第二結(jié)果(R2),則基于所 述第 一 結(jié)果標(biāo)識(shí)符值(ID2)搜索所述數(shù)據(jù)結(jié)構(gòu)的對(duì)象以定位所 述第 一結(jié)果(R1),并且執(zhí)行所述第二主計(jì)算(P2)以產(chǎn)生所述第 二結(jié)果(R2);(f) 如果在子步驟(e)中未找到所述第 一 結(jié)果(R1),則執(zhí)行所 述第一主計(jì)算(P1)以產(chǎn)生所述第一結(jié)果(R1),并且執(zhí)行所述第 二主計(jì)算(P2)以產(chǎn)生所述第二結(jié)果(R2);以及(g) 如果在子步驟(d)中未找到所述第二結(jié)果(R2),則執(zhí)行所 述第二主計(jì)算(P2)以產(chǎn)生所述第二結(jié)果(R2)。
7. 根據(jù)權(quán)利要求l、 3或5所述的方法,其特征在于,還包 括計(jì)算作為所述第二結(jié)果(R 2)的函數(shù)的所述第二結(jié)果標(biāo)識(shí)符值 (ID4)的步驟,其中,所述存儲(chǔ)步驟還包括以下步驟將所述第 二選擇標(biāo)識(shí)符值(ID3)和所述第二結(jié)果標(biāo)識(shí)符值(ID4)作為關(guān)聯(lián) 對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)中;以及將所述第二結(jié)果標(biāo)識(shí)符值 (ID4)和所述第二結(jié)果(R2)作為關(guān)聯(lián)對(duì)象存儲(chǔ)在所述數(shù)據(jù)結(jié)構(gòu)中。
8. 根據(jù)前述任一權(quán)利要求所述的方法,其特征在于,各個(gè) 標(biāo)識(shí)符值在統(tǒng)計(jì)上是唯 一 的。
9. 根據(jù)前述任一權(quán)利要求所述的方法,其特征在于,各個(gè) 標(biāo)識(shí)符值是由哈希函數(shù)生成的數(shù)字指紋。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,所述數(shù)字指 紋包括至少256位。
11. 根據(jù)前述任一權(quán)利要求所述的方法,其特征在于,還 包括選擇性刪除步驟,所述選擇性刪除步驟用于至少基于包含所述關(guān)聯(lián)對(duì)象的數(shù)據(jù)記錄的大小,在所述數(shù)據(jù)結(jié)構(gòu)中選擇性地 刪除所述數(shù)據(jù)記錄。
12. 根據(jù)權(quán)利要求ll所述的方法,其特征在于,所述選擇 性刪除步驟用于促進(jìn)刪除包含所述第一結(jié)果(R1)的數(shù)據(jù)記錄。
13. 根據(jù)權(quán)利要求11或12所述的方法,其特征在于,還包 括將各數(shù)據(jù)記錄與權(quán)重值相關(guān)聯(lián)的步驟,其中,作為各數(shù)據(jù)記 錄的使用率參數(shù)、各數(shù)據(jù)記錄的計(jì)算時(shí)間參數(shù)和各數(shù)據(jù)記錄的 大小參數(shù)的函數(shù)而計(jì)算出所述權(quán)重值。
14. 根據(jù)權(quán)利要求13所述的方法,其特征在于,通過(guò)計(jì)算 由W二IPT/M給出的權(quán)重函數(shù)的值來(lái)計(jì)算所述一又重值,其中,U 是所述使用率參數(shù),T是所述計(jì)算時(shí)間參數(shù),并且M是所述大小 參數(shù)。
15. 根據(jù)權(quán)利要求13或14所述的方法,其特征在于,所述 使用率參數(shù)的值在每當(dāng)訪問(wèn)數(shù)據(jù)記錄時(shí)遞增,同時(shí)作為時(shí)間的 函數(shù)指數(shù)遞減。
16. 根據(jù)—又利要求13 15中任一項(xiàng)所述的方法,其特征在 于,所述選擇性刪除步驟基于所述數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)記錄的所 述權(quán)重值。
17. 根據(jù)權(quán)利要求11 16中任一項(xiàng)所述的方法,其特征在于, 所述選擇性刪除步驟基于所述數(shù)據(jù)結(jié)構(gòu)的當(dāng)前大小和閾值之間 的比4交而觸發(fā)。
18. 根據(jù)前述任一權(quán)利要求所述的方法,其特征在于,所 述數(shù)據(jù)庫(kù)是動(dòng)態(tài)數(shù)據(jù)庫(kù),并且作為至少所述第 一 選擇項(xiàng)(S1)和 所述數(shù)據(jù)集(R0)的函數(shù)而計(jì)算出所述第一選擇標(biāo)識(shí)符值(ID1)。
19. 根據(jù)前述任一權(quán)利要求所述的方法,其特征在于,所 述信息包括所述數(shù)據(jù)庫(kù)中的數(shù)據(jù)的分組、排序或聚合。
20. 根據(jù)前述任一權(quán)利要求所述的方法,其特征在于,所述第 一選擇項(xiàng)(S1)定義所述數(shù)據(jù)集(R0)中的字^:和各個(gè)字段的 條件的集合,所述第 一結(jié)果(R1)表示所述數(shù)據(jù)集(R0)的子集, 所述第二選擇項(xiàng)(S 2)定義數(shù)學(xué)函數(shù)、所述第 一 結(jié)果(R1)中所包 括的一個(gè)或多個(gè)計(jì)算變量以及所述第一結(jié)果(R1)中所包括的一 個(gè)或多個(gè)分類(lèi)變量,所述第二結(jié)果(R2)是多維立方體數(shù)據(jù)結(jié)構(gòu), 所述多維立方體數(shù)據(jù)結(jié)構(gòu)包含針對(duì)各分類(lèi)變量的每個(gè)唯一值對(duì) 所述一個(gè)或多個(gè)計(jì)算變量運(yùn)行所述數(shù)學(xué)函數(shù)的結(jié)果。
21. —種存儲(chǔ)有計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算 機(jī)程序用于在由計(jì)算機(jī)執(zhí)行時(shí)執(zhí)行根據(jù)權(quán)利要求1 20中任一 項(xiàng)所述的方法。
22. —種用于從數(shù)據(jù)庫(kù)提取信息的設(shè)備,所述設(shè)備包括用 于執(zhí)行一系列主計(jì)算的部件,所述一系列主計(jì)算包括第一主計(jì) 算(P1)和第二主計(jì)算(P2),所述第一主計(jì)算(P1)對(duì)表示所述數(shù)據(jù) 庫(kù)的數(shù)據(jù)集(RO)運(yùn)行第 一選擇項(xiàng)(S1)以產(chǎn)生第 一結(jié)果(R1),并且 所述第二主計(jì)算(P2)對(duì)所述第 一結(jié)果(R1)運(yùn)行第二選擇項(xiàng)(S2) 以產(chǎn)生第二結(jié)果(R 2),所述設(shè)備還包括通過(guò)以下操作來(lái)高速緩 存所述第 一 結(jié)果(R1)和所述第二結(jié)果(R2)的部件計(jì)算作為至少所述第 一選擇項(xiàng)(Sl)的函數(shù)的第 一選擇標(biāo)識(shí) 符值(ID1),并且計(jì)算作為至少所述第二選擇項(xiàng)(S2)和所述第一 結(jié)果(R1)的函數(shù)的第二選擇標(biāo)識(shí)符值(ID3);以及將所述第 一 選擇標(biāo)識(shí)符值(ID1)和所述第 一 結(jié)果(Rl)以及 所述第二選擇標(biāo)識(shí)符值(ID 3)和所述第二結(jié)果(R2)分別作為關(guān) 聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。
全文摘要
本發(fā)明涉及一種從數(shù)據(jù)庫(kù)提取信息的方法和設(shè)備。使用計(jì)算機(jī)實(shí)現(xiàn)的方法從數(shù)據(jù)庫(kù)提取信息,該方法包括一系列主計(jì)算,在該一系列主計(jì)算中,第一主計(jì)算對(duì)數(shù)據(jù)集運(yùn)行第一選擇項(xiàng)以產(chǎn)生第一結(jié)果,第二主計(jì)算對(duì)第一結(jié)果運(yùn)行第二選擇項(xiàng)以產(chǎn)生第二結(jié)果。將第一結(jié)果和第二結(jié)果高速緩存在計(jì)算機(jī)存儲(chǔ)器中以在方法的后續(xù)迭代中重新使用,由此減少執(zhí)行用于提取信息的第一主計(jì)算和/或第二主計(jì)算的需要。該高速緩存過(guò)程包括計(jì)算作為至少第一選擇項(xiàng)的函數(shù)的第一選擇標(biāo)識(shí)符值,并且計(jì)算作為至少第二選擇項(xiàng)和第一結(jié)果的函數(shù)的第二選擇標(biāo)識(shí)符值;以及將第一選擇標(biāo)識(shí)符值和第一結(jié)果以及第二選擇標(biāo)識(shí)符值和第二結(jié)果分別作為關(guān)聯(lián)對(duì)象存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。
文檔編號(hào)G06F17/30GK101635001SQ20091016132
公開(kāi)日2010年1月27日 申請(qǐng)日期2009年7月20日 優(yōu)先權(quán)日2008年7月18日
發(fā)明者哈坎·沃爾格 申請(qǐng)人:QlikTech國(guó)際公司