本发明的详细说明
现在参考附图来描述本发明,在所有附图中,使用相同的标号来表示相同的元件。在下面的说明中,为了说明的目的,规定许多特定的细节以便提供对于本发明的透彻的理解。然而,明显地,可以实现本发明而无需这些特定的细节。在其它实例中,为了便于描述本发明,以方框图的形式示出众知的结构和装置。
如在本申请中所使用,指定术语“组件”是指与计算机有关的实体,在执行中,可以是硬件、硬件和软件的组合、或软件。例如,组件可以是,但是不限于,运行在处理器上的进程、处理器、对象、可执行的、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器两者都可以是计算机组件。一个或多个组件可以驻留在过程中和/或执行的线程中,并且组件可以是一个计算机上的本地组件和/或分布在两个或多个计算机之间的组件。“线程”是用于执行的操作系统内核调度的进程中的实体。如本技术领域中所众知,每个线程具有相关联的“上下文”,它是与线程的执行相关联的易失性数据。线程的上下文包括系统寄存器的内容和属于线程的进程的虚拟地址。因此,包括线程的上下文的实际数据在它执行时改变。
由于无单个OLAP变型可以提供低等待时间和实时数据两者,本发明通过作为后台过程来构造对象的MOLAP等价物而用杠杆作用影响ROLAP对象的MOLAP性能(维数、分段和集合)。当完成后台处理时,把对象使用切换到MOLAP查询,使更快的查询响应时间成为可能。当相关的关系对象(诸如定义OLAP对象的内容的表)发生变化时,把OLAP对象切换回ROLAP模式,并且丢掉所有相关的高速缓存,同时,在后台中,创建新的MOLAP等价物。因此,根据正被利用来处理查询的模式,使用MOLAP等价物提供预设地受控制的高速缓存。这允许用户得到立即浏览数据的好处(和/或始终反映关系数据库的最新的映像)而无需支付查询ROLAP对象的一般的性能价格。这允许用户感知作为围绕数据库(诸如关系数据库等)的元数据的补偿层(shim layer)的本发明始终尽可能快地提供最新数据。用户有各种选项以便得到最高全球性能,他们可以通过这些选项对预设高速缓存进行细调谐,以及相对于在关系数据库中的改变而影响它的性能(这些选项在下文详述)。
如果用户对观看最新数据(实时OLAP)感兴趣,但是不希望在浏览ROLAP数据中的固有延迟,则用户可以命令系统在后台事务中构造等价MOLAP对象,并且“切换”查询以使用MOLAP“映像”来代替。当下层的关系对象发生改变时,一发生改变系统就自动地响应于它们,并且打开使对象恢复到ROLAP模式的一个短事务。然后,系统将再打开后台事务和重构MOLAP映像。如果当后台事务正在进行时发生更新,则取消MOLAP处理,并且再开始后台事务。在由于后台事务而用户启动的事务需要把对象锁定在与对象的当前锁定模式不兼容的模式中的情况而可以取消这些后台事务的意义上来说,这些后台事务有些象“第二类公民”。
在图1中,说明根据本发明的一个方面的示例预设高速缓存过程100。预设高速缓存过程100起动102,并且处理到MOLAP高速缓存104的ROLAP对象。除非接收到取消,否则完成106过程100,实行数据库是否已经改变108的一个检查。如果数据库没有改变108,则完成106过程100。然而,如果数据库已经改变108,则再调度过程100,并且再起动102。在本发明的一般实例中,通过用户110产生动作。这些动作110可以包括提交启动过程100的ROLAP对象112的处理。用户110产生的另一个动作可以包括起动ROLAP对象114上的另一个事务,取消到MOLAP高速缓存进程104的现有的ROLAP对象。系统还可以自动地检测条件116,例如,诸如数据库改变118等。一旦数据库改变118已经发生,就取消到MOLAP高速缓存过程104的现有ROLAP对象。
用户还可以在起动构造新MOLAP映像的后台事务之前经由“安静时间延迟”指定“安静时间”的最小持续期。这允许到OLTP(联机事务处理)的多个交叉-事务的插入/更新(许多OLTP应用通过在时间上的某个时刻个别地插入而如此地更新事务数据)。这减少了OLAP服务器通过重复查询而加在OLAP系统上的查询应力。通过对任何涉及的表的“最新更新”时间保持跟踪的一个组件来实现安静时间延迟。
相似于安静时间延迟特征,任选的“延迟”触发特征指定在后台线程中跟踪所有改变,所述线程处理每个指定时间周期(可配置的时间间隔)的经累加的改变。在逻辑方案中,通过两个线程之间的队列实施来执行这个特征,所有的调用都是通过这个队列处理的。这个特征允许通过某些提供者提供的一种通知机构,用是否更新了表的询问来防止OLTP过载。一般,这是在每服务器(不是每对象)的基础上实现的,因为它描述整个预设高速缓存子系统的通知性能。
另一个特征允许经由供用户标出某些表/视图/ROLAP对象作为“脏的”的一种装置来作出“人工”改变,人工地触发上述过程。这一般通过可以通过正规的机构(例如,XML/A(可扩展的标记语言/分析)等)发送到一个服务器的DDL(数据定义语言)语句来完成。在本发明的一个方面,可以存在两类标记:关系对象标记(可能潜在地影响多ROLAP对象)和/或ROLAP对象标记(就关系到相关性而言,基本上引导关系层)。
又一个特征允许用于创建跟踪表的列表的一种装置。用户可以标出影响某个ROLAP对象的表。进行这点的优点包括如下。这个特征的一个优点是如果对象所根据的某个表不是一个真实的表而是一幅视图或DSV(数据组观察器)视图(命名的查询),则对于跟踪视图是否改变这样的事件是较困难的(一般通知机构-SQL(结构化查询语言)通知和触发对表和具体化的视图上,而不是正规视图和命名的查询)。进行操作在缺少这个特征时,跟踪视图的改变的仅有的适当方法是分析它的SQL定义(但是,再次,可能基于通过它本身的其它视图,并且分析SQL不是一个适当的方法)。另一个优点涉及“人工”改变特征。通常,希望标出作为脏的对象,甚至它对于某个表没有制约除了该表被改变。
在本发明的一个方面,装置具有在两个地方中的至少一个地方列出表的能力:1)在DSV中,提供用于预设高速缓存跟踪的替代表的列表。因此,为了预设高速缓存的目的,当ROLAP对象取决于这个表时,在实际上取决于替代表的情况下,它登记它自己。希望替代表是可跟踪的关系对象(表和/或具体化视图,不是一些视图)。2)在ROLAP对象中,提供替代/附加表的列表,通过列表来跟踪对象。对于一些对象这通常是必需的,这些对象对于在DSV中的关系对象(分段)没有必需的制约。还希望这些表也是可跟踪的对象(表和/或具体化的视图)。
再又一个特征提供用于“有限的等待时间”的一种装置。这个特征规定了在新MOLAP映像创建和老MOLAP映像的取消和转换成ROLAP(如果有的话)之间的持续期。在本发明的一个方面,该持续期的缺省值是零(基本上,两个事务-一个使对象退回到ROLAP,而一个开始构造MOLAP引擎-并行地开始)。这个特征的优点包括具有一个持续期,在该期持续期中,到ROLAP存储器的查询降低到最少,并且在构造ROLAP预设高速缓存维数的MOLAP映像的结束处提供分析(在期满时间间隔尚未过去的情况下)。如果改变确实是递增的,则不影响预设高速缓存分段。如果改变影响了非-粒度(granularity)属性,则它可以丢掉(恢复到ROLAP和再调度)可变通的集合并且不碰其它任何项目。否则,装置把相关的分段/集合恢复到ROLAP。
“安静时间复盖(override)”特征提供一种装置来规定是否在初始通知之后到达这个时间量,无条件地提供(kick in)MOLAP映像。然而,应该注意,在本发明的一个方面,如果由于复盖而已经起动MOLAP成像以及如果另一个通知在正在进行构造时输入,则通知不取消正在进行的MOLAP成像。进行记录供正常处理(如果已经使用“正常”路径开始处理,则如果当前存储模式是ROLAP,则通知导致MOLAP映像的取消)。
“强迫再构造”特征规定在已经构造刷新映像之后的这个时刻MOLAP成像无条件地起动。在本发明的一个方面,如果在这进行的同时通知输入,则使它们排队进行正常处理。
转到图2,示出根据本发明的一个方面的数据库服务系统200的方框图。数据库服务系统200包括预设高速缓存系统202、具有多维对象子集232的多维对象208(诸如“OLAP”对象等)、以及具有接收更新218的能力的数据库210。预设高速缓存系统202包括分析组件204和具有高速缓存子集230的至少一个高速缓存206。系统200经由预设高速缓存系统202把查询分析和响应提供给用户。预设高速缓存系统202根据数据库210对多维对象208起杠杆作用,以提供一种系统,所述系统用于提供低等待时间响应和/或实时响应,同时对用户保持适宜的透明。
在本发明的这个方面,分析组件204具有用于更新通知等的输入,包括:查询输入220、用户输入212、系统输入214和数据库输入216。在本发明的其它实例中,数据库输入216是系统输入214的一部分。分析组件204具有高速缓存接口222以及多维对象接口224。这些接口222、224根据所要求的查询响应(即,预设地寻找用于适当的响应的适当的高速缓存)提供从分析组件204到高速缓存206和/或多维对象208的访问。在本发明的其它方面,分析组件具有到高速缓存子集230的高速缓存子集接口226以及到多维对象子集232的多维对象子集接口228。在正在更新高速缓存206和/或多维对象208的其它部分的同时,子集接口226、228提供到高速缓存206和多维对象208的子集的访问。高速缓存206包括从多维对象208得到的信息。多维对象208是基于数据库210的。
在本发明的一个实例中,用于高速缓存信息的系统包括提供从数据库210得到的动态多维分析数据的至少一个多维对象208、从至少一个多维对象208提供动态多维分析数据的至少一个高速缓存206以及耦合到多维对象208和高速缓存206用于预设地控制到多维对象208和高速缓存206的访问的至少一个分析组件204。在本发明的其它实例中,多维对象208包括诸如ROLAP对象以及等等的OLAP对象。在本发明的又一个实例中,分析组件204包括UDM(统一维数模型)。在本发明的再又一个实例中,高速缓存206包括MOLAP高速缓存等。本发明的其它实例包括,但是不限于,包括实时访问分析数据的多维对象208以及包括快速访问分析数据的高速缓存206。甚至本发明的其它实例包括数据库210,该数据库210包含关系数据库。
本发明的另外的实例还包括预设高速缓存系统202,该系统包括分析组件204、高速缓存206以及允许访问至少一个多维对象208的多维对象接口224。分析组件有能力控制到多维对象208和高速缓存206的访问。因此,多维对象208不必须是预设高速缓存系统202的一部分。多维对象208可以是数据库管理系统的一部分。因此,本发明通过具有利用现有数据库管理系统的能力而允许它的使用方面的灵活性。这增强了现有系统,在提高它们的性能的同时,使它们的实用性最大。
本发明的进一步的实例附加地包括预设高速缓存系统202,该预设高速缓存系统202包括分析组件204、允许访问和控制高速缓存206的高速缓存接口222以及允许访问至少一个多维对象208的多维对象接口224。因此,高速缓存206可以驻留在预设高速缓存系统202的外面。这甚至允许在具有已经可供利用的高速缓存资源的现有平台上实施本发明的灵活性更大。
参考图3,描绘根据本发明的一个方面的数据库服务系统300的另一个方框图。数据库服务系统300包括预设高速缓存系统302、诸如OLAP对象等的多维对象308以及具有接收更新318的能力的数据库310。预设高速缓存系统302包括分析组件304和高速缓存306。在本发明的这个方面,分析组件304具有用于更新通知等的输入,包括:查询输入330、用户输入312、系统输入314以及数据库输入316。在本发明的其它实例中,数据库316是系统输入314的一部分。分析组件304具有多维对象接口322。在本发明的这个方面,正在后台操作中根据多维对象308构造高速缓存306。因此,在这个特定的时刻,分析组件304没有与高速缓存306活动地对接以响应于查询。因此,分析组件304只通过访问多维对象308而响应查询输入320。
转到图4,说明根据本发明的一个方面的数据库服务系统400的又一个方框图。数据库服务系统400包括预设高速缓存系统402、诸如OLAP对象等的多维对象408以及具有把更新418接收到数据库表426中的能力的数据库410。预设高速缓存系统402包括分析组件404和新高速缓存406。在本发明的这个方面,分析组件404具有用于更新通知等的输入,包括:查询输入420、用户输入412、系统输入414以及数据库输入416。在本发明的其它实例中,数据库416是系统输入414的一部分。分析组件404具有多维对象接口422。在本发明的这个方面,正在后台操作中从多维对象408构造新高速缓存406。因此,在这个特定的时刻,分析组件404没有与新高速缓存406活动地对接以响应于查询。因此,分析组件404只通过访问多维对象408而响应查询输入420。此外,接收到影响数据库表426的更新418。在本发明的一个方面的这个例子中,在数据库表426中的改变还影响查询输入420作为响应来依赖的多维对象408。因此,除去根据更新418以前的数据库的老的高速缓存424,并且在预设高速缓存系统402的后台过程中构造新高速缓存406,以便反映最新的数据库数据更新。在本发明的其它实例中,可以通过用户输入412和/或系统输入414来除去老高速缓存424。
转到图5,示出根据本发明的一个方面的高速缓存开发结构500的一个方框图。结构500包括包含数据库表510的数据库502、元数据集504、维数模型(诸如“OLAP对象”等的维数对象)506以及高速缓存508。一般,把与从数据库502来的数据有关的信息编译到元数据集504中。从元数据集504构造元数据对象以形成维数模型506。维数模型506通常包括维数、立方体和量度等。这允许OLAP管理树访问维数模型506中的元数据对象。如此,可以从维数模型506构成高速缓存508,该高速缓存508具有从根据关系数据库的多维对象得到的动态维数分析数据。
继续参考图6,示出根据本发明的一个方面的高速缓存开发结构600的另一个方框图。在本发明的这个实例中,结构600包括包含关系数据库表610的关系数据库602、元数据集604、ROLAP对象606以及MOLAP高速缓存608。在这个例子中,一般,由从元数据集604和关系数据库610得到的ROLAP对象构造MOLAP高速缓存608。可得到两个不同的OLAP数据集变型(例如,ROLAP和MOLAP变型等),允许预设地访问适当的数据集以按用户和/或系统要求的方式透明地传送查询响应。
在图7中,说明根据本发明的一个方面的预设高速缓存系统700的方框图。预设高速缓存系统700包括分析组件702、具有高速缓存子集720的高速缓存704以及诸如OLAP对象等具有多维对象子集722的多维对象706。在本发明的一个方面,分析组件702包括查询解释器710、短等待时间终端714以及实时终端712。分析组件702可以接收输入(诸如用户输入716、系统输入718、以及查询输入708等)。在本发明的一个方面,查询解释器710可以分析或分解复杂的查询使之成为“部分”,以及根据查询输入708的内容预设地判定终端712、714中哪个是适当的。例如,可以标出部分#1为“时间敏感数据”,并引导到短等待时间终端714,以便访问高速缓存704,尤其是,高速缓存子集720。同样,可以标出部分#2为“最新数据”,并引导到实时终端712,以便访问多维对象706,尤其是,多维对象子集722。按相似的方式,可以标出部分#n(其中“n”表示从1到无穷大的整数)为上述类别中的每一个,并引导到高速缓存706或多维对象708。在本发明的又一个方面,可以根据用户输入716和/或系统输入718(包括数据库状态等)来分析查询输入708。虽然把“短等待时间”和“实时”描述成“终端”,但是事实上它们可以是分析组件的一部分,并且不需要成为如图7中描绘的独立的实体。因此,可以包括这些作为查询解释器710的一部分,作为如同控制进入数据的嵌入式滤波器这样的高速缓存706和/或多维对象704的一部分和/或作为外部滤波器的一部分。
参考图8,示出根据本发明的一个方面的预设高速缓存系统800的另一个方框图。预设高速缓存系统800包括分析组件802、高速缓存804以及诸如OLAP对象等的多维对象806。在本发明的一个方面,分析组件802包括查询解释器816、短等待时间终端818以及实时终端820。查询解释器816处理多个查询输入808。这可以包括任何数量的输入,但是为了简单说明起见,示出三个输入。这些输入包括用户#1输入810、用户#2输入812以及用户#3输入814。每个用户输入构成查询解释器816分析的至少一个查询。例如,如果第一用户#1输入包含查询#1,它具有“产品信息”的维数和相对于该“数据库稳定”的信息的数据库状态,则查询解释器816可以把该访问引导到短等待时间终端818进行对高速缓存804的访问。高速缓存804可以是具有快响应时间等的多维OLAP高速缓存。如果第二用户#2输入包含查询#2,它具有“演示图形”的维数和相对于该“数据库更新”的信息的数据库状态,则查询解释器816可以把该访问引导到实时终端820进行多维对象806的访问。多维对象的特征可以包括实时数据访问等。同样,如果第三用户#3输入具有“财务数据”的维数和相对于该“数据库更新”的信息的状态,则查询解释器816可以把该访问引导到实时终端820进行多维对象806的访问。按这种方式,预设高速缓存系统向用户提供所需要的响应而无需关于要使用哪个高速缓存的活动用户输入。然而,本发明不预先排除利用用户和/或系统输入来判定如何和/或何时进行预设高速缓存。
转到图9,说明根据本发明的一个方面的预设高速缓存系统输入900的方框图。如前所述,分析组件902可以具有多个输入。这些包括,但是不限于,查询输入904、用户输入906以及系统输入908。用户输入906包括,但是不限于,安静时间延迟910、安静时间延迟复盖912、强制刷新时间914、用户启动部分高速缓存再构造916以及用户输入“n”918(其中“n”表示任何无限数和/或输入类型)等。系统输入908包括,但是不限于,最新数据库更新跟踪器920、影响OLAP对象表922、相关OLAP对象数据源跟踪器924以及系统输入“n”926(其中“n”表示任何无限数和/或输入类型)等。
安静时间延迟910包括一种装置,该装置对于一数据库相对于某个相关的信息更新以来已经过去了多少时间保持跟踪。该相关信息可以是实际数据表输入项和/或OLAP对象。安静时间复盖912包括系统和/或用户确定的一种装置,以使高速缓存复盖以及再构造,即使尚未符合安静时间延迟910。这防止高速缓存由于偶尔发生而从来不更新,而是对于一个数据库频繁地更新,始终发生在正好达到安静时间延迟910之前。强制刷新时间914包括一种装置,以在给定时间间隔强制刷新高速缓存。这防止高速缓存包含陈旧数据,尽管事实上数据库未曾报告强制刷新时间914中的任何更新。这还保证即使在数据库不能够发送状态数据的情况下,也可以更新高速缓存。用户启动部分高速缓存再构造916包括一种装置,以允许用户控制什么部分和/或何时再构造该部分高速缓存。例如,这允许用户选择地判定是否应该再构造特定的子集而同时保持其它数据的快速可访问性。用户输入“n”918包括用于通过分析组件902辅助预设高速缓存的任何装置。熟悉本技术领域的人员会理解,用户可以输入许多不同的定时参数和/或数据参数来帮助更有效地利用预设高速缓存。例如,一种如此的装置包括在要求更新的情况下允许用户输入人工改变来对某些表/视图/0LAP对象作出标记。
最新数据库更新跟踪器920包括一种装置,以跟踪最近更新数据库是在何时。可以与其它输入一起利用这个输入来确定高速缓存数据等的陈旧性。影响OLAP对象的表922包括一种装置,以跟踪/列出涉及高速缓存所根据的OLAP对象的数据库表数据。这允许滤除高速缓存更新来防止当数据库具有不相关的表更新时对高速缓存进行更新。相关OLAP对象数据源跟踪器924包括一种装置,以跟踪高速缓存数据对特定OLAP对象的相关性。这还允许滤除高速缓存更新以防止当不相关的OLAP对象改变时对高速缓存进行更新。系统输入“n”926包括用于通过分析组件902辅助预设高速缓存的任何装置。熟悉本技术领域的人员会理解,用户可以输入许多不同的定时参数和/或数据参数来帮助更有效地利用预设高速缓存。这包括,但是不限于,数据库更新通知等。
重要的是要注意,虽然是作为进入到分析组件902来说明上述输入参数,但是分析组件902本身可以包括子组件,该子组件提供功能,以执行利用上述输入所需要的功能。还可能由分析组件920的外部组件来提供所需要的某些和/或全部功能。
在图10中,示出根据本发明的一个方面的预设高速缓存系统参数1000的方框图。在本发明的一个实例中,预设高速缓存系统参数1000包括操作模式1002和触发1010等。操作模式包括ROLAP模式1004、MOLAP模式1006、以及MOLAP/ROLAP模式1008等。ROLAP模式1004的触发1010包括安静时间延迟符合1012、安静时间延迟复盖符合1014、强制刷新时间符合1016、以及数据库更新1018等。MOLAP模式1006的触发1010包括等效的MOLAP和ROLAP数据集1020以及对于实时数据等需求的快速查询响应1022的用户要求。MOLAP/ROLAP模式的触发1010包括何时需要1024短等待时间和实时查询两者以及何时需要1026部分重构MOLAP高速缓存。
ROLAP模式1004只允许为查询而访问ROLAP数据。这一般是具有实时数据访问的较慢的模式。MOLAP模式1006只允许为查询而访问MOLAP数据,由于它的快速性能,所以一般是缺省模式。为了保证数据的完整性和提高性能,在MOLAP数据等于ROLAP数据的任何时间都可以使用MOLAP模式。这通过利用较快的装置而保证没有损失数据准确度。这也可以由对于实时数据等(其它用户输入)要求快速访问的用户使用。MOLAP/ROLAP模式1008是一种混合模式,它允许访问MOLAP和ROLAP两种数据。这允许用户和/或系统检索所要求的任何等待时间类型需要的任何数据类型。它还允许用ROLAP对象(为在构造的该部分MOLAP高速缓存提供信息)部分重构MOLAP高速缓存。
熟悉本技术领域的人员会理解,上述触发和操作模式无论如何也不是无遗漏的列表。图10表示一例子,该例子仅为本发明的一个方面。还可以使用附加的模式和触发,并且也在本发明的范围内。
参看图11,说明根据本发明的一个方面的预设高速缓存系统1100的又一个方框图。预设高速缓存系统包括分析组件1102、MOLAP高速缓存1104以及OLAP对象1106。分析组件1102包括自适应调谐组件1110、第一会话1114以及第二会话1116。自适应调谐组件1110包括查询解释器1112、性能最优化器1118以及结果比较器1120。把一般的查询1108输入到查询解释器1112。在本发明的这个方面,查询解释器1112是自适应调谐组件1110的一部分。因此,对于性能调谐,查询解释器1112用相同的查询1108建立双会话。因此,经由会话#11114把查询1108发送到MOLAP高速缓存1104以及经由会话#21116到OLAP对象1106。每个会话1114、1116产生一个响应,把所述响应发送到结果比较器1120。结果比较器1120依次判定两个会话1114、1116之间的任何差异。如果有差异的话,向性能最优化器1118报告这些差异。性能最优化器1118跟踪差异,并且自适应地改变查询解释器1112如何对将来的查询起作用。熟悉本技术领域的人员会理解,不是所有查询都需要经由会话1114、1116连续地处理。一旦已经使特定的查询最优化,偶然的取样就是全部所需要的。“偶然的”可以是每秒、小时、天、月和/或年等,取决于查询该数据的频率。例如,不管经由会话#11114还是经由会话#21116,一年前的以前的销售记录可以导致相同的结果。因此,当查询有关相同时间周期的销售记录时,性能最优化器1118命令查询解释器1112只利用快速响应的MOLAP高速缓存1104。性能最优化器1118可以跟踪数据、用法和相关联的参数来提供自适应调谐,甚至对于用户设置,可能向用户提供性能建议。
由于所示的示例系统和上面的描述,将参考图12-17的流程图来较好地理解可以根据本发明实施的方法。同时,为了简化说明的目的,用一系列方框示出和描述方法,要理解和意识到本发明不受到方框的次序的限制,根据本发明,某些方框可以按不同次序存在和/或与这里示出和描述的其它方框同时存在。此外,实施根据本发明的方法可能不需要所说明的所有方框。
在一般情况中可以以诸如通过一个或多个组件执行的程序模块的计算机可执行指令来描述本发明。一般,程序模块包括执行特定任务或实施特定抽象数据类型的例行程序、程序、对象、数据结构等。一般,在各个实施例中可以按要求组合或分配程序模块功能。
转到图12,描绘说明根据本发明的一个方面的预设高速缓存的方法1200的流程图。方法1200通过在后台过程1204中开始构造ROLAP对象的MOLAP高速缓存等价物而开始1202。然后作出确定以检测何时完成1206 MOLAP高速缓存。当完成时,切换操作模式而利用MOLAP模式1208。然后使用MOLAP高速缓存来处理查询1210。然后作出ROLAP对象是否存在任何相关的改变的确定1212。这也可以包括任何基础数据的任何相关的改变。如果没有发生相关的改变,则继续查询,以利用MOLAP高速缓存进行处理1210。然而,如果存在改变,则把操作模式切换到ROLAP模式1214。然后丢掉所有相关的高速缓存1216,结束流程1218。可以无限地重复这个循环,以便在尽管任何相关数据库改变的情况下仍保持MOLAP高速缓存的刷新。
转到图13,示出说明根据本发明的一个方面的预设高速缓存的方法1300的另一个流程图。通过提供用户输入1304而开始1302方法1300。作出关于是否提出MOLAP模式请求的确定1306。如果没有,则继续查询,以利用ROLAP模式进行处理1322,结束流程1316。然而,如果提出了MOLAP模式请求,则作为后台过程1308来构造ROLAP对象的MOLAP等价物。然后作出关于是否已经发生相关于ROLAP对象的改变的确定1310。如果已经发生改变,则取消MOLAP等价物构造1318,把操作模式切换到ROLAP模式1320,并且再次构造ROLAP对象的MOLAP等价物1308。然而,如果在完成MOLAP高速缓存的构造之后没有发生相关的改变,则把操作模式切换到MOLAP模式1312,并且利用MOLAP高速缓存处理查询1314,结束流程1316。
参考图14,说明根据本发明的一个方面的预设高速缓存的方法1400的又一个流程图。用所提供的安静时间延迟用户输入1404开始1402方法1400。在后台过程1406中构造ROLAP对象的MOLAP等价物。然后作出关于ROLAP对象1410是否已经发生任何相关改变的确定。如果未曾发生改变,则利用MOLAP高速缓存1410处理查询,结束流程1412。然而,如果已经发生ROLAP对象的改变,则作出关于是否已经符合安静时间延迟的确定1414。如果没有,则作出是否已经符合安静时间延迟复盖的确定1418。如果未曾符合安静时间延迟复盖,则使用MOLAP高速缓存1410处理查询,结束流程1412。然而,如果已经符合安静时间延迟复盖,则把操作模式切换到ROLAP模式,并且再次构造MOLAP高速缓存1406。然而,如果在检测对ROLAP对象的相关改变之后已经符合安静时间延迟,则把操作模式切换到ROLAP模式1416,并且在后台过程1406中构造MOLAP高速缓存,继续该周期。
转到图15,示出说明根据本发明的一个方面的预设高速缓存的方法1500的再又一个流程图。通过提供人工用户输入1504而开始1502方法1500。人工用户输入包括一些参数,这些参数允许用户指定某些表/视图/对象等作为“脏的”(即,如果需要访问它们的话,则必须更新)。作出关于ROLAP对象是否已经发生相关改变的确定1506。这考虑了脏的输入可能改变与高速缓存数据相关的数据。如果未曾发生相关的改变,则使用MOLAP高速缓存处理查询1514,结束流程1516。一般,由于较高的性能增益,使用MOLAP高速缓存是预设高速缓存系统的一个缺省条件,除非用户和/或系统另行指定,否则就按缺省条件执行。然而,如果已经发生ROLAP对象的相关的改变1506(由于脏的输入和/或数据库更新等),则把操作模式切换到ROLAP模式1508。然后在后台过程中重构MOLAP高速缓存1510,并当完成高速缓存时再次把操作模式切换到MOLAP模式1512。然后继续使用MOLAP高速缓存处理查询1514,结束流程1516。
在图16中,示出说明根据本发明的一个方面的预设高速缓存的方法1600的流程图。通过用户提供有关的ROLAP对象数据输入1604而开始1602方法1600。然后把输入数据链接到相关的、合适的ROLAP对象1606。如此,甚至在没有从这个数据特定地得到的情况下,用户也可以相对于高速缓存数据对数据作出标记。然后作出关于ROLAP对象是否已经发生任何相关的改变的确定。这检查是否已经建立从ROLAP对象到已经改变的数据的新数据链路。如果没有发现改变,则使用MOLAP高速缓存处理查询1616,结束流程1618。由于性能增益,考虑MOLAP模式为缺省模式。然而,如果已经作出相对于ROLAP对象的改变1608,则把操作模式切换到ROLAP模式1610。然后在后台过程中从ROLAP对象重构MOLAP高速缓存。一旦完成,就把MOLAP模式切换到MOLAP模式1614,并再次使用MOLAP高速缓存处理查询1616,结束流程1618。
参看图17,描绘根据本发明的一个方面的预设高速缓存的方法1700的再又一个流程图。从用户提供强制刷新率输入1704开始1702方法1700。然后作出关于是否已经符合这个输入的确定1706。如果没有符合,则利用MOLAP高速缓存处理查询1714,结束流程1716。由于性能增益,考虑MOLAP模式为缺省模式。然而,如果已经符合强制刷新率输入1706,则把操作模式切换到ROLAP模式1708。然后作为后台过程重构MOLAP高速缓存1710。一旦完成,就把操作模式切换回MOLAP模式1712,并使用MOLAP高速缓存1714处理查询,结束流程1716。
上述流程意味着代表本发明的各种方法的流程。它们无论如何都不包括本发明范围内的每种重复和变型。熟悉本技术领域的人员可以理解,方法可以结合修改,并且仍保持在本发明的范围内。
为了提供实施本发明的各种方面的附加情况,打算以图18和下面的讨论来提供对于可以实施本发明的各个方面的合适的计算环境1800的简单的、一般的说明。当已经在上面按运行在本地计算机和/或远程计算机上的计算机程序的计算机可执行指令的一般情况描述本发明时,熟悉本技术领域的人员会理解,还可以与其它程序模块组合而实施本发明。一般,程序模块包括执行特定任务和/或实施特定抽象数据类型的例行程序、程序、组件、数据结构等。此外,熟悉本技术领域的人员会理解,可以用其它计算机系统来实施本发明的方法,这些计算机系统配置包括单个处理器与多处理器计算机系统、小型计算机、主计算机以及个人计算机、手持计算设备、基于微处理器的和/或可编程的消费电子产品等,它们中的每一个都可以与一个或多个相关联的装置可操作地进行通信。还可以在分布式计算环境(其中由通过通信网络链接的远程处理设备执行某些任务)中实施本发明所说明的方面。然而,如果不是在独立的计算机上实施本发明的全部方面,则可以在独立的计算机上实施本发明的某些方面。
如在本申请中所使用,指定术语“元件”是指与计算机有关的实体,在执行中,可以是硬件、硬件和软件的组合、或软件。例如,组件可以是,但是不限于,运行在处理器上的过程、处理器、对象、可执行的、执行的线程、程序和/或计算机。作为说明,运行在一个服务器上的应用程序和/或该服务器可以是组件。此外,组件可以包括一个或多个子组件。
参考图18,实施本发明的各个方面的示例系统环境1800包括传统计算机1802,该计算机包括处理单元1804、系统存储器1806、以及把包括系统存储器的各种系统组件耦合到处理单元1804的系统总线1808。处理单元1804可以是任何可商业上可购得的或专用(proprietary)的处理器。此外,可以实施处理单元作为不止一个处理器(诸如可以并行连接的处理器)形成的多处理器。
系统总线1808可以是数种类型的总线结构中的任何一种,包括存储器总线或存储器控制器,外围总线以及使用多种传统总线结构(举几个例子,诸如PCI、VESA、Microchannel、ISA以及EISA)中任何总线结构的局部总线。系统存储器1806包括只读存储器(ROM)1810和随机存取存储器(RAM)1812。把基本输入/输出系统(BIOS)1814(它包含诸如在启动期间帮助在计算机1802中的单元之间传送信息的基本例行程序)存储在ROM 1810中。
例如,计算机1802还可以包括硬盘驱动器1816、磁盘驱动器1818(例如,从可换磁盘1820读出或写入可换磁盘1820)以及光盘驱动器1822(例如,从CD-ROM盘1824或其它光学媒体读出或写入CD-ROM盘1824或其它光学媒体)。分别通过硬盘驱动器接口1826、磁盘驱动器接口1828以及光盘驱动器接口1830把硬盘驱动器1816、磁盘驱动器1818以及光盘驱动器1822链接到系统总线1808。驱动器1816-1822以及它们相关联的计算机可读出媒体提供用于计算机1802的数据、数据结构、计算机可执行指令等的非易失性存储。虽然上面的计算机可读出媒体的说明涉及硬盘、可移动磁盘和CD,但是熟悉本技术领域的人员应理解,还可以在示例操作环境1800中使用计算机可读出的其它类型的媒体,诸如盒式磁带、快闪存储卡、数字视频盘、Bernoulli磁带盒等,此外,任何如此的媒体可以包括用于执行本发明的方法的计算机可执行指令。
可以把许多程序模块存储在驱动器1816-1822和RAM 1812中,包括操作系统1832、一个或多个应用程序1834、其它程序模块1836以及程序数据1838。操作系统1832可以是任何合适的操作系统或操作系统的组合。作为例子,应用程序1834和程序模块1836可以包括利用根据本发明的一个方面的数据的数据库服务系统和/或预设高速缓存系统。此外,程序数据1838可以包括用于控制和/或偏置根据本发明的一个方面的预设高速缓存系统的输入数据。
用户可以通过一个或多个用户输入设备(诸如键盘1840和指针设备(例如,鼠标1842))把命令和信息输入到计算机1802。其它输入设备(未示出)可以包括话筒、摇杆、游戏小键盘、卫星盘、无线远程、扫描器等。通常通过耦合到系统总线1808的串行端口接口1844把这些和其它输入设备链接到处理单元1804,但是也可以通过其它接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。还经由诸如视频适配器1848之类的接口把监视器1846或其它类型显示设备链接到系统总线1808。除了监视器1846之外,计算机1802还可以包括其它外围输出设备(未示出),诸如扬声器、打印机等。
可以理解,计算机1802可以使用到一个或多个远程计算机1860的逻辑连接在网络化环境中操作。远程计算机1860可以是工作站、服务器计算机、路由器、对等设备或其它公共网络节点,以及一般包括相对于计算机1802描述的许多或所有单元,虽然为了简短的目的,在图18中只说明一个存储器存储装置1862。在图18中描绘的逻辑连接可以包括局域网(LAN)1864和广域网(WAN)1866。这种网络环境是办公室、全企业的计算机网络、企业内部网以及因特网中的公用地方。
例如,当在LAN网络环境中使用时,通过网络接口或适配器1868把计算机1802链接到局域网1864。当在WAN网络环境中使用时,计算机1802一般包括调制解调器(例如,电话、DSL、电缆等)1870,或连接到LAN上的通信服务器,或具有在WAN 1866上建立通信的其它装置,诸如因特网。经由串行端口接口1844把相对于计算机1802可以是内部或外部的调制解调器1870连接到系统总线1808。在网络化的环境中,可以把程序模块(包括应用程序1834)和/或程序数据1838存储在远程存储器存储装置1862中。应该理解,所示出的网络连接是作为例子的,当执行本发明的一个方面时,可以使用建立计算机1802和1860之间的通信链路的其它装置(例如,有线的或无线的)。
根据熟悉计算机编程技术领域的人员的实践,已经参考通过计算机(诸如计算机1802或远程计算机1860,除非另行表示)执行的动作和操作的符号表示来描述本发明。有时把这种动作和操作称为是计算机-执行的。可以理解,动作和由符号表示的操作包括通过表示数据位的电信号的处理单元1804的操作,所述数据位引起所产生的电信号表示的变换或减少,在存储器系统(包括系统存储器1806、硬盘驱动器1816、软盘驱动器1820、CD-ROM 1824以及远程存储器1862)中的存储器存储单元处保存数据位,从而再配置或否则改变计算机系统的操作,以及信号的其它处理。保存这种数据位的存储器存储单元是物理位置,它具有相对于数据位的特定的电、磁或光学特性。
图19是示例计算环境1900的另一个方框图,本发明可以与该计算环境交互作用。系统1900进一步说明包括一个或多个客户1902的系统。客户1902可以是硬件和/或软件(例如,线程、进程、计算设备)。系统1900还包括一个或多个服务器1904。服务器1904也可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,服务器1904可以容纳线程,以通过使用本发明执行变换。客户1902和服务器1904之间一种可能的通信可以按适合于在两个或多个计算机过程之间发送的数据分组的形式。系统1900包括通信框架1908,可以使用它来促进客户1902和服务器1904之间的通信。把客户1902可操作地连接到一个或多个客户数据存储器1910,可以用该存储器来存储客户1902的本地信息。相似地,把服务器1904可操作地连接到一个或多个服务器数据存储器1906,可以用该存储器来存储服务器1904的本地信息。
转到图20,示出本发明可以在其中起作用的操作环境2000的一个例子。这个一般的环境2000包括链接到数据源2010和用户接口2012的分析服务组件2002。用户接口2012包括OLAP浏览器、报告工具以及其它BI(商务智能)应用程序等。分析服务组件2002一般具有经由接口2008(象XML/A(扩展标记语言/分析)和MDX(多维交换语言)等)的带有用户接口2012的接口2014。分析服务组件2002包括UDM(统一维数模型)组件2004和高速缓存2006。在这个例子中,经由UDM组件2004和高速缓存2006在分析服务组件2002中使用本发明。UDM组件可以预设地访问高速缓存2006和/或直接访问数据。
上面所描述的包括本发明的例子。当然,为了描述本发明,不可能描述组件或方法的每个想得到的组合,但是熟悉本技术领域的人员会理解,本发明的许多进一步的组合和更动都是可能的。因此,打算使本发明包括落在所附的权利要求书的精神和范围内的所有如此的改变、修改和变型。此外,就在详细说明和权利要求书中都使用了术语“包括(includes)”来说,打算按与术语包括(comprising)在权利要求书中作为过渡词时解释“comprising”的相似的方式来包括如此的术语。