專利名稱:當(dāng)應(yīng)用基于用戶的安全性時優(yōu)化數(shù)據(jù)高速緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫的領(lǐng)域。具體地說,本發(fā)明涉及當(dāng)應(yīng)用基于用戶的安全性時優(yōu)化數(shù)據(jù)高速緩存。
背景技術(shù):
業(yè)務(wù)智能(BI)為促進(jìn)工商企業(yè)決策制定及監(jiān)管的軟件類別。BI提供報告/分析工具以分析、預(yù)測及呈現(xiàn)信息亦提供數(shù)據(jù)庫管理系統(tǒng)以組織數(shù)據(jù)庫(諸如在線分析處理(“0LAP”)數(shù)據(jù)庫)中的數(shù)據(jù)、將數(shù)據(jù)存儲在數(shù)據(jù)庫中、取回數(shù)據(jù)庫中的數(shù)據(jù)及管理數(shù)據(jù)庫中的數(shù)據(jù)。OLAP數(shù)據(jù)源及工具為BI工具的子集。OLAP工具為報告生成工具且為數(shù)據(jù)庫軟件類別。OLAP提供用于使用戶根據(jù)用戶預(yù)定義功能來限制原始數(shù)據(jù)及交互地檢查數(shù)據(jù)的各種維度中的結(jié)果的接口。OLAP系統(tǒng)提供數(shù)據(jù)的多維度概念視圖,包括針對分層的完整支持及 多個分層。通常在多用戶客戶端/服務(wù)器模式中實施OLAP工具以提供對查詢的一致快速響應(yīng),而不管數(shù)據(jù)庫大小及復(fù)雜性如何。OLAP允許用戶使用OLAP服務(wù)器來合成信息,所述OLAP服務(wù)器被特定設(shè)計為支持和操作多維度數(shù)據(jù)源。OLAP服務(wù)器的設(shè)計及數(shù)據(jù)的結(jié)構(gòu)被優(yōu)化以用于任何定向上的快速臨時信息取回。就結(jié)構(gòu)及容量而言,如下組織典型OLAP系統(tǒng),其中上層結(jié)構(gòu)元素充當(dāng)下層元素的容器 立方體-每應(yīng)用數(shù)十個 維度-每立方體數(shù)十個,每應(yīng)用數(shù)百個 分層-每維度若干個,每應(yīng)用數(shù)百個 層級-每分層若干個,每應(yīng)用數(shù)百個至數(shù)千個 成員-每層級數(shù)百個至數(shù)千個,每應(yīng)用數(shù)萬個至數(shù)百萬個在BI報告系統(tǒng)中,每個用戶示意動作(gesture)的查詢執(zhí)行必須盡可能地快。通常使用高速緩沖存儲器或高速緩存來加速處理。具體地說,可使用數(shù)據(jù)高速緩存來存儲數(shù)據(jù)(包括元數(shù)據(jù))的常用項目,以便最小化自數(shù)據(jù)源的數(shù)據(jù)取回。圖I展示更通常包括數(shù)據(jù)高速緩存的常規(guī)BI系統(tǒng)。下文進(jìn)一步詳細(xì)地描述此圖。數(shù)據(jù)高速緩存可存儲各種不同類型的數(shù)據(jù),包括元數(shù)據(jù),所述元數(shù)據(jù)被理解為“關(guān)于數(shù)據(jù)的數(shù)據(jù)(data about data)”。例如,可將上述OLAP結(jié)構(gòu)元素的任何實例(諸如“地理”維度或“加拿大”成員)存儲在數(shù)據(jù)高速緩存中。事實上,在假定OLAP數(shù)據(jù)源可為關(guān)系型數(shù)據(jù)庫(該關(guān)系型數(shù)據(jù)庫被組織為在周邊上具有維度表的星型模式,且對于該關(guān)系型數(shù)據(jù)庫,每個維度成員作為一個列被存儲在維度表中)的情況下,成員常常被視為數(shù)據(jù)而非元數(shù)據(jù)。因此,沒有必要針對不同類型的數(shù)據(jù)來區(qū)分不同類型的高速緩存。BI報告系統(tǒng)的不同用戶可具有不同安全性權(quán)限,使得可限制對特定數(shù)據(jù)(包括元數(shù)據(jù))的存取。在與BI報告系統(tǒng)通過接口連接的每個OLAP數(shù)據(jù)源的安全性子系統(tǒng)內(nèi)定義這些安全性權(quán)限。OLAP數(shù)據(jù)源的安全性子系統(tǒng)通常被組織為安全性簡檔集合。用戶被指派至特定安全性組,這些安全性組可為嵌套的且甚至在用戶向BI報告系統(tǒng)認(rèn)證(登錄)之后仍保持固定。用戶亦可被指派許可的安全性角色,且具有在向BI報告系統(tǒng)認(rèn)證(登錄)時選擇這些角色中的一個或多個角色的機會。每個安全性簡檔將一個命名安全性組或角色與一個特定存取權(quán)限集合相關(guān)聯(lián)。OLAP系統(tǒng)可限制對各種不同安全性簡檔的數(shù)據(jù)的存取,其中針對不同類型的數(shù)據(jù)而指定不同規(guī)則。當(dāng)用戶向BI報告系統(tǒng)認(rèn)證(登錄)且查詢來自特定OLAP立方體的數(shù)據(jù)時,該已認(rèn)證用戶的有效安全性簡檔與OLAP數(shù)據(jù)源的組合是定義此用戶的安全性上下文的事項。例如,制作時間乘地理銷售報告(交叉表)的用戶可能沒有資格查看所有潛在可用年份及每個地理位置(例如,國家)的結(jié)果;因此,基于此用戶的安全性上下文(定義對時間及地理維度的存取的有效安全性簡檔)而過濾出某些年份及國家成員。當(dāng)緩存數(shù)據(jù)時,BI系統(tǒng)需要知道何種數(shù)據(jù)在用戶當(dāng)中為通用的且因此可被安全地共享(被不同用戶查看),及何種數(shù)據(jù)不為通用的(亦即,安全的(將不被某些類型的用戶查看)。為了處理此要求,當(dāng)前,大多數(shù)BI系統(tǒng)實施兩種典型方法中的一種典型方法。第一方法是使系統(tǒng)管理員直接在BI系統(tǒng)內(nèi)復(fù)制及重新定義底層OLAP數(shù)據(jù)源的安全性規(guī)則(存取 權(quán)限),且使BI系統(tǒng)作為單個超級用戶而登錄數(shù)據(jù)源。此情形暗示需要在對高速緩存的任何存取之前和/或之后執(zhí)行基于每個用戶的安全性上下文的過濾,以便僅返回每個用戶有資格查看的數(shù)據(jù)。第二方法是使個別BI系統(tǒng)用戶使用其自己的憑證而連接至底層OLAP數(shù)據(jù)源,且在用戶之間不共享任何已緩存的數(shù)據(jù)信息。一般而言,第一方法就性能而言是優(yōu)選的(針對通常大量的成員使用較少高速緩沖存儲器),而第二方法就維護(hù)簡易性而言是優(yōu)選的。關(guān)于在BI系統(tǒng)中重新定義安全性規(guī)則的第一方法,需要在兩個位置維護(hù)每個安全性簡檔BI系統(tǒng)及OLAP數(shù)據(jù)源。除了麻煩以外,此類安全性維護(hù)開銷亦易于出錯。另一方面,關(guān)于通過BI系統(tǒng)創(chuàng)建多個數(shù)據(jù)高速緩存(每用戶一個高速緩存)的第二方法,此方法造成非常無效率地使用內(nèi)存,且在假定通常大量的成員的情況下,此方法就性能而言可被證明是相當(dāng)昂貴的。
發(fā)明內(nèi)容
從第一方面看,本發(fā)明提供一種安全緩存方法。此緩存方法包括接收對數(shù)據(jù)的用戶請求及安全性上下文;基于所述用戶請求和所接收的安全性上下文而在高速緩存內(nèi)搜索所請求的數(shù)據(jù)。如果在所述高速緩存中找到所請求的數(shù)據(jù),則響應(yīng)于所述用戶請求而返回所緩存的數(shù)據(jù)。如果在所述高速緩存中未找到所請求的數(shù)據(jù),則從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián),以及響應(yīng)于所述用戶請求而返回所請求的數(shù)據(jù)。此解決方案在以下方面解決了現(xiàn)有技術(shù)中的缺陷。因為安全性規(guī)則實質(zhì)上“被發(fā)現(xiàn)”且“被表示為安全性列表”(其可置于數(shù)據(jù)高速緩存中),所以當(dāng)個別BI系統(tǒng)用戶提交查詢(報告)時,此數(shù)據(jù)源不可知方法不具有必須在BI系統(tǒng)中重新定義每個安全性規(guī)則的要求。此外,因為安全性列表是對已緩存數(shù)據(jù)的引用的輕量列表,所以已緩存數(shù)據(jù)自身獨立于安全性簡檔且因此幾乎不含有與兌現(xiàn)不同安全性簡檔的存取權(quán)限的要求相關(guān)聯(lián)的冗余性。關(guān)于此解決方案,高速緩沖存儲器的大小得以優(yōu)化且當(dāng)具有相同或不同安全性上下文的愈來愈多的用戶登錄BI系統(tǒng)且提交報告/查詢時將不會顯著地增長。從另一方面看,本發(fā)明提供一種安全緩存方法,包括接收對數(shù)據(jù)的用戶請求及安全性上下文;基于所述用戶請求和所接收的安全性上下文而在高速緩存內(nèi)搜索所請求的數(shù)據(jù);如果在所述高速緩存中找到所請求的數(shù)據(jù),則響應(yīng)于所述用戶請求而返回所緩存的數(shù)據(jù);以及如果在所述高速緩存中未找到所請求的數(shù)據(jù),則從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián),以及響應(yīng)于所述用戶請求而返回所請求的數(shù)據(jù)。優(yōu)選地,本發(fā)明提供一種方法,其中使用將所緩存的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)的對應(yīng)列表來存儲所緩存的數(shù)據(jù),并且其中如果在所述高速緩存中未找到所請求的數(shù)據(jù),則通過存儲對存儲在所述高速緩存中的所獲得的數(shù)據(jù)的引用而生成新列表以便將存儲在所述高速緩存中的所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)。優(yōu)選地,本發(fā)明提供一種方法,其中將所述新列表存儲在列表存儲單元中,在所述 列表存儲單元中,所存儲列表的數(shù)目基于所接收的用戶查詢而遞增地增加。優(yōu)選地,本發(fā)明提供一種方法,還包括如果所緩存的數(shù)據(jù)中的改變損害列表的完整性,則從列表存儲單元清除該列表。優(yōu)選地,本發(fā)明提供一種方法,還包括在使用所述高速緩存之前初始化列表存儲單元,其中所述初始化包括將針對常用安全性上下文的常用數(shù)據(jù)的查詢提交給所述數(shù)據(jù)源;將所述查詢的結(jié)果加載至所述高速緩存;以及創(chuàng)建引用所緩存的數(shù)據(jù)的安全性列表。優(yōu)選地,本發(fā)明提供一種方法,還包括針對冗余性而檢查所存儲的列表,并且如果找到兩個相同列表,則將所述兩個相同列表合并成單個列表。優(yōu)選地,本發(fā)明提供一種方法,其中所述數(shù)據(jù)是元數(shù)據(jù)。優(yōu)選地,本發(fā)明提供一種方法,其中所述安全性簡檔是用戶安全性簡檔。從另一方面看,本發(fā)明提供一種在連接至用戶及數(shù)據(jù)源的系統(tǒng)中的安全緩存方法,所述數(shù)據(jù)源具有基于用戶的安全性上下文的已定義存取權(quán)限。所述方法包括接收包括安全性上下文及數(shù)據(jù)標(biāo)識符的用戶請求;以及在列表存儲器中檢查通過所述安全性上下文及所述數(shù)據(jù)標(biāo)識符所標(biāo)識的列表的存在。如果不存在所述列表,則在所述列表存儲器中創(chuàng)建通過所述安全性上下文及所述數(shù)據(jù)標(biāo)識符所標(biāo)識的列表、從所述數(shù)據(jù)源取回數(shù)據(jù)且將所取回的數(shù)據(jù)存儲在數(shù)據(jù)存儲器中,及使用存儲在所述數(shù)據(jù)存儲器中的所取回數(shù)據(jù)的存儲地址填充所創(chuàng)建的列表。如果存在所述列表,則使用所述列表中的所述存儲地址從所述數(shù)據(jù)存儲器取回數(shù)據(jù)。優(yōu)選地,本發(fā)明提供一種方法,其中所述數(shù)據(jù)標(biāo)識符是立方體維度標(biāo)識符。優(yōu)選地,本發(fā)明提供一種方法,其中所述數(shù)據(jù)存儲器是包括從多個異構(gòu)遠(yuǎn)程數(shù)據(jù)源提供的數(shù)據(jù)的高速緩存。優(yōu)選地,本發(fā)明提供一種方法,還包括預(yù)加載所述數(shù)據(jù)存儲器和所述列表存儲器,其中所述列表存儲器預(yù)加載有與常用安全性上下文和數(shù)據(jù)標(biāo)識符對應(yīng)的列表,并且所述數(shù)據(jù)存儲器預(yù)加載有由預(yù)加載的列表引用的常用數(shù)據(jù)。優(yōu)選地,本發(fā)明提供一種方法,其中存儲在數(shù)據(jù)存儲器中的數(shù)據(jù)是OLAP元數(shù)據(jù)。從另一方面看,本發(fā)明提供一種緩存系統(tǒng),包括處理器,其執(zhí)行軟件模塊;以及內(nèi)存,其存儲所述軟件模塊,其中所述軟件模塊包括接收器模塊,其接收對數(shù)據(jù)的用戶請求和安全性上下文;搜索模塊,其基于所述用戶請求和所接收的安全性上下文而在高速緩存內(nèi)搜索所請求的數(shù)據(jù);管理模塊,如果在所述高速緩存中找到所請求的數(shù)據(jù),則所述管理模塊響應(yīng)于所述用戶請求而獲得所緩存的數(shù)據(jù);并且其中如果在所述高速緩存中未找到所請求的數(shù)據(jù),則所述管理模塊從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián),以及響應(yīng)于所述用戶請求而返回所請求的數(shù)據(jù)。優(yōu)選地,本發(fā)明提供一種系統(tǒng),其中如果所述搜索模塊在所述高速緩存中未找到所請求的數(shù)據(jù),則所述管理模塊通過存儲對存儲在所述高速緩存中的所獲得的數(shù)據(jù)的引用而生成新列表以便將存儲在所述高速緩存中的所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)。優(yōu)選地,本發(fā)明提供一種系統(tǒng),其中所述管理模塊將所述新列表存儲在列表存儲單元中,在所述列表存儲單元中,所存儲列表的數(shù)目基于所接收的用戶查詢而遞增地增加。優(yōu)選地,本發(fā)明提供一種系統(tǒng),還包括清除模塊,如果所緩存的數(shù)據(jù)中的改變損 害列表的完整性,則所述清除模塊從列表存儲單元清除該列表。優(yōu)選地,本發(fā)明提供一種系統(tǒng),還包括預(yù)加載模塊,所述預(yù)加載模塊在使用所述高速緩存之前初始化列表存儲單元,其中所述預(yù)加載模塊將針對常用安全性上下文的常用數(shù)據(jù)的查詢提交給所述數(shù)據(jù)源、將所述查詢的結(jié)果加載至所述高速緩存,以及創(chuàng)建引用所緩存的數(shù)據(jù)的新安全性列表。優(yōu)選地,本發(fā)明提供一種系統(tǒng),還包括檢查模塊,所述檢查模塊針對冗余性而檢查所存儲的列表,且如果找到兩個相同列表,則所述檢查模塊將所述兩個相同列表合并成單個列表。從另一方面看,本發(fā)明提供一種存儲用于安全緩存的指令的計算機可讀介質(zhì),所述指令包括接收對數(shù)據(jù)的用戶請求及安全性上下文;及基于所述用戶請求及所接收的安全性上下文而在高速緩存內(nèi)搜索所請求的數(shù)據(jù);如果在所述高速緩存中找到所請求的數(shù)據(jù),則響應(yīng)于所述用戶請求而返回所緩存的數(shù)據(jù);以及如果在所述高速緩存中未找到所請求的數(shù)據(jù),則從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)。優(yōu)選地,本發(fā)明提供一種計算機可讀介質(zhì),其中所述指令還包括如果在所述高速緩存中未找到所請求的數(shù)據(jù),則通過存儲對存儲在所述高速緩存中的所獲得的數(shù)據(jù)的引用而生成新列表以便將存儲在所述高速緩存中的所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)。優(yōu)選地,本發(fā)明提供一種計算機可讀介質(zhì),其中所述指令還包括將所述新列表存儲在列表存儲單元中,在所述列表存儲單元中,所存儲列表的數(shù)目基于所接收的用戶查詢而遞增地增加。優(yōu)選地,本發(fā)明提供一種計算機可讀介質(zhì),其中所述指令還包括如果所緩存的數(shù)據(jù)中的改變損害列表的完整性,則從列表存儲單元清除該列表。優(yōu)選地,本發(fā)明提供一種計算機可讀介質(zhì),其中所述指令還包括在使用所述高速緩存之前初始化列表存儲單元,其中所述初始化包括將針對常用安全性上下文的常用數(shù)據(jù)的查詢提交給所述數(shù)據(jù)源;將所述查詢的結(jié)果加載至所述高速緩存;以及創(chuàng)建引用所緩存的數(shù)據(jù)的新安全性列表。
優(yōu)選地,本發(fā)明提供一種計算機可讀介質(zhì),其中所述指令還包括針對冗余性而檢查所存儲的列表,并且如果找到兩個相同列表,則將所述兩個相同列表合并成單個列表。
圖I是示出本領(lǐng)域中公知的BI系統(tǒng)的方塊圖;圖2是示出具有根據(jù)本發(fā)明的一個優(yōu)選實施例所實施的數(shù)據(jù)緩存的BI系統(tǒng)的方塊圖;圖3是展示根據(jù)本發(fā)明的一個優(yōu)選實施例的示例性安全性列表的結(jié)構(gòu)的視圖;圖4A至圖4E是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的地理維度的安全性權(quán)限和對應(yīng)安全性列表的示意圖;圖5是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的安全成員緩存過程的流程圖; 圖6是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的安全性列表的生成的流程圖;圖7A及圖7B是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的安全性列表的刪除的流程圖;以及圖8是示出根據(jù)本發(fā)明的一個優(yōu)選實施例的本發(fā)明的示例性實施例可在其中運行的計算機系統(tǒng)環(huán)境的示意圖。
具體實施例方式為了幫助對比本發(fā)明的某些實施例與常規(guī)數(shù)據(jù)緩存系統(tǒng),現(xiàn)參看圖I來論述常規(guī)數(shù)據(jù)緩存系統(tǒng)。如上文所提及,圖I是示出根據(jù)相關(guān)技術(shù)的具有常規(guī)數(shù)據(jù)高速緩存的BI系統(tǒng)的方塊圖。在圖I中,客戶端102使用查詢服務(wù)112來請求數(shù)據(jù)。將使用查詢服務(wù)112所生成的查詢作為請求IllA而提供至緩存單元110。緩存單元110包括數(shù)據(jù)緩存模塊111,其與查詢服務(wù)及緩存單元110的模塊通過接口連接;配置模塊114,其影響緩存行為;數(shù)據(jù)存儲器117,其存儲數(shù)據(jù);及數(shù)據(jù)源接口 115,其從一個或多個第三方數(shù)據(jù)源101取回信息。數(shù)據(jù)緩存模塊111提供從存儲器117獲得的所取回數(shù)據(jù),或如果在存儲器117中得不到所取回的數(shù)據(jù),則數(shù)據(jù)緩存模塊111在對查詢服務(wù)112的響應(yīng)IllB中提供從第三方數(shù)據(jù)源101獲得的所取回數(shù)據(jù),查詢服務(wù)112又將所取回的數(shù)據(jù)提供至客戶端102。在此常規(guī)系統(tǒng)中,如果第三方數(shù)據(jù)源101采用影響不同用戶的數(shù)據(jù)可見性/可存取性的安全性規(guī)則,則通常應(yīng)用上文在“背景技術(shù)”章節(jié)中所描述的兩種典型方法中的一種典型方法。圖2展示具有根據(jù)本發(fā)明的一個示例性實施例所實施的高速緩存的BI系統(tǒng)。對于此示例性實施例中的成員取回,當(dāng)從客戶端202接收用戶查詢時,查詢服務(wù)212進(jìn)行對緩存單元210的必要成員請求211A,以便滿足原始查詢,從而隨每個此類請求一起傳遞維度標(biāo)識符(例如,“地理”)及用戶的安全性上下文。數(shù)據(jù)緩存模塊211充當(dāng)接收請求211A且與緩存配置模塊214及“安全性感知(security aware)”層216通過接口連接的接口?!鞍踩愿兄睂?16管理存儲在安全性列表存儲器218中的安全性列表?!鞍踩愿兄睂?16創(chuàng)建、更新及刪除存儲在安全性列表存儲器218中的安全性列表。保留在安全性列表存儲器218中的列表引用保留在數(shù)據(jù)存儲器217中的所緩存數(shù)據(jù)?!鞍踩愿兄睂?16管理包括各種成員之間的關(guān)系的所有安全性上下文信息,其對于不同安全性上下文可能不同?!鞍踩愿兄睂?16維護(hù)緩存單元210的數(shù)據(jù)存儲器217。對于此示例性實施例中的成員取回,“安全性感知”層216在安全性列表存儲器218中檢查由用戶安全性上下文及維度標(biāo)識符所標(biāo)識的安全性列表的存在。如果存在安全性列表,則安全性列表存儲器218返回對存在于存儲在數(shù)據(jù)存儲器217中的成員的已找到安全性列表中的一個或多個存儲地址的鏈接;可接著通過“安全性感知”層216直接從數(shù)據(jù)存儲器217取回成員數(shù)據(jù)且在對查詢服務(wù)212的響應(yīng)211B中返回成員數(shù)據(jù)。如果不存在安全性列表,則“安全性感知”層216指示數(shù)據(jù)源接口 215從與用戶的安全性上下文相關(guān)聯(lián)的數(shù)據(jù)源201取回維度成員。如果所得到的成員(及其屬性)尚未存在于數(shù)據(jù)存儲器217中,則將所得成員(及其屬性)存儲在數(shù)據(jù)存儲器217中且“安全性感知”層216使用對應(yīng)存儲地址以在安全性列表存儲器218中創(chuàng)建新安全性列表。如果某些成員已經(jīng)存儲在數(shù)據(jù)存儲器217中,則不復(fù)制這些成員,而在新安全性列表中使用現(xiàn)有存儲地址。接著通過緩存單元210經(jīng)由響應(yīng)211B而將所請求的成員返回至查詢服務(wù)212。圖3是示出根據(jù)本發(fā)明的一個實施例的含有對已緩存成員的引用的安全性列表 的示例性結(jié)構(gòu)的示意圖。在圖3中,安全性列表320具有包括安全性上下文字段321及維度字段322的標(biāo)頭。此標(biāo)頭標(biāo)識安全性列表。安全性列表320的正文330包括到與此安全性列表相關(guān)聯(lián)的成員的高速緩存中的存儲位置的地址(例如,索引)列表。例如,安全性上下文字段321的值為“歐洲銷售經(jīng)理” 323,且維度字段322的值為“地理” 324。安全性列表的正文330包括一個或多個地址,其中對應(yīng)成員存儲在高速緩存(例如,圖2的數(shù)據(jù)存儲器217)中。例如,安全性列表的正文330包括已緩存成員“西班牙”的地址、已緩存成員“荷蘭”的地址,以及已緩存成員“意大利”的地址。圖4A是示出根據(jù)本發(fā)明的一個示例性實施例的具有層級及成員的單個分層的地理維度的示意圖。可將地理維度分割為四個層級具有成員內(nèi)華達(dá)州及安大略省的州/省層級;具有成員美國、加拿大、法國、意大利的國家層級;具有成員北美洲及歐洲的洲層級;及主層級或根層級,亦即,所有地理層級。如圖4B所示,不同用戶可能能夠存取地理維度的每個層級內(nèi)的不同層級及成員。例如,用戶A可能僅存取洲層級成員北美洲的數(shù)據(jù)。因此,用戶A被授予對北美洲成員及任何較低層級成員(諸如美國及加拿大)的存取。亦即,針對用戶A的根節(jié)點成員為北美洲,且用戶A可存取北美洲的所有子代節(jié)點。另一方面,用戶A不能存取在國家層級下的其它地理維度成員(諸如歐洲及其子代節(jié)點)。圖4C展示根據(jù)一個示例性實施例的針對各種用戶的相同維度的示例性視圖。例如,用戶A可存取北美洲成員及所有其子代節(jié)點,用戶B可存取歐洲成員及所有其子代節(jié)點,且用戶C可存取地理維度的所有成員。圖4D說明使用與一個或多個用戶的安全性上下文相關(guān)聯(lián)的安全性列表以提供對高速緩存內(nèi)的維度及成員的存取。用戶A及用戶E皆具有安全性上下文簡檔I。當(dāng)用戶A或用戶E請求數(shù)據(jù)時,發(fā)現(xiàn)簡檔I的安全性列表。此簡檔I安全性列表將具有該安全性上下文的用戶(例如,用戶A及用戶E)鏈接至北美洲成員及所有其子代。圖4E展示其它安全性上下文的額外安全性列表簡檔2及簡檔3。此處,用戶B具有簡檔2以作為其安全性上下文。此安全性上下文與簡檔2安全性列表相關(guān)聯(lián),該簡檔2安全性列表將用戶B鏈接至歐洲成員及所有其子代。用戶C及用戶D具有簡檔3以作為其安全性上下文。此安全性上下文與簡檔3安全性列表相關(guān)聯(lián),該簡檔3安全性列表將用戶C及用戶D鏈接至地理維度中的所有成員。圖5是示出根據(jù)本發(fā)明的一個示例性實施例的安全成員緩存過程的流程圖。在操作501中,接收用戶查詢。盡管提交至BI系統(tǒng)的查詢引擎的用戶查詢潛在地引用多個維度,但通過查詢服務(wù)將這些查詢分解為若干子查詢,且因此,可假定通過此安全成員緩存過程接收的用戶查詢是針對單個維度的成員請求。此用戶查詢亦包括用戶的安全性上下文。如上文所描述,BI系統(tǒng)的給定用戶的安全性上下文(針對特定OLAP數(shù)據(jù)源的查詢/報告數(shù)據(jù))由用于該已認(rèn)證用戶及該OLAP數(shù)據(jù)源的“有效”安全性簡檔來定義(基于此用戶所屬的安全性組及在登錄時所選擇的任何角色)。亦即,當(dāng)用戶與BI系統(tǒng)交互時,可修改用戶的安全性上下文。例如,當(dāng)準(zhǔn)備針對特定OLAP立方體進(jìn)行報告時,可提示用戶進(jìn)一步描述他/她在組織內(nèi)的角色。一旦認(rèn)證此角色,此角色隨即將變成此用戶的安全性上下文的一部分以用于在BI系統(tǒng)中的后續(xù)動作,且安全成員緩存過程隨即將此修改后的安全性上下文視為不同安全性上下文。
在操作502中,基于在操作501中接收的用戶查詢中識別的維度及安全性上下文來執(zhí)行在安全性列表中的搜索。如果找到匹配(操作503-是),則在操作505中獲得高速緩存中的對應(yīng)成員數(shù)據(jù)的地址信息。在操作506中,接著通過使用所獲得的地址信息而直接從高速緩存取回所請求的成員數(shù)據(jù)。另一方面,如果未找到當(dāng)前安全性上下文及維度的安全性列表(操作503-否),則在操作504中從數(shù)據(jù)源取回所請求的成員且將所請求的成員存儲在高速緩存中。在操作507中,在高速緩存中創(chuàng)建含有至存儲在高速緩存中的成員的地址的新安全性列表。在一個示例性實施例中,每個維度成員在數(shù)據(jù)高速緩存中僅被存儲一次。當(dāng)向數(shù)據(jù)高速緩存進(jìn)行針對該維度已經(jīng)遇到的用戶安全性上下文的維度成員取回請求時,無需查詢底層數(shù)據(jù)源;僅僅返回通過針對當(dāng)前維度及用戶安全性上下文的安全性列表所指向的已緩存成員。共享相同安全性上下文的每個用戶(例如,在加拿大的每個銷售經(jīng)理)將能夠使用與該安全性上下文相關(guān)聯(lián)的安全性列表來存取存儲在高速緩存中的數(shù)據(jù)。圖6是示出根據(jù)一個示例性實施例的在安全成員緩存過程中安全性列表的生成的流程圖。在操作601中,接收用戶查詢。在操作602中,所述過程基于在所接收的用戶查詢中獲得的安全性上下文及維度來搜索安全性列表。具體地說,根據(jù)預(yù)定規(guī)則將所獲得的維度及安全性上下文組合為關(guān)鍵字或標(biāo)識符。使用此生成的關(guān)鍵字來搜索現(xiàn)有安全性列表。如果存在由所生成的關(guān)鍵字標(biāo)識的安全性列表(操作603-是),則所述過程結(jié)束(操作610)。另一方面,如果未找到此列表(操作603-否),則在操作604中生成新安全性列表。例如,將初始化新安全性列表以包括關(guān)鍵字字段及地址字段。關(guān)鍵字字段被指派有對應(yīng)于所生成的關(guān)鍵字的值。接下來,在操作605中,針對當(dāng)前用戶的安全性上下文中的當(dāng)前維度而從數(shù)據(jù)源取回成員數(shù)據(jù)。接下來,在操作606中,檢查每個所返回成員是否存在于高速緩存中。如果該成員已經(jīng)存在于高速緩存中(操作606-是),則在操作607中將對此成員的引用(諸如該成員在高速緩存中的地址)插入新安全性列表中。
如果該成員未存儲在高速緩存中(操作606-否),則在操作608中使用此成員的數(shù)據(jù)填充該高速緩存,且在操作609中將對該成員的引用(諸如該成員數(shù)據(jù)在高速緩存中的地址)添加至新安全性列表。接下來,所述過程繼續(xù)針對下一所返回成員實施類似操作。如果未返回其它維度成員,則所述過程返回至其結(jié)束所在的操作610。圖7A及圖7B是示出根據(jù)本發(fā)明的一個示例性實施例的安全性列表的刪除的流程圖。BI系統(tǒng)修訂用于高速緩存的常規(guī)驅(qū)逐策略以包括安全性列表的刪除。具體地說,可“逐維度地”進(jìn)行用于高速緩存的驅(qū)逐策略,這通過高速緩存大小限制或時間限制來觸發(fā)。在圖7A中,在操作701中接收從高速緩存刪除數(shù)據(jù)(在此實例中為元數(shù)據(jù))的請求,且標(biāo)記該元數(shù)據(jù)以供刪除。例如,已達(dá)到高速緩存的大小限制,且正在逐維度地從高速緩存清除元數(shù)據(jù)以釋放內(nèi)存而用于后續(xù)元數(shù)據(jù)。備選地,可以以時間為基礎(chǔ)來清除元數(shù)據(jù)。例如,如果維度中的任何元數(shù)據(jù)未被使用達(dá)到預(yù)定時段,則自高速緩存清除該維度的元數(shù)據(jù)??墒褂盟鰞煞N 方法的組合來判定要從高速緩存刪除的元數(shù)據(jù)。此外,高速緩存可能由于安全性規(guī)則改變或底層數(shù)據(jù)源中的其它元數(shù)據(jù)改變(例如,緩慢改變的維度有時發(fā)生的成員數(shù)據(jù)更新或刪除)而需要清除元數(shù)據(jù)。在一個示例性實施例中,為了確保高速緩存足夠新,提供一個用戶可配置的期滿時期。如果達(dá)到該期滿時期,則清除及重新加載高速緩存數(shù)據(jù)。在一個示例性實施例中,此方案可與所有源系統(tǒng)類型一起工作且無需關(guān)于底層安全性系統(tǒng)的特定知識。如果判定維度更新或安全性更新(諸如更新的觸發(fā)或輪詢)的工具可用,則使用這些工具以知曉何時更新高速緩存。根據(jù)預(yù)定方案,在操作702中尋找被標(biāo)記為供刪除的元數(shù)據(jù)。在操作703中,獲得被標(biāo)記為供刪除的元數(shù)據(jù)的地址。暫時存儲元數(shù)據(jù)的地址,使得可確定對應(yīng)安全性列表。在操作704中,刪除所標(biāo)記的元數(shù)據(jù)。在操作705中,使用元數(shù)據(jù)的所存儲地址以在安全性列表內(nèi)尋找此元數(shù)據(jù)。所述安全性列表存儲至高速緩存中的元數(shù)據(jù)位置的指針。因此,如果保留于安全性列表中的任何指針指向已刪除元數(shù)據(jù)項的高速緩存位置,則需要從該安全性列表刪除該指針,所述刪除通過操作706執(zhí)行。圖7B所例示的備選驅(qū)逐策略可基于維度的唯一標(biāo)識符。例如,所述維度可為地理。在操作711中接收從高速緩存刪除此維度的請求。在操作712中,系統(tǒng)搜索由地理維度部分地標(biāo)識的所存儲安全性列表。在操作713中,系統(tǒng)判定當(dāng)前安全性列表是否以地理維度作為關(guān)鍵字。如果當(dāng)前安全性列表未以地理維度作為關(guān)鍵字(操作713-否),則在操作714中執(zhí)行檢查以判定最后列表是否被檢查。如果存在其它安全性列表,則系統(tǒng)返回操作712,以檢查更多列表是否以所請求的維度作為關(guān)鍵字。例如,一個安全性列表可能針對“員工”安全性上下文及地理維度,另一安全性列表可能針對“銷售經(jīng)理”安全性上下文及時間維度,且另一列表可能針對“出納員”安全性上下文及地理維度。接著,如果要從高速緩存刪除的維度為地理,則需要刪除由此維度標(biāo)識的所有安全性列表,這意味著要刪除安全性列表“員工” /地理及“出納員” /地理。如果通過所請求維度部分地標(biāo)識當(dāng)前安全性列表(操作713-是),則在操作715中刪除此安全性列表。系統(tǒng)接著檢查是否存在需要針對該維度而檢查的其它列表(操作714)。如果存在其它列表(操作714-否),則系統(tǒng)返回操作712,以檢查更多列表是否以所請求的維度作為關(guān)鍵字。另一方面,如果已檢查所有列表(在操作714中-是),則接著在操作716中在高速緩存中搜索維度。系統(tǒng)基于相同的唯一關(guān)鍵字或標(biāo)識符(其可為(例如)字符串“地理”)而在高速緩存中搜索維度。如果在元數(shù)據(jù)高速緩存中未找到此維度(操作717-否),則所述過程結(jié)束。如果找到該維度(操作717-是),則系統(tǒng)在操作718中從高速緩存刪除該維度。在一個示例性實施例中且作為BI系統(tǒng)的額外優(yōu)化,可將常用數(shù)據(jù)預(yù)加載至高速緩存中??商崆?當(dāng)系統(tǒng)啟動時)通過提交針對更常用維度的成員查詢(代表屬于存取該系統(tǒng)的主安全性簡檔的實例用戶)而將成員數(shù)據(jù)預(yù)加載至數(shù)據(jù)高速緩存。此外,作為BI系統(tǒng)的額外優(yōu)化,可在BI系統(tǒng)環(huán)境內(nèi)提供建模工具,其目的是表示OLAP立方體元數(shù)據(jù)(諸如維度、分層及層級)以及使用自動地提供至BI系統(tǒng)查詢引擎的新屬性擴充此元數(shù)據(jù)。接著,通過在此建模工具中支持新維度屬性(例如,被稱為“安全”),建模者可指定哪些立方體內(nèi)的哪些維度實際上需要安全性處理。因此,每當(dāng)被返回至呼叫查 詢引擎的成員是針對無需為安全的維度(亦即,如下維度該維度將從未具有應(yīng)用于其的安全性,從而使得適于在不關(guān)注對可見性的限制的情況下直接返回其所緩存成員)時,便可通過高速緩存取回邏輯來檢驗此屬性的值以消除創(chuàng)建(及處理)安全性列表的開銷。作為用于安全性感知成員緩存的另一內(nèi)存優(yōu)化技術(shù),一個示例性實施例可包括單獨活動,其并行地執(zhí)行或根據(jù)調(diào)度執(zhí)行,以識別相同安全性列表且將這些相同安全性列表合并成單個列表。已被以此方式合并的任何兩個相同列表將源于在兩個不同安全性上下文中屬于相同維度的成員的查詢。一旦這兩個列表變成單個列表,標(biāo)識此單個列表的關(guān)鍵字機制隨即將確保已促成原始列表創(chuàng)建的兩個安全性上下文中的任一安全性上下文現(xiàn)與所得到的單個列表相關(guān)聯(lián)。另外,取決于可用系統(tǒng)資源,可定制高速緩存大小以使用不同類型的存儲機制來保留不同的數(shù)據(jù)量。例如,緩存層可對一個維度中有多少將存儲在RAM中與有多少將存儲在磁盤上進(jìn)行平衡。大型維度可含有1,000, 000個以上元數(shù)據(jù)成員。因此,即使1,000, 000個成員實際上存在于高速緩存中,這些成員也可被保留在RAM中或被分頁至磁盤。上文所提供的示例性實施例描述關(guān)于OLAP成員的緩存??墒褂蒙鲜鍪纠越Y(jié)構(gòu)及方法來實施各種不同類型的數(shù)據(jù)(諸如元數(shù)據(jù))的緩存。亦即,盡管所描述的示例性實施例相當(dāng)有益于在連接至安全OLAP數(shù)據(jù)源的系統(tǒng)中進(jìn)行安全成員緩存,但可將所述安全成員緩存用于涉及其它類型的數(shù)據(jù)的實施例中。例如,當(dāng)對這些類型的數(shù)據(jù)的存取根據(jù)所述數(shù)據(jù)源的規(guī)則而需要為安全時,可使用所述安全成員緩存以優(yōu)化含有OLAP維度數(shù)據(jù)、分層數(shù)據(jù)及層級數(shù)據(jù)的高速緩存。當(dāng)對元組值的存取需要為安全時,亦可使用所述安全成員緩存以優(yōu)化含有OLAP單元數(shù)據(jù)(cell data)的高速緩存。此外,每當(dāng)對特定已緩存數(shù)據(jù)的存取根據(jù)安全非OLAP數(shù)據(jù)源的規(guī)則而需要為安全時,便可使用所述安全成員緩存以優(yōu)化在連接至所述數(shù)據(jù)源的系統(tǒng)中的含有非OLAP數(shù)據(jù)的高速緩存。圖8是示出根據(jù)一個示例性實施例的計算機/服務(wù)器系統(tǒng)800的方塊圖。系統(tǒng)800包括計算機/服務(wù)器平臺801、外圍設(shè)備802及網(wǎng)絡(luò)資源803。計算機平臺801可包括數(shù)據(jù)總線804或其它通信機制,其用于跨越計算機平臺801的各部分及在這些部分之間傳送信息;及處理器805,其與總線804耦合以用于處理信息且執(zhí)行其它計算及控制任務(wù)。計算機平臺801亦包括易失性存儲器806 (諸如隨機存取內(nèi)存(RAM)或其它動態(tài)存儲器件),其耦合至總線804以用于存儲各種信息以及要由處理器805執(zhí)行的指令。易失性存儲器806亦可用于在通過處理器805執(zhí)行指令期間存儲暫時變量或其它中間信息。計算機平臺801可進(jìn)一步包括只讀存儲器(ROM或EPR0M) 807或其它靜態(tài)存儲器件,其耦合至總線804以用于存儲用于處理器805的靜態(tài)信息及指令(諸如基本輸入輸出系統(tǒng)(BIOS))以及各種系統(tǒng)配置參數(shù)。提供永久性存儲設(shè)備808 (諸如磁盤、光盤或固態(tài)閃存設(shè)備)且將其耦合至總線804以用于存儲信息及指令。例如,永久性存儲設(shè)備808可存儲一個或多個安全性列表,且亦可包括存儲元數(shù)據(jù)成員的高速緩存。計算機平臺801可經(jīng)由總線804而耦合至顯示器809 (諸如陰極射線管(CRT)、等離子顯示器或液晶顯示器(IXD))以用于向計算機平臺801的用戶顯示信息。輸入設(shè)備820(包括字母數(shù)字鍵及其它鍵)耦合至總線804以用于將信息及命令選擇傳送至處理器805。另一類型的用戶輸入設(shè)備是光標(biāo)控制設(shè)備811 (諸如鼠標(biāo)、軌跡球或光標(biāo)方向鍵)以用于將 方向信息及命令選擇(諸如OLAP查詢)傳送至處理器805且用于控制顯示器809上的光標(biāo)移動。此輸入設(shè)備通常具有在兩個軸線(第一軸線(例如,x)及第二軸線(例如,y 上的兩個自由度,這允許該設(shè)備在平面中指定位置。外部存儲設(shè)備(數(shù)據(jù)源)812可經(jīng)由總線804而連接至計算機平臺801,外部存儲設(shè)備812存儲由計算機平臺801使用的元數(shù)據(jù)。盡管出于簡單性的目的而僅描繪一個數(shù)據(jù)源812,但可存在數(shù)個數(shù)據(jù)源812以及其它類型的數(shù)據(jù)源。如本文所使用的術(shù)語“計算機可讀介質(zhì)”指參與將指令提供至處理器805以供執(zhí)行的任何介質(zhì)。計算機可讀介質(zhì)可為計算機可讀信號介質(zhì)或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可為(例如(但不限于))電子、磁性、光學(xué)、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置或設(shè)備,或前述各者的任何合適組合。計算機可讀存儲介質(zhì)的更多特定實例(非詳盡列表)將包括以下項具有兩個或兩個以上導(dǎo)線的電連接;諸如軟性磁盤或柔性磁盤的便攜計算機磁盤;磁帶或任何其它磁性介質(zhì);硬盤;隨機存取存儲器(RAM);只讀存儲器(ROM);可擦除可編程只讀存儲器(EPR0M或閃存);記憶卡;任何其它內(nèi)存芯片或卡盒;光纖;便攜光盤只讀存儲器(CD-ROM);任何其它光學(xué)介質(zhì);打孔卡;紙帶;具有孔圖案的任何其它物理介質(zhì)或可供計算機讀取的任何其它介質(zhì);或前述各者的合適組合。在此文檔的上下文中,計算機可讀存儲介質(zhì)可為可含有或存儲供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的程序的任何有形介質(zhì)。計算機可讀信號介質(zhì)可包括體現(xiàn)有計算機可讀程序代碼的傳播數(shù)據(jù)信號,例如,在基頻中或作為載波的一部分。此傳播信號可采取多種形式中的任一形式,包括(但不限于)電磁形式、光學(xué)形式或其任何合適組合。計算機可讀信號介質(zhì)可包括同軸電纜、銅線及光纖,包括包含數(shù)據(jù)總線804的導(dǎo)線。計算機可讀信號介質(zhì)可為并非計算機可讀存儲介質(zhì)且可傳送、傳播或傳送供指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的程序的任何計算機可讀介質(zhì)。體現(xiàn)于計算機可讀介質(zhì)上的程序代碼可使用包括(但不限于)以下各者的任何適當(dāng)介質(zhì)進(jìn)行傳輸無線介質(zhì)、有線介質(zhì)、光纜介質(zhì)、RF介質(zhì),等等,或前述各者的任何合適組
八
口 o
可以一種或多種編程語言的任何組合來編寫用于實現(xiàn)示例性實施例的各方面的操作的計算機程序碼,所述一種或多種編程語言包括面向?qū)ο蟮木幊陶Z言(諸如Java、Smalltalk、C+、. Net或其類似者)及常規(guī)過程編程語言。程序代碼可完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為獨立軟件包執(zhí)行、部分地在用戶計算機上執(zhí)行且部分地在遠(yuǎn)程計算機上執(zhí)行,或完全地在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。遠(yuǎn)程計算機可經(jīng)由任何類型的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))而連接至用戶計算機,或可進(jìn)行至外部計算機的連接(例如,在使用因特網(wǎng)服務(wù)提供者的情況下經(jīng)由因特網(wǎng))。計算機可讀介質(zhì)只是機器可讀介質(zhì)的一個實例,其可承載用于實施本文所描述的方法和/或技術(shù)中的任一者的指令。此介質(zhì)可采取許多形式,包括(但不限于)非易失性介質(zhì)及易失性介質(zhì)。非易失性介質(zhì)包括(例如)光盤或磁盤,如存儲設(shè)備808。易失性介質(zhì)包括動態(tài)內(nèi)存,諸如易失性存儲器806??稍趯⒁粋€或多個指令的一個或多個序列攜帶至處理器805以供執(zhí)行時涉及各種形式的計算機可讀介質(zhì)。例如,所述指令可初始被從遠(yuǎn)程計算機攜帶到磁盤上。備選地,遠(yuǎn)程計算機可將所述指令加載至其動態(tài)內(nèi)存中且使用調(diào)制解調(diào)器經(jīng)由電話線而發(fā)送所述 指令。在計算機系統(tǒng)800本地的調(diào)制解調(diào)器可在電話線上接收數(shù)據(jù)且使用紅外線傳輸器以將數(shù)據(jù)轉(zhuǎn)換為紅外線信號。紅外線檢測器可接收在紅外線信號中所攜帶的數(shù)據(jù),且適當(dāng)電路可將數(shù)據(jù)置于數(shù)據(jù)總線804上??偩€804將數(shù)據(jù)攜帶至易失性存儲器806,處理器805從易失性存儲器806取回指令且執(zhí)行指令。通過易失性內(nèi)存806接收的指令可視情況在通過處理器805執(zhí)行之前或之后存儲在永久性存儲設(shè)備808上。亦可使用本領(lǐng)域公知的多種網(wǎng)絡(luò)數(shù)據(jù)通信協(xié)議經(jīng)由因特網(wǎng)而將指令下載至計算機平臺801中。計算機平臺801亦包括通信接口,諸如耦合至數(shù)據(jù)總線804的網(wǎng)絡(luò)接口卡813。通信接口 813提供至連接至本地網(wǎng)絡(luò)815的網(wǎng)絡(luò)鏈路814的雙向數(shù)據(jù)通信耦合。例如,通信接口 813可為集成業(yè)務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)卡或調(diào)制解調(diào)器以提供至對應(yīng)類型的電話線的數(shù)據(jù)通信連接。作為另一實例,通信接口 813可為局域網(wǎng)絡(luò)接口卡(LAN NIC)以提供至兼容LAN的數(shù)據(jù)通信連接。亦可將諸如公知802. lla、802. lib,802. Ilg及藍(lán)芽的無線鏈路用于網(wǎng)絡(luò)實施。在任何此實施中,通信接口 813發(fā)送及接收攜帶表示各種類型的信息的數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁信號或光學(xué)信號。網(wǎng)絡(luò)鏈路814通常提供經(jīng)由一個或多個網(wǎng)絡(luò)而至其它網(wǎng)絡(luò)資源的數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路814可提供經(jīng)由本地網(wǎng)絡(luò)815而至主機計算機816或網(wǎng)關(guān)/服務(wù)器817的連接。備選地或額外地,網(wǎng)絡(luò)鏈路814可經(jīng)由網(wǎng)關(guān)/防火墻817而連接至廣域網(wǎng)絡(luò)或全局網(wǎng)絡(luò)818 (諸如因特網(wǎng))。因此,計算機平臺801可存取位于因特網(wǎng)818上的任何位置的網(wǎng)絡(luò)資源,諸如遠(yuǎn)程網(wǎng)絡(luò)存儲器/服務(wù)器819,其為數(shù)據(jù)源的另一實例。另一方面,計算機平臺801亦可由位于本地網(wǎng)絡(luò)815和/或因特網(wǎng)818上的任何位置的客戶端進(jìn)行存取。網(wǎng)絡(luò)客戶端820及821可在遠(yuǎn)程訪問系統(tǒng)801。本地網(wǎng)絡(luò)815及因特網(wǎng)818皆使用攜帶數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁信號或光學(xué)信號。將數(shù)字?jǐn)?shù)據(jù)攜帶至計算機平臺801及自計算機平臺801攜帶數(shù)字?jǐn)?shù)據(jù)的經(jīng)由各種網(wǎng)絡(luò)的信號及處于網(wǎng)絡(luò)鏈路814上且經(jīng)由通信接口 813的信號為傳送信息的載波的示例性形式。計算機平臺801可經(jīng)由多種網(wǎng)絡(luò)(包括因特網(wǎng)818及LAN 815)、網(wǎng)絡(luò)鏈路814及通信接口 813而發(fā)送消息且接收數(shù)據(jù)(包括程序代碼)。在因特網(wǎng)實例中,當(dāng)系統(tǒng)801充當(dāng)網(wǎng)絡(luò)服務(wù)器時,系統(tǒng)801可能經(jīng)由因特網(wǎng)818、網(wǎng)關(guān)/防火墻817、本地網(wǎng)絡(luò)815及通信接口813而傳輸在客戶端820和/或821上運行的應(yīng)用的所請求代碼或數(shù)據(jù)。類似地,系統(tǒng)801可自其它網(wǎng)絡(luò)資源接收代碼。所接收的代碼可在其被接收時通過處理器805執(zhí)行,和/或分別存儲在永久性性存儲設(shè)備808或易失性存儲設(shè)備806中,或存儲在其它非易失性存儲器中以供稍后執(zhí)行。以此方式,計算機系統(tǒng)801可獲得呈載波形式的應(yīng)用代碼。所述圖中的流程圖及方塊圖說明根據(jù)各種示例性實施例的系統(tǒng)、方法及計算機程序產(chǎn)品的可能實施的架構(gòu)、功能性及操作。就此而言,在流程圖或方塊圖中的每個塊可表示程序代碼的模塊、區(qū)段或部分,其包括用于實施指定邏輯功能的一個或多個可執(zhí)行指令。亦應(yīng)注意,在某些備選實施中,塊中所提及的功能可不以圖中所提及的次序發(fā)生。例如,取決于所涉及的功能性,連續(xù)展示的兩個塊事實上可基本同時地執(zhí)行,或兩個塊有時可以相反次序執(zhí)行。亦應(yīng)注意,方塊圖和/或流程圖說明的每個塊以及方塊圖和/或流程圖說明中 的塊的組合可通過執(zhí)行指定功能或動作的專用硬件基礎(chǔ)系統(tǒng)予以實施,或通過專用硬件與計算機指令的組合予以實施。本文中所用的術(shù)語,僅僅是為了描述特定的實施例,而不意圖限定本發(fā)明。本文中所用的單數(shù)形式的“一”和“該”,旨在也包括復(fù)數(shù)形式,除非上下文中明確地另行指出。還要知道,“包含”一詞在本說明書中使用時,說明存在所指出的特征、整體、步驟、操作、元素和/或組件,但是并不排除存在或增加一個或多個其它特征、整體、步驟、操作、元素和/或組件,以及/或者它們的組合。以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要把本發(fā)明限定到所表述的形式。對于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不偏離本發(fā)明范圍和精神的情況下,顯然可以作出許多修改和變型。對實施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實施方式。
權(quán)利要求
1.一種用于數(shù)據(jù)庫應(yīng)用的安全緩存方法,所述方法包括以下步驟 接收對數(shù)據(jù)的用戶請求和安全性上下文,其中所述安全性上下文標(biāo)識所述用戶的針對所述數(shù)據(jù)庫應(yīng)用的安全性簡檔; 基于所述用戶請求和所接收的安全性上下文而在高速緩存內(nèi)捜索所請求的數(shù)據(jù); 如果在所述高速緩存中找到所請求的數(shù)據(jù),則響應(yīng)于所述用戶請求而返回所緩存的數(shù)據(jù);以及 如果在所述高速緩存中未找到所請求的數(shù)據(jù),則從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián),以及響應(yīng)于所述用戶請求而返回所請求的數(shù)據(jù)。
2.如權(quán)利要求I的方法,其中使用將所緩存的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)的對應(yīng)列表來存儲所緩存的數(shù)據(jù),并且其中如果在所述高速緩存中未找到所請求的數(shù)據(jù),則通過存儲對存儲在所述高速緩存中的所獲得的數(shù)據(jù)的引用而生成新列表以便將存儲在所述高速緩存中的所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)。
3.如權(quán)利要求2的方法,其中將所述新列表存儲在列表存儲單元中,在所述列表存儲単元中,所存儲列表的數(shù)目基于所接收的用戶查詢而遞增地増加。
4.如權(quán)利要求2的方法,還包括如果所緩存的數(shù)據(jù)中的改變損害列表的完整性,則從列表存儲單元清除該列表。
5.如權(quán)利要求2的方法,還包括在使用所述高速緩存之前初始化列表存儲單元,其中所述初始化包括將針對常用安全性上下文的常用數(shù)據(jù)的查詢提交給所述數(shù)據(jù)源;將所述查詢的結(jié)果加載至所述高速緩存;以及創(chuàng)建引用所緩存的數(shù)據(jù)的安全性列表。
6.如權(quán)利要求2的方法,還包括針對冗余性而檢查所存儲的列表,并且如果找到兩個相同列表,則將所述兩個相同列表合并成單個列表。
7.如權(quán)利要求I的方法,其中所述數(shù)據(jù)是元數(shù)據(jù)。
8.如權(quán)利要求I的方法,還包括以下步驟 在列表存儲器中檢查由所述安全性上下文和數(shù)據(jù)標(biāo)識符所標(biāo)識的列表的存在;以及 如果不存在所述列表,則在所述列表存儲器中創(chuàng)建由所述安全性上下文和所述數(shù)據(jù)標(biāo)識符來標(biāo)識的列表、從所述數(shù)據(jù)源取回數(shù)據(jù)且將所取回的數(shù)據(jù)存儲在數(shù)據(jù)存儲器中,以及使用存儲在所述數(shù)據(jù)存儲器中的所取回數(shù)據(jù)的存儲地址填充所創(chuàng)建的列表;以及 如果存在所述列表,則使用所述列表中的所述存儲地址從所述數(shù)據(jù)存儲器取回數(shù)據(jù)。
9.如權(quán)利要求8的方法,其中所述數(shù)據(jù)標(biāo)識符是立方體維度標(biāo)識符。
10.如權(quán)利要求8的方法,其中所述數(shù)據(jù)存儲器是包括從多個異構(gòu)遠(yuǎn)程數(shù)據(jù)源提供的數(shù)據(jù)的高速緩存。
11.如權(quán)利要求8的方法,還包括預(yù)加載所述數(shù)據(jù)存儲器和所述列表存儲器,其中所述列表存儲器預(yù)加載有與常用安全性上下文和數(shù)據(jù)標(biāo)識符對應(yīng)的列表,并且所述數(shù)據(jù)存儲器預(yù)加載有由預(yù)加載的列表引用的常用數(shù)據(jù)。
12.如權(quán)利要求8的方法,其中存儲在數(shù)據(jù)存儲器中的數(shù)據(jù)是OLAP元數(shù)據(jù)。
13.—種緩存系統(tǒng),包括 處理器,其執(zhí)行軟件模塊;以及 內(nèi)存,其存儲所述軟件模塊,其中所述軟件模塊包括 接收器模塊,其接收對數(shù)據(jù)的用戶請求和安全性上下文,其中所述安全性上下文標(biāo)識所述用戶的針對所述數(shù)據(jù)庫應(yīng)用的安全性簡檔; 捜索模塊,其基于所述用戶請求和所接收的安全性上下文而在高速緩存內(nèi)捜索所請求的數(shù)據(jù); 管理模塊,如果在所述高速緩存中找到所請求的數(shù)據(jù),則所述管理模塊響應(yīng)于所述用戶請求而獲得所緩存的數(shù)據(jù);且 其中如果在所述高速緩存中未找到所請求的數(shù)據(jù),則所述管理模塊從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián),以及響應(yīng)于所述用戶請求而返回所請求的數(shù)據(jù)。
14.如權(quán)利要求13的系統(tǒng),其中如果所述搜索模塊在所述高速緩存中未找到所請求的數(shù)據(jù),則所述管理模塊通過存儲對存儲在所述高速緩存中的所獲得的數(shù)據(jù)的引用而生成新列表以便將存儲在所述高速緩存中的所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián)。
15.如權(quán)利要求14的系統(tǒng),其中所述管理模塊將所述新列表存儲在列表存儲單元中,在所述列表存儲單元中,所存儲列表的數(shù)目基于所接收的用戶查詢而遞增地増加。
16.如權(quán)利要求14的系統(tǒng),還包括清除模塊,如果所緩存的數(shù)據(jù)中的改變損害列表的完整性,則所述清除模塊從列表存儲單元清除該列表。
17.如權(quán)利要求16的系統(tǒng),還包括預(yù)加載模塊,所述預(yù)加載模塊在使用所述高速緩存之前初始化列表存儲單元,其中所述預(yù)加載模塊將針對常用安全性上下文的常用數(shù)據(jù)的查詢提交給所述數(shù)據(jù)源、將所述查詢的結(jié)果加載至所述高速緩存,以及創(chuàng)建引用所緩存的數(shù)據(jù)的新安全性列表。
18.如權(quán)利要求14的系統(tǒng),還包括檢查模塊,所述檢查模塊針對冗余性而檢查所存儲的列表,且如果找到兩個相同列表,則所述檢查模塊將所述兩個相同列表合并成單個列表。
19.ー種包括計算機程序代碼的計算機程序,當(dāng)所述計算機程序代碼被載入計算機系統(tǒng)并執(zhí)行時,所述程序?qū)?zhí)行如權(quán)利要求I至12中的任ー權(quán)利要求的方法的所有步驟。
全文摘要
一種安全緩存系統(tǒng)和緩存方法,包括接收對數(shù)據(jù)的用戶請求,所述請求包含安全性上下文,其中所述安全性上下文標(biāo)識所述用戶的針對數(shù)據(jù)庫應(yīng)用的安全性簡檔;以及基于所述用戶請求和所接收的安全性上下文而在高速緩存內(nèi)搜索所請求的數(shù)據(jù)。如果在高速緩存中找到所請求的數(shù)據(jù),則響應(yīng)于所述用戶請求而返回所緩存的數(shù)據(jù)。如果在高速緩存中未找到所請求的數(shù)據(jù),則從數(shù)據(jù)源獲得所請求的數(shù)據(jù)、將所獲得的數(shù)據(jù)存儲在所述高速緩存中且將所獲得的數(shù)據(jù)與所述安全性上下文相關(guān)聯(lián),以及響應(yīng)于所述用戶請求而返回所請求的數(shù)據(jù)。針對所請求的數(shù)據(jù)的搜索可包括搜索具有所述安全性上下文以作為關(guān)鍵字的安全性列表,所述安全性列表包括所請求的數(shù)據(jù)在所述高速緩存中的地址。
文檔編號G06F12/14GK102770849SQ201180010922
公開日2012年11月7日 申請日期2011年2月22日 優(yōu)先權(quán)日2010年2月26日
發(fā)明者G·D·朗蒂爾, J·C·格里格斯, P·約里奧, R·N·格羅塞特 申請人:國際商業(yè)機器公司