概述
本概述以简化形式提供本发明诸方面的说明性上下文。这并不旨在用于确定要求保护的主题的范围,也不旨在标识要求保护主体的关键和/或本质特征。本发明的这些和其它方面在以下详细描述中有更全面的描述。
对于多维数据库(例如作为OLAP系统的一部分)的用户,可将多维数据库的至少一部分的副本(即本地立方)高速缓存到用户设备本地。例如,用户设备可以为该用户向多维数据库服务器(例如Microsoft
Analysis Services服务器)发送对本地立方的请求。基于该用户的安全上下文,由服务器为该用户生成的立方可以是子立方,即包含少于多维数据库全部的立方。服务器可以在服务器上存储立方的安全副本,并且向用户设备发送该立方,该立方可存储在其本地。
然后,用户可查询本地立方而非多维数据库服务器。此外,本地立方可不仅包括来自数据库的数据而且包括表示数据片之间依赖关系的函数。用户设备上的报告工具被配置成与本地立方通信。报告工具可查询本地立方并执行涉及来自本地立方和本地(例如易失性)存储器的数据的操作。例如,对来自本地立方的数据进行的操作(可以包括多维操作)可作为执行报告工具的计算机进程或从其产生的计算机进程的一部分。这些操作还可从本地立方访问。因此,用户可“离线”工作,即在不连接到数据库服务器的情况下工作。用户可使用该能力来在本地使用“如果...则...”场景进行试验,而无需访问远程服务器。
例如,可设置将所有查询从诸如Microsoft
Excel的前端报告工具引导到本地高速缓存数据的瘦客户机端查询层。因此,前端报告工具可满足用户需要而不连接到数据服务器。用户能够自由修改报告中出现的数据,并且这种修改可被发送到本地立方。于是,所有这些相关数据修改(计算、聚集等)可如同客户机端进程中的存储器内操作一样相对快速地计算,并向用户传递(例如显示)。例如,用户可对电子数据表应用程序(例如Microsoft
Excel)的第一单元进行修改,所得数据库操作可本地进行,电子数据表中的受影响单元可在向用户呈现的用户界面显示中得到更新。
向用户设备提供本地立方的多维数据库服务器可对本地立方加时间戳。可在用户设备上维护对本地立方作出的修改的列表,并可对这些修改的每一个加时间戳。基于表示本地立方从多维数据库服务器加载的时间的时间戳和/或在修改列表中列举的修改的时间戳,本地立方中的数据可与来自其所拷贝的多维数据库服务器的数据同步。同步更新可以是增量的或者可涉及本地立方的全部刷新,并且可以是用户发起和/或在预定时间处进行的。
在本发明的实施方式中,在通信网络的用户设备上提供一种使用存储在作为通信网络上与用户设备分离的设备的网络设备上的多维数据库至少一部分的系统。该多维数据库由通信网络上多个用户设备共享。该系统包括控制在用户设备的非易失性存储介质上存储多维数据库的至少一部分的副本的存储控制器。
在本实施方式的一个方面中,该系统还包括查询控制器,它从在用户设备上执行的应用程序接收对包含在多维数据库的至少一部分中的信息片的请求,并控制从非易失性存储介质上的副本来检索该信息片。
在本实施方式的另一方面中,多维数据库的至少一部分包括作为该至少一部分中包含的至少第二信息片的函数的至少第一信息片,且存储控制器用于控制在非易失性存储介质上的副本中存储该函数。在本方面中,该系统还包括响应于应用程序修改用户设备的易失性存储器中第二信息片的值而对易失性存储器中的第一信息片执行该函数的函数控制器。
在本实施方式的另一方面中,函数控制器用于将函数的执行结果传递到应用程序的用户界面显示,使得从函数执行得到的第一信息片的值得到显示。
在本实施方式的另一方面,该修改是在易失性存储器中对多维数据库的至少一部分的副本中包含的一个或多个信息片做出的多个修改之一。在本方面,该系统还包括控制向表示多个修改的修改列表中添加修改的修改列表控制器,其中修改列表驻留在易失性存储器中。
在本实施方式的又一方面中,存储控制器用于控制通过应用来自易失性存储器的修改列表来更新非易失性存储介质上的多维数据库的至少一部分的副本。
在本实施方式的另一方面中,存储控制器用于控制将修改列表存储在非易失性存储介质上。
在本实施方式的另一方面中,该系统还包括控制将修改列表从用户设备发送到网络设备的服务器接口控制器。
在本实施方式的另一方面中,应用程序用于从多维数据库的至少一部分的副本生成报告。
在本实施方式的又一方面中,该系统还包括用于向网络设备发送对多维数据库的至少一部分的副本的请求并接收多维数据库的至少一部分的服务器接口控制器。
在本实施方式的另一方面中,该系统还包括用于从网络设备接收指示对多维数据库的至少一部分的一个或多个修改的至少一个通信的服务器接口控制器。服务器接口控制器还用于控制响应于至少一个通信而将多维数据库的至少一部分的本地副本与多维数据库的至少一部分进行同步。
在本发明的另一实施方式中,存储在网络设备上的多维数据库的至少一部分由作为和通信网络上网络设备分离的设备的用户设备使用。多维数据库由通信网络上的多个用户设备共享。多维数据库的至少一部分的副本存储在用户设备的非易失性存储介质上。
在本实施方式的一个方面中,从在用户设备上执行的应用程序接收对包括在多维数据库的至少一部分内的信息片的请求,并且从非易失性存储介质上的副本检索该信息片。
在本实施方式的另一方面中,多维数据库的至少一部分包括作为该至少一部分中包含的至少第二信息片的函数的至少第一信息片。在本方面中,该函数存储在非易失性存储介质上的副本中,并且响应于应用程序修改用户设备上易失性存储器中第二信息片的值而在易失性存储器中对第一信息片执行该函数。
在本实施方式的另一方面中,该函数执行的结果向用户设备的用户显示。
在本实施方式的又一方面中,修改是在易失性存储器中对多维数据库的至少一部分的副本中包含的一个或多个信息片作出的多个修改之一。在本方面中,将修改添加到表示多个修改的修改列表,该修改列表驻留在易失性存储器中。
在本实施方式的另一方面中,非易失性存储介质上的多维数据库的至少一部分的副本通过应用来自易失性存储器的修改列表来更新。
在本实施方式的另一方面中,修改列表存储在非易失性存储介质上。
在本实施方式的另一方面中,修改列表从用户设备发送到网络设备。
在本实施方式的又一方面中,从多维数据库的至少一部分的副本生成报告。
在本实施方式的另一方面中,从用户设备向网络设备发送对多维数据库的至少一部分的副本的请求,并在用户设备处接收多维数据库的至少一部分的副本。
在本实施方式的另一方面中,从网络设备接收指示对多维数据库的至少一部分的一个或多个修改的至少一个通信。响应于至少一个通信将多维数据库的至少一部分的本地副本与多维数据库的至少一部分同步。
在本发明的另一实施方式中,提供计算机程序产品。该产品包括计算机可读介质以及存储在计算机可读介质上的定义指令的计算机可读信号,作为由计算机执行的结果,这些指令指示计算机执行在以上各段描述的本发明的实施方式的方法和/或以下各段中描述的一个或多个方面。
结合附图,从以下包括本方面的诸方面和实施方式的本发明的详细描述,本方面的其它优点、新颖特征和目的及其诸方面和实施方式将变得显而易见。附图是示意性的,不旨在按比例绘制。在附图中,在不同附图中的每个相同或近似相同的组件由单个附图标记来表示。为了清楚起见,并未在每个附图中标出全部组件,也未标出每个实施方式的每个组件以及本方面的每个方面,对其的说明对本领域技术人员理解本发明是没有必要的。
详细描述
虽然以下主要关于Microsoft
Excel作为报告工具来描述本方面的某些实施方式,但是应该意识到本方面并不限于此。可以使用各种其它报告工具中的任一种。此外,虽然关于Microsoft
Analysis Services来描述本发明的某些实施方式,但是可以使用其它多维数据库系统(即OLAP)或模仿OLAP的关系数据库系统(通常称为ROLAP),且这落在本方面的范围内。
本方面的这些和其它实施方式的功能和优点可从以下描述的示例而得到更全面的理解。以下示例旨在便于更好理解以及示出本方面的益处,但并不例示本方面的全部范围。
如本文所使用的,无论是在说明书或权利要求术中,术语“包含”、“包括”、“带有”、“具有”、“含有”、“涉及”等应被理解为开放性的,即表示包括但并不限于此。只有常规词语“由...组成”和“主要由...组成”才是封闭式或半封闭式的常规词语,如美国专利局专利审查程序手册(英文版,修订版2,2004年5月)的2111.03节中相对于权利要求书所阐述的。
示例
图1是示出根据本发明某些实施方式的多维数据库系统示例的框图。系统100只是多维数据库系统的说明性实施方式,并不旨在限制本发明的范围。诸如系统100的变型的这种系统的许多其它实现中的任一个都是可能的,并且旨在落在本发明的范围内。
系统100可包括以下任何项:用户设备102、104和106;通信网络108;服务器112;多维数据库114;其它网络元件;或上述的任何适当组合。
如本文所使用的,“网络”是由一段或多段传输介质互连的两个或更多网络元件的定义组。可包括网络设备的一个或多个网络元件可被配置成在一段或多段传输介质上发送和/或接收对一个或多个网络元件的通信。例如当向网络添加网络元件和/或用户登陆到网络时,以及当移除网络元件和/或用户注销时,作为网络定义组成员的网络元件可随时间变化。每段可以是各种类型的传输介质中任一种,包括由金属和/或光纤、空气(例如使用通过载波的无线通信)制成的一个或多个电学或光学线或缆线或者这些通信介质的任意组合。如本文所使用的,“多个”表示两个或更多。应该意识到,网络可以是由单线、总线、无线连接或其它类型的段连接的可简单到两个元素的网络。此外,应该意识到,当在本申请的附图中将网络示为连接到附图中的元件时,所连接的元件自身也被示为网络的一部分。
如本文所使用的,“网络设备”是用于在网络上通信的设备,包括但不限于:工作站、个人计算机、终端、膝上型计算机、终端站、用户设备、服务器、网关、寄存器、交换机、路由器、集线器、网桥、目录、发送器、接收器、转发器及其任意组合。如本文所使用的,“用户设备”是用户可向其发送通信或从其接收通信并可用作在通信网络上通信的终点的网络设备。应该意识到,用户设备并不总是网络的一部分。用户设备包括但不限于:工作站;个人计算机(例如PC);膝上型计算机、笔记本计算机;电话(例如座机或移动);寻呼机;BlackberryTM牌设备、PCS设备、个人数字助理(PDA)、双向无线电(例如“对讲机”)、其它类型的用户设备以及以上的任意合适组合。
网络108可以是和/或包括各种类型的网络的任一种,包括但不限于,局域网(LAN)、城域网(MAN)、广域网(WAN)、无线网络(例如上述那些中任一种)、另一类型的网络、上述的任意合适组合。
如图1所示,服务器112和多维数据库114可驻留在同一网络设备110上。然而,应该意识到服务器112和多维数据库114也可驻留在分离设备上。
服务器112可控制对多维数据库114的访问,该数据库可由多个用户设备共享,包括用户设备102、104和106。应该意识到虽然图1只示出三个用户设备,但是系统100可包括几十、几百甚至几千个用户设备。此外,在网络108上可能存在多个服务器。每个用户设备可通过经由通信网络108与服务器112交换通信来访问和/或修改存储在多维数据库114中的数据。例如,用户设备可配置有查询控制器(例如客户机端查询层),该查询控制器被配置成与服务器112上的查询控制器(例如服务器端查询层)通信以实现查询。此外,用户设备可配置有对数据实现修改并将这些修改传递到服务器112的其它逻辑,该逻辑可对驻留在数据库114上的数据进行修改。
此外,在本发明的某些实施方式中,服务器112可被配置成响应于从用户设备102、104和106之一收到的请求生成作为多维数据库114的至少一部分的立方。服务器112可将该立方传递到请求用户设备。该传递也包括表示该立方生成时间的时间戳。该时间戳可由请求用户设备用于将立方与多维数据库114同步,如以下更详细描述。服务器112可基于用户或用户组的安全上下文生成立方。例如,服务器112可以只选择数据库114中用户被授权的那些部分(即切片)。该选择可涉及考虑信息片之间的依赖性。此外,在某些实施方式中,请求可指定对待选择的数据的一个或多个其它限制,服务器112可在生成立方时考虑这些限制。
如以下更详细描述,用户设备(例如用户设备102、104或106)可被配置成生成表示对存储在本地立方中的一个或多个信息片进行的修改的修改列表,并且可被配置成向服务器112发送该修改列表。服务器112可被配置成将修改列表中的修改应用到多维数据库114以及向共享多维数据库的一个或多个用户设备报告这些修改。此外,服务器112可被配置成向共享数据库的多个用户设备周期性发送更新,并且每次更新可包括时间戳。这些更新可指定对多维数据库114的修改。此外,服务器112可被配置成解决两个不同用户设备由于在这些用户设备之一或两者收到周期性更新而对多维数据库114中同一信息片进行的修改之间的冲突。
图2是示出根据本方面某些实施方式的在用户设备上使用存储在和通信网络上的用户设备分离的网络设备上的多维数据库的系统200的示例的框图。系统200只是在用户设备上使用存储在和通信网络上用户设备分离的网络设备上的多维数据库的系统的说明性实施方式,并不旨在限制本方面的范围。诸如系统200的变体的这种系统的许多其它实现中任一个都是可能的,并落在本方面的范围内。
系统200可包括以下任何项:用户接口208;应用程序210;服务器接口控制器212;修改列表控制器214;函数控制器216;查询控制器218;存储控制器220;非易失性存储介质222;通信网络230;其它组件;和以上的任何合适组合。如图2所示,在某些实施方式中,应用程序210可以是和组件212-220分离的不同组件。在其它实施方式中,这些组件的一个或多个可集成在应用程序210中。例如,组件212-220的一个或多个或者它们提供的功能可实现为应用程序210(例如Microsoft
Excel)的插件。此外,组件208-220中的一个或多个可在应用程序210的执行期间(即运行时期间)存储在易失性存储器206中。
非易失性存储器介质可在不同时间在其上存储报告文件224、本地立方226、修改列表228、其它组件或以上的任意合适组合,以下将详细描述每一个。
组件206-228全部驻留在用户设备204上(例如系统100的用户设备102-106中任一个),如图2所示,但是在某些实施方式中,这些组件的一个或多个可驻留在不同设备上。例如,非易失性存储介质222可驻留在和用户设备204分离的设备上。组件208-220的一个或多个可被视为客户机/服务器系统的客户机的一部分,其中服务器可以是诸如服务器112的多维数据库的服务器。
服务器接口控制器212可被配置成控制向服务器112发送对多维数据库114的至少一部分的请求。作为响应,控制器212可接收多维数据库的一部分。存储控制器220可被配置成控制在诸如存储介质222的非易失性存储介质上存储本地立方226。如本文所使用的,“本地立方”是存储在(将要存储在)用户设备的非易失性介质上的多维数据库的至少一部分的副本。
在本发明的某些实施方式中,本地立方226可针对用户设备204的一个或多个用户。例如,本地立方226可包括用户设备204的一个或多个用户允许访问的多维数据库的一个或多个部分。在该实施方式中,根据对多维数据库系统实现的安全系统基于一个或多个用户的安全上下文来确定要包括在本地立方中的一个或多个部分。在该实施方式中,小心确保本地立方226中没有包含多维数据库中一个或多个用户未被授权访问的部分。如上所述,服务器112可在生成立方时实现这些安全测量。如此限制这些部分可涉及考虑多维数据库中包括的数据片之间的依赖关系。
如上所述,在用户设备204上高速缓存本地立方226以及允许用户访问和使用存储在本地立方226中的数据和函数可为用户提供更快速的访问和计算时间。此外,在本地立方226小于多维数据库的全部的情形中,也可能是用户被限制于只能访问其中的某些数据的情形中,访问和处理速度可因数据量的减小而进一步增大。
用户接口208可被配置成接收和输出用户输入和输出202,并用作用户与应用程序210和/或用户设备204上其它组件之间的接口。如本文所使用的,“用户接口”是使用户能够在应用程序的执行期间与该应用程序进行接口的应用程序或应用程序的一部分(即计算机可读指令的子集)。用户接口可包括定义应用程序在应用程序执行期间如何向用户输出信息的代码,例如通过计算机屏幕或其它装置视觉输出,通过其它装置的扬声器听觉输出,以及通过游戏控制器或其它装置手动输出。这种用户接口也可包括定义用户在应用程序执行期间输入信息的代码,例如使用麦克风听觉输入或使用键盘、鼠标、游戏控制器、跟踪球、触摸屏或其它装置手动输入。
用户接口可定义如何向用户视觉呈现(即显示)信息,以及定义用户如何导航信息的视觉表示(即显示)并在视觉表示的上下文中输入信息。在应用程序执行期间,用户接口可控制信息的视觉表示并使用户能够导航视觉表示并在视觉表示的上下文中输入信息。用户接口的类型的范围从用户键入命令的命令驱动接口、用户从菜单选择命令的菜单驱动接口及其结合到GUI,其中GUI通常利用计算机图形能力的优点、更加灵活、直观和易于导航并且比命令驱动和菜单驱动的视觉用户接口具有更吸引人的“感观”。如本文所使用的,由用户接口或GUI呈现的信息的视觉表示分别称为“用户界面显示”或“GUI显示”。
应用程序210可以是使用户能够从存储在多维数据库114中的数据产生报告的报告工具或其它类型的应用程序。在本发明的某些实施方式中,应用程序210可被配置成与用户设备204上的一个或多个组件交互(或包括它们)以从本地立方226而非多维数据库114访问这些数据。例如,查询控制器218可被配置成从应用程序210接收对本地立方226中(以及多维数据库114自身中)包含的信息片的请求,并控制从本地立方226而非数据库114检索信息片。
除了存储从数据库114和本地立方226拷贝的数据之外,存储控制器220可被配置成在本地立方226中存储从数据库114拷贝的函数。这些函数可定义存储在本地立方中的数据片之间的关系,并包括一个或多个操作,包括一个或多个多维操作。例如,第一信息片可具有作为至少第二信息片的函数的值。响应于用户对应用程序210中的第二信息片作出的修改,函数控制器216可对第一数据片执行该函数以修改其值。函数控制器216可被配置成在易失性存储器206中执行该函数,从而提供比原本该函数在服务器112和/或多维数据库114上远程执行时可用的时间更快的处理时间。因此,用户可用不同信息片的不同值试验以确定这些值如何影响本地存储器中的其它信息片的值,而无需保留这些修改。这些函数的执行结果例如可响应于用户请求刷新由用户接口呈现的数据而通过用户接口208向用户显示。
例如,用户可修改在电子数据表应用程序(例如Microsoft
Excel)的第一单元中出现的值。该值可表示来自存储在本地立方226中的多维数据库的信息片的值。该信息片可与本地立方226中的一个或多个其它信息片相关,且这些关系中的每一个可由一个或多个多维操作定义。响应于用户修改单元中的值,函数控制器216被配置成使用来自本地立方226的多维操作重新计算所有相关信息片的值。在新的值被计算之后,函数控制器216可将这些新的值传递到应用程序210和/或用户接口208,使得表示作为重新计算的结果而修改的值的任何单元被更新以反映该修改。
在本发明的某些实施方式中,对信息片的修改由修改列表控制器214记录在修改列表中。这种修改列表可在易失性存储器206中维护,并可作为修改列表228保留在非易失性存储介质中和/或向服务器112发送使得这些修改被记录在多维数据库114中。对于修改列表中的每个修改,时间戳可与修改一同记录。这些时间戳用于将本地立方226与多维数据库114同步,如以下更详细描述。
例如,应用程序210的用户可通过修改一个或多个信息片的值以查看这对其它信息片的影响来试验。每次用户修改信息片,该修改被记录在易失性存储器中的修改列表中。在用户完成试验之后,用户就可将已更改的信息片修改回其原始值或使一个或多个信息片保持修改。用户可保存该报告或包括信息片的其它文档作为报告文件224,并且可将修改列表应用到本地立方226。此外,修改列表自身可作为修改列表228存储在存储介质222中。
服务器接口控制器212可被配置成向服务器112发送修改列表228,使得这些修改应用到多维数据库114。例如服务器接口控制器212可被配置成向服务器112周期性发送修改列表228和/或响应于例如将修改列表228保存到存储介质222、关闭应用程序210、用户命令等的事件而发送修改列表。修改列表228可在向服务器112发送修改列表之后从存储介质222删除以确保不再次对多维数据库114进行相同的修改,以维护数据的完整性。而且,可使用其它同步技术,这些技术在修改列表中采用时间戳和/或在修改列表228中维护反映向服务器112发送的修改列表中最后修改的指示。
服务器112可被配置成协调修改列表228内的修改与多维数据库114内的数据的同步。例如,服务器112可被配置成在用户对用户设备上的自从上次将该信息片从数据库114加载到用户设备以来已修改过的信息片进行修改的事件中对数据进行同步。此外,服务器112可被配置成将对多维数据库114做出的修改推入(例如周期性)共享数据库114中数据的多个用户设备(例如用户设备102-106)。用户设备随后可使用所推入的修改来更新其本地立方。
每个共享多维数据库的用户设备可被配置成自身使用同步技术。例如,用户设备204的服务器接口控制器212可用于将本地立方226与多维数据库114同步。如上所述,从服务器向包括该本地立方的用户设备204的通信也可包括表示该本地立方生成时间的时间戳。同样如上所述,服务器可被配置成向用户设备发送包括时间戳的周期性更新。服务器接口控制器212可被配置成响应于收到这些周期性通信而例如基于与本地立方226通信的时间戳将本地立方226与多维数据库114同步。控制器212可被配置成将来自服务器112的与更新一起被包含的时间戳与最初与本地立方226通信的时间戳进行比较。如果更新的时间戳晚于本地立方的时间戳,则本地立方过时并需要同步。
本地立方226和服务器接口控制器212可被配置成使本地立方226增量更新;即仅仅是本地立方226中从上次更新以来已发生改变的信息片。此外,服务器接口控制器212也可被配置成也执行本地立方226的完全刷新。例如,控制器212可被配置成如果它确定从服务器接收到的更新包括本地立方226中未包括的修改则向服务器112请求当前本地立方。
服务器接口控制器200可被配置成响应于从服务器112接收更新来处理不同的同步情况。例如,如果从上次增量更新或刷新本地立方226以来未对本地立方226进行修改,则不对本地立方226进行增量更新,也不对本地立方进行完全刷新。如果从上次增量更新或完全刷新以来已对本地立方226进行了修改,则控制器212可被配置成在本地立方226上执行完全刷新,然后重新应用这种修改。例如控制器212可重新应用在修改列表228中维护的在从服务器112接收更新与上次增量更新或刷新之间发生的修改。
在某些实施方式中,当控制器212处于将修改列表228向服务器112传递的进程中时,控制器212可“预览这些修改”。即,控制器212可将正在传递的修改与多维数据库114上还未向用户设备204传递的修改进行比较。例如,控制器212可从服务器112请求更新(独立于任何周期性更新),然后将在更新中指定的修改与正在传递的修改列表中的修改进行比较。控制器212可使用各种技术中的任一种解决这些修改之间的冲突,这些技术例如:基于更新中指定的修改对本地立方226进行增量修改,然后应用来自修改列表的修改;或者通过在本地立方226上执行完全刷新,重新应用修改列表228中的修改,然后将修改列表228发送到服务器112。
系统100和200及其组件可使用各种技术中的任一种实现,这些技术包括软件(例如C、C#、C++、Java或其组合)、硬件(例如一个或多个专用集成电路)、固件(例如电可编程存储器)或其任意组合。系统100和/或200的组件中的一个或多个可驻留在单个设备(例如计算机),或者一个或多个组件可驻留在分离的离散设备上。此外,每个组件可分布在不同设备上,并且设备的一个或多个可互连。
此外,在包括系统100和/或200的一个或多个组件的一个或多个设备的每一个上,每个组件可驻留在系统的一个或多个位置内。例如,这些系统的组件的不同部分可驻留在设备上存储器(例如RAM、ROM、磁盘等)的不同区域中。这种一个或多个设备的每一个可包括诸如多个已知组件,诸如一个或多个处理器、存储器系统、盘存储系统、一个或多个网络接口和互连各种组件的一个或多个总线或其它内部通信链路。系统100和/或200及其组件可使用诸如以下相关于图4和5描述的计算机系统来实现。
图3是示出根据本方面的某些实施方式在用户设备上使用存储在远离通信网络上用户设备设置的网络设备上的多维数据库的至少一部分的方法300的示例的流程图。方法300只是在用户设备上使用存储在远离通信网络上用户设备设置的网络设备上的多维数据库的至少一部分的方法的说明性示例,并不旨在限制本方面的范围。诸如方法300的变型的这种方法的许多其它实现的任一种是可能的,并落在本方面的范围内。
最初,用户设备可向多维数据库的服务器(未示出)发送对多维数据库的至少一部分的请求,例如以上相关于图1的系统200所述。作为响应,服务器可生成该至少一部分的副本,并将该至少一部分发送到用户设备(未示出),例如以上相关于系统200所述。
在动作302,多维数据库的至少一部分的副本可存储在例如以上相关于系统200的存储控制器220描述的用户设备的非易失性存储介质上。在动作304,响应于来自在用户设备上执行的应用程序的对包括在多维数据库的至少一部分(即本地立方)中的信息片的请求,可从本地立方检索信息片。在动作304可如上相关于系统200所述地执行。
如上所述,在某些实施方式中,至少一个或多个第一信息片可以是本地立方的第二信息片的值的函数(即取决于)。因此,在动作306,响应于应用程序改变用户设备上易失性存储器中的第二信息片的值,该函数(例如一个或多个操作)可对易失性存储器中第一信息片执行。动作306可由如以上相关于图2所述的系统200的函数控制器216执行。
在动作308,从函数执行得到的第一信息片的值可在由应用程序提供的用户界面显示内显示,如相关于系统200所述。在动作310,可将修改添加到表示多个修改的修改列表中。例如,修改列表可驻留在易失性存储器中。动作310可由如上相关于图2所述的系统200的修改列表控制器214执行。
在动作312,本地立方的副本可通过将来自易失性存储器的修改列表应用到本地立方来更新,例如以上相关于方法200所述。
在动作314,可将修改列表存储在非易失性存储介质中,例如以上相关于方法200的修改列表控制器214所述。在动作316,可将修改列表从用户设备发送到网络设备,例如如以上相关于系统200的服务器接口控制器212所述。
虽然未在图3中示出,但是方法300可包括从多维数据库服务器接收可指定对多维数据库的更新的周期性通信。可响应于接收这种更新而向本地立方和/或多维数据库施加各种同步技术的任一种,例如以上相关于系统200所述的那些中任一种。
在动作318,可从本地立方生成报告,例如以上相关于200所述。
方法300的一个或多个动作可并行(至少部分并行)执行或者以不同于图3所示的次序执行。例如,生成报告的动作318可在方法300的执行期间任何时刻执行。此外,从用户设备向网络设备发送修改列表的动作316可分别在更新立方和将修改列表存储在存储介质的动作312和314之前执行。此外,方法300的动作中的一个或多个可例如响应于事件而在动作300的一个或多个其它动作执行之后重复。动作300可使用基于事件的编程和处理技术,其中,各种动作可响应于特定事件执行,而无需以方法300所示的顺序。
方法300及其动作以及该方法和这些动作的各种实施方式和变型可由实际上嵌入到例如非易失性记录介质、集成电路存储器元件或其组合的一个或多个计算机可读介质上的计算机可读信号独立地或组合地定义。计算机可读介质可以是可由计算机访问的任何可用介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现用来存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、盒式磁带、磁带、磁盘存储或其它磁性存储设备、其它类型的易失性和非易失性存储器、可用于存储所需信息并且可由计算机访问的任何其它介质、以及以上的任何合适组合。
通信介质通常体现为在诸如载波或其它传输机制的调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据。术语“调制数据信号”表示以在该信号中编码信息的方式设定或更改其特征的一个或多个的信号。作为示例而非限制,通信介质包括诸如接线网络或直接接线连接的有线介质、诸如声学、RF、红外的无线介质或其它无线介质、其它类型的通信介质、以及以上的任意适当组合。
在一个或多个计算机可读介质上具体化的计算机可读信号可定义作为一个或多个程序的一部分的指令,作为由计算机执行的结果,这些指令指示计算机执行本文所述的功能中的一个或多个(例如方法300或其任何动作)和/或各种实施方式、变型及其组合。这种指令可以以各种编程语言中的任一种编写,例如Java、J#、Visual Basic、C、C#、或C++、Fortran、Pascal、Eiffel、Basic、COBOL等或其各种组合中的任一种。这种指令所具体化的计算机可读介质可驻留在本文所述的系统100、200、400和500中任一个的组件的一个或多个上,可在这种组件的一个或多个上分布,并可在其间变换。
计算机可读介质可以是可运输的,使得可将存储其上的指令加载到任何计算机系统资源上以实现本文所述的本发明的诸方面。此外,应该意识到,如上所述的存储在计算机可读介质上的指令并不限于体现为作为在主机计算机上运行的应用程序的一部分的指令。相反,这些指令可体现为可用于编程处理器以实现本发明的上述方面的任何类型的计算机代码(例如软件或微代码)。
应该意识到,执行本文所述的功能的诸如相关于图1、2、4和5描述的计算机系统的计算机系统的多个组件的任何单个组件或组件集通常可被示为控制这些功能的一个或多个控制器。一个或多个控制器可使用采用微代码或软件进行编程以实现上述功能或以上任意合适组合的处理器来以许多方法实现,诸如使用专用软件和/或固件。
根据本发明的各种实施方式可在一个或多个计算机系统上实现。这些计算机系统可以是例如基于Intel PENTIUM(因特尔奔腾)型处理器、摩托罗拉PowerPC、Sun UltraSPARC、Hewlett-Packard(惠普)PA-RISC处理器、可从超微半导体(AMD)购得的各种处理器中任一种或者任何其它类型的处理器的通用计算机。应该意识到,任何类型的计算机系统中的一个或多个可用于实现本发明的各个实施方式。
根据本发明的一实施方式的通用计算机系统被配置成执行上述功能的一个或多个。应该意识到,该系统可执行其它功能并且本发明并不限于具有任何特定功能或功能集。
例如,本发明的各个方面可实现为在诸如图4中所示的通用计算机系统400上执行的指定软件。计算机系统400可包括连接到诸如磁盘驱动器、存储器或其它用于存储数据的设备的处理器403。存储器404通常用于在计算机系统400的操作期间存储程序和数据。计算机系统400的组件可通过包括一个或多个总线(例如在集成在同一机器中的组件之间)和/或网络(例如驻留在分离离散机器上的组件之间)的互连机制405来耦合。互连机制405可在系统400的系统组件之间实现通信(例如数据、指令)。计算机系统400还包括一个或多个输入设备402,诸如键盘、鼠标、跟踪球、麦克风、触摸屏,以及一个或多个输出设备401,诸如打印设备、显示屏、扬声器。此外,计算机系统400可包含将计算机系统400连接于通信网络(除了互连机制405之外,或者作为其替代)的一个或多个接口(未示出)。
在图5中更详细示出的存储系统406通常包括计算机可读并且可写的非易失性记录介质501,在该介质上存储的信号定义了由处理器执行的程序或者在介质501上或其中存储的信息可由该程序处理。例如,该介质可以是磁盘或闪存。通常在操作中,处理器使数据从非易失性记录介质501读取到允许由处理器比介质501更快速访问的另一存储器502中。该存储器502通常是诸如动态随机存取存储器(DRAM)或静态存储器(SRAM)的易失性、随机存取存储器。它可如所示地位于存储系统406中或者位于存储器系统404中(未示出)。处理器403通常操控集成电路存储器404、502中的数据,然后在处理完成之后将数据拷贝到介质501中。用于在介质501与集成电路存储器单元404、502之间管理数据移动的各种机制是已知的,并且本发明并不限于此。本发明并不限于特定存储器系统404或存储系统406。
计算机系统可包括特定编程、专用硬件,诸如专用集成电路(ASIC)。本发明的诸方面可在软件、硬件或固件或其任意组合中实现。此外,这种方法、动作、系统、系统元素及其组件可实现为上述计算机系统的一部分或者实现为独立组件。
虽然计算机系统400作为实践本发明的不同方面的一种计算机系统而作为示例示出,但是应该意识到本方面的诸方面并不限于在图4所示的计算机系统上实现。本发明的不同方面可在具有与图4所示不同的架构和组件的一个或多个计算机上实施。
计算机系统400可以是可使用高级计算机编程语言编程的通用计算机系统。计算机系统400也可以用特定编程、专用硬件实现。在计算机系统400中,处理器403通常是诸如可从因特尔公司购买的公知的奔腾系列处理器的商用处理器。许多其它处理器也可使用。这种处理器通常执行操作系统,诸如可从微软公司购买的Windows
95、Windows
98、Windows NT
、Windows
2000(Windows
ME)或Windows
XP操作系统,可从苹果计算机公司购买的MAC OS System X,可从太阳微系统公司(Sun Microsystems)购买的Solaris Operating System,可从各种来源获得的Linux或UNIX。可以使用各种其它操作系统中的任一种。
处理器和操作系统一起定义了计算机平台,其中可以高级编程语言编写应用程序。应该理解,本发明并不限于特定计算机系统平台、处理器、操作系统、或网络。而且,对本领域技术人员显而易见的是本发明不限于特定编程语言或计算机系统,以及也可使用其它适当编程语言和其它适当计算机系统。
计算机系统的一个或多个部分可分布在耦合到通信网络的一个或多个计算机系统(未示出)。这些计算机系统也可以是通用计算机系统。例如,本发明的各个方面可分布在配置成向一个或多个客户端计算机提供服务(例如,服务器)或执行总的任务作为分布式系统一部分的一个或多个计算机系统上。,本发明的各个方面可在包括分布在执行根据本方面不同实施方式的各种功能的一个或多个服务器系统上分布的组件的客户机-服务器系统上执行。这些组件可以是用通信协议(例如TCP/IP)通过通信网络(例如因特网)传递的可执行、中间(例如IL)或解释(例如Java)代码。
应该意识到,本方面并不限于在任何系统或系统组上执行,并且本发明不限于任何特定分布的架构、网络或通信协议。
本发明的各个实施方式可用面向对象的编程语言来编程,诸如SmallTalk、Java、J#(J-Sharp)、C++、Ada或C#(C-Sharp)。也可以使用其它面向对象的编程语言。或者,可以使用功能、脚本、和/或逻辑编程语言。本发明的各个方面可在非编程环境中实现(例如在HTML、XML或其它格式中创建的文档,当在浏览器程序的窗口中浏览这些文档时呈现图形用户界面(GUI)的诸方面或执行其它功能)。本发明的各个方面可被实现为已编程或未编程元件或其任意组合。此外,本发明的各个实施方式可用可从微软公司购买的Microsoft.NET技术来实现。
现在已经描述了本发明的某些说明性实施方式,对本领域技术人员显而易见的是以上仅为说明性的而非限制,仅作为示例呈现。许多更改和其它说明性实施方式在本领域普通技术之一的范围内,并且可以预期落在本发明的范围内。特别地,虽然本文示出的许多示例涉及方法动作或系统元件的具体组合,但是应该理解这些动作和这些元件可以通过其它方式组合以实现同一目的。仅相关于一实施方式描述的动作、元件和特征并不旨在排除出其它实施方式中的类似角色。此外,对于所附权利要求书中所述的一个或多个装置加功能的描述,装置不旨在限制于本文所述的用于执行所述功能的装置,而是旨在涵盖范围内的任何已知或以后开发的用于执行所述功能的等效装置。
权利要求中使用诸如“第一”、“第二”、“第三”等的序数词来修饰权利要求元素,其自身并不表示任何优先级、先后次序、或一权利要求元素在另一个之前的次序、或方法的动作执行的时间次序,而只是用作将具有特定名称的一个权利要求元件从具有相同名称(但使用序数词)的另一元件区分开以区别权利要求元素。