用于进行数据仓储的系统和方法转让专利

申请号 : CN201110122321.5

文献号 : CN102142039B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 克里斯托弗·R·贝尔保罗·J·博得马克·E·邓拉普

申请人 : 亚马逊科技公司

摘要 :

一种用于实现数据仓储系统的系统和方法。根据第一实施例,一种系统可以包括:多个数据仓库;和数据仓库管理器,其被配置成从一个或更多个数据源提取数据集合以存储在所述多个数据仓库中的一个或更多个中。包括所述多个数据仓库中的两个或更多个数据仓库的第一子集中的每个数据仓库都被配置成存储由所述数据仓库管理器提取的第一数据集合的相应副本。此外,所述数据仓库管理器还可以被配置成在所述第一数据集合的每个相应副本被存储到所述第一子集中的对应数据仓库之前允许由数据仓库的所述第一子集中的一个数据仓库对依赖于所述第一数据集合的查询进行评估。

权利要求 :

1.一种数据仓库系统,该系统包括:

多个数据仓库,其被配置成存储从一个或更多个数据源提取的数据集合;以及数据仓库管理器,其被配置成将所述多个数据仓库作为单个数据仓库呈现给客户机,其中所述多个数据仓库内的所述数据集合的位置对于所述客户机是透明的;

其中,在给定时刻,由所述多个数据仓库中的第一数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第一数据集合与由所述多个数据仓库中的第二数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第二数据集合不相似;并且其中,响应于接收到来自所述客户机的针对由所述多个数据仓库中的一个或更多个数据仓库存储的数据集合的查询,所述数据仓库管理器还被配置成识别所述多个数据仓库中的能够对所述查询进行评估的一个特定数据仓库,并将所述查询传送给所述特定数据仓库以进行评估。

2.根据权利要求1所述的系统,其中包括所述多个数据仓库中的两个或更多个数据仓库的第一子集中的每个数据仓库都被配置成存储给定数据集合的相应副本。

3.根据权利要求2所述的系统,其中所述数据仓库管理器还被配置成:在所述给定数据集合的每个相应副本已被存储到所述第一子集中的对应数据仓库之前,允许由数据仓库的所述第一子集中的一个数据仓库对依赖于所述给定数据集合的查询进行评估。

4.根据权利要求1所述的系统,其中所述多个数据仓库中的一个给定数据仓库被配置成存储第二数据集合,并且其中所述多个数据仓库中的至少另一数据仓库不存储所述第二数据集合的任何副本。

5.根据权利要求1所述的系统,其中所述多个数据仓库中的每一个都包括相应的关系数据库。

6.根据权利要求1所述的系统,其中所述数据仓库管理器还被配置成:在操作数据库中存储与存储在所述多个数据仓库内的每个数据集合相对应的标识信息。

7.根据权利要求6所述的系统,其中,对于给定数据集合,所述标识信息包括存储有或要存储所述给定数据集合的所述一个或更多个数据仓库中每一个的相应标识符,并且其中所述标识信息还包括表明是否已将所述给定数据集合存储到对应数据仓库的相应状态信息。

8.根据权利要求7所述的系统,其中,所述数据仓库管理器识别能够对所述查询进行评估的所述特定数据仓库的操作还包括根据所述相应状态信息来确定所述特定数据仓库是否具有足够的数据来对所述查询进行评估。

9.根据权利要求1所述的系统,其中所述数据仓库管理器还被配置成经由web服务接口从进行请求的应用接收所述查询。

10.一种将数据仓库可视化给客户的方法,该方法包括以下步骤:

从一个或更多个数据源提取数据集合以存储在多个数据仓库中的一个或更多个中;

将所述多个数据仓库作为单个数据仓库呈现给客户机,其中所述多个数据仓库内的所述数据集合的位置对于所述客户机是透明的;以及响应于接收到来自所述客户机的针对由所述多个数据仓库中的一个或更多个数据仓库存储的数据集合的查询,识别所述多个数据仓库中的能够对所述查询进行评估的一个特定数据仓库,并将所述查询传送给所述特定数据仓库以进行评估,其中,在给定时刻,由所述多个数据仓库中的第一数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第一数据集合与由所述多个数据仓库中的第二数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第二数据集合不相似。

11.根据权利要求10所述的方法,其中包括所述多个数据仓库中的两个或更多个数据仓库的第一子集中的每个数据仓库都被配置成存储给定数据集合的相应副本。

12.根据权利要求11所述的方法,该方法还包括以下步骤:在所述给定数据集合的每个相应副本已被存储到所述第一子集中的对应数据仓库之前,允许由数据仓库的所述第一子集中的一个数据仓库对依赖于所述给定数据集合的查询进行评估。

13.根据权利要求10所述的方法,其中所述多个数据仓库中的一个给定数据仓库被配置成存储第二数据集合,并且其中所述多个数据仓库中的至少另一数据仓库不存储所述第二数据集合的任何副本。

14.根据权利要求10所述的方法,其中所述多个数据仓库中的每一个都包括相应的关系数据库。

15.根据权利要求10所述的方法,该方法还包括以下步骤:在操作数据库中存储与存储在所述多个数据仓库内的每个数据集合相对应的标识信息。

16.根据权利要求15所述的方法,其中,对于给定数据集合,所述标识信息包括存储有或要存储所述给定数据集合的所述一个或更多个数据仓库中每一个的相应标识符,并且其中所述标识信息还包括表明是否已将所述给定数据集合存储到对应数据仓库的相应状态信息。

17.根据权利要求16所述的方法,其中,识别能够对所述查询进行评估的所述特定数据仓库的步骤还包括以下步骤:根据所述相应状态信息来确定所述特定数据仓库是否具有足够的数据来对所述查询进行评估。

18.根据权利要求10所述的方法,该方法还包括以下步骤:经由web服务接口从进行请求的应用接收所述查询。

19.一种将数据仓库可视化给客户的系统,包括:

从一个或更多个数据源提取数据集合以存储在多个数据仓库中的一个或更多个中的装置;

将所述多个数据仓库作为单个数据仓库呈现给客户机的装置,其中所述多个数据仓库内的所述数据集合的位置对于所述客户机是透明的;以及响应于接收到来自所述客户机的针对由所述多个数据仓库中的一个或更多个数据仓库存储的数据集合的查询,识别所述多个数据仓库中的能够对所述查询进行评估的一个特定数据仓库,并将所述查询传送给所述特定数据仓库以进行评估的装置,其中,在给定时刻,由所述多个数据仓库中的第一数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第一数据集合与由所述多个数据仓库中的第二数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第二数据集合不相似。

20.根据权利要求19所述的系统,其中包括所述多个数据仓库中的两个或更多个数据仓库的第一子集中的每个数据仓库都被配置成存储给定数据集合的相应副本。

21.根据权利要求20所述的系统,还包括:在所述给定数据集合的每个相应副本已被存储到所述第一子集中的对应数据仓库之前,允许由数据仓库的所述第一子集中的一个数据仓库对依赖于所述给定数据集合的查询进行评估的装置。

22.根据权利要求19所述的系统,其中所述多个数据仓库中的一个给定数据仓库被配置成存储第二数据集合,并且其中所述多个数据仓库中的至少另一数据仓库不存储所述第二数据集合的任何副本。

23.根据权利要求19所述的系统,其中所述多个数据仓库中的每一个都包括相应的关系数据库。

24.根据权利要求19所述的系统,还包括:在操作数据库中存储与存储在所述多个数据仓库内的每个数据集合相对应的标识信息的装置。

25.根据权利要求24所述的系统,其中,对于给定数据集合,所述标识信息包括存储有或要存储所述给定数据集合的所述一个或更多个数据仓库中每一个的相应标识符,并且其中所述标识信息还包括表明是否已将所述给定数据集合存储到对应数据仓库的相应状态信息。

26.根据权利要求25所述的系统,其中,识别能够对所述查询进行评估的所述特定数据仓库的装置还包括:根据所述相应状态信息来确定所述特定数据仓库是否具有足够的数据来对所述查询进行评估的装置。

27.根据权利要求19所述的系统,还包括经由web服务接口从进行请求的应用接收所述查询的装置。

28.一种数据仓库系统,该系统包括:

多个数据仓库;和

数据仓库管理器,其被配置成从一个或更多个数据源提取数据集合以存储在所述多个数据仓库中的一个或更多个中;以及操作数据库,其被配置成与所述数据仓库管理器相交互并且存储与所述数据集合相关联的数据仓库状态信息,其中,响应于接收到来自多个客户机中的一个给定客户机的针对由所述多个数据仓库中的一个或更多个数据仓库所存储的数据集合的查询,所述数据仓库管理器还被配置成识别所述多个数据仓库中的能够对所述查询进行评估的一个特定数据仓库,并将所述查询传送给所述特定数据仓库以进行评估,其中所述识别操作依赖于所述数据仓库状态信息。

29.根据权利要求28所述的系统,其中,对于给定数据集合,与所述给定数据集合相关联的所述数据仓库状态信息包括对被配置成存储所述给定数据集合的所述多个数据仓库中的一个或更多个进行标识的信息。

30.根据权利要求28所述的系统,其中,对于给定数据集合,与所述给定数据集合相关联的所述数据仓库状态信息包括针对修改所述给定数据集合的内容的操作而标识所述给定数据集合的状态的信息。

31.根据权利要求28所述的系统,其中包括所述多个数据仓库中的两个或更多个数据仓库的第一子集中的每个数据仓库都被配置成存储由所述数据仓库管理器提取的第一数据集合的相应副本,并且其中所述数据仓库管理器还被配置成:在所述第一数据集合的每个相应副本已被存储到所述第一子集中的对应数据仓库之前,允许由数据仓库的所述第一子集中的一个数据仓库对依赖于所述第一数据集合的查询进行评估。

32.根据权利要求28所述的系统,其中所述数据仓库管理器还被配置成将所述多个数据仓库作为单个数据仓库呈现给所述给定客户机,其中所述多个数据仓库内的所述数据集合的位置对于所述给定客户机是透明的。

33.根据权利要求32所述的系统,其中,在给定时刻,由所述多个数据仓库中的第一数据仓库存储的并且在所述给定时刻可供所述给定客户机进行查询的第一数据集合与由所述多个数据仓库中的第二数据仓库存储的并且在所述给定时刻可供所述给定客户机进行查询的第二数据集合不相似。

说明书 :

用于进行数据仓储的系统和方法

[0001] 本申请是申请号为200580047505.2、申请日为2005年12月14日、发明名称为“用于进行数据仓储的设备和方法”的发明专利申请的分案申请。

技术领域

[0002] 本发明涉及计算机系统,更具体地说,涉及数据仓储系统的实现。

背景技术

[0003] 随着企业内的商业机能数量的增加,企业所产生的数据量也相应地增加了。这种数据可能分布在整个企业内,例如在由不同部门或地理单元实现的数据库系统和其他类型的系统内。在某些情况下,可以跨越现有系统或位置之间的自然边界对企业数据进行有用分析。为了便于进行这种分析,可以采用数据仓储系统将来自多个不同系统或位置的数据汇集在单个系统内,如单个数据库内。随后,分析工具可以将该单个、经汇集的系统而不是各种分布式数据源作为目标,这可以简化分析工具的设计并改进分析性能。
[0004] 通常,数据仓储系统利用被配置成提供所需分析性能的高端计算机系统来支持对非常大量的数据的存储和查询。然而,非常适合于特定数据仓储应用的高端系统的采购和维护费用可能是高昂的,并且可能无法随着企业的数据仓储需求的增长而扩缩。如果例如由于昂贵而只提供单个数据仓储系统,那么在该单个仓库发生故障时会损害数据可用性。另一方面,如果提供多个数据仓储系统,那么分析应用会丧失采用单个、经汇集的数据源的简单性。例如,可能需要将分析应用配置成对多个数据仓库内的期望数据的位置进行跟踪。

发明内容

[0005] 公开了用于实现数据仓储系统的设备和方法的各种实施例。根据一个实施例,一种系统可以包括:若干数据仓库;和数据仓库管理器,其被配置成从一个或更多个数据源提取数据集合以存储在所述多个数据仓库中的一个或更多个中。两个或更多个数据仓库中的每一个都可被配置成存储由所述数据仓库管理器提取的数据集合的相应副本。此外,所述数据仓库管理器可以被配置成在所述数据集合的每个相应副本被存储到对应的一个另外数据仓库之前允许由所述多个数据仓库中的一个数据仓库对依赖于所述数据集合的查询进行评估。类似地,所述数据仓库管理器还可以被配置成在已将所述数据集合的修改复制到对应的另外数据仓库之前允许由所述多个数据仓库中的一个数据仓库对依赖于所述数据集合的查询进行评估。
[0006] 还构思了一种方法,根据一个实施例,该方法可以包括以下步骤:从一个或更多个数据源提取数据集合以存储在一个或更多个数据仓库中;将第一数据集合的相应副本存储在包括两个或更多个数据仓库的第一子集中的每个数据仓库中;以及在所述第一数据集合的每个相应副本被存储到所述第一子集中的对应数据仓库之前允许由数据仓库的所述第一子集中的一个数据仓库对依赖于所述第一数据集合的查询进行评估。
[0007] 根据第二实施例,一种系统可以包括:多个数据仓库,其被配置成存储从一个或更多个数据源提取的数据集合;和数据仓库管理器,其被配置成将所述多个数据仓库作为单个数据仓库呈现给客户机。所述多个数据仓库内的所述数据集合的位置对于所述客户机来说可以是透明的。而且,在给定时刻,由第一数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第一数据集合可能与由第二数据仓库存储的并且在所述给定时刻也可供所述客户机进行查询的第二数据集合不相似。所述数据仓库管理器还可以被配置成响应于接收到来自所述客户机的针对由所述多个数据仓库中的一个或更多个数据仓库所存储的数据集合的查询的接收,对所述多个数据仓库中的能够对所述查询进行评估的一个特定数据仓库进行识别并将所述查询传送给所述特定数据仓库以进行评估。
[0008] 还构思了一种方法,根据一个实施例,该方法可以包括以下步骤:从一个或更多个数据源提取数据集合以存储在一个或更多个数据仓库中,并将所述多个数据仓库作为单个数据仓库呈现给客户机。所述多个数据仓库内的所述数据集合的位置对于所述客户机来说可以是透明的。响应于对来自所述客户机的针对由所述多个数据仓库中的一个或更多个数据仓库所存储的数据集合的查询的接收,该方法还可以包括以下步骤:对所述多个数据仓库中的能够对所述查询进行评估的一个特定数据仓库进行识别并将所述查询传送给所述特定数据仓库以进行评估。在给定时刻,由第一数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第一数据集合可能与由第二数据仓库存储的并且在所述给定时刻可供所述客户机进行查询的第二数据集合不相似。

附图说明

[0009] 图1是例示了数据仓储系统的一个实施例的框图。
[0010] 图2是例示了跨越多个数据仓库的数据集合复制处理的一个实施例的框图。
[0011] 图3是例示了利用粗同步将所提取的数据存储在数据仓库中的方法的一个实施例的流程图。
[0012] 图4是例示了利用粗同步对由数据仓库存储的数据进行查询的方法的一个实施例的流程图。
[0013] 图5A是例示了在粗同步下在数据集合更新与查询之间的关系的一个实施例的时序图。
[0014] 图5B到5D是例示了利用粗同步而复制的数据集合的一个示例性实施例的框图。
[0015] 图6是例示了将数据仓库可视化给客户的方法的一个实施例的流程图。
[0016] 图7是例示了数据仓库计算集群的一个实施例的框图。
[0017] 图8是例示了计算机系统的示例性实施例的框图。
[0018] 尽管本发明容许各种修改和另选形式,但是在附图中以示例的方式示出了其特定实施例,在此将对这些具体实施例进行详细描述。然而,应当理解,附图及其详细描述并不旨在将本发明局限于所公开的具体形式,而是相反,旨在覆盖落在如所附权利要求所限定的本发明的精神和范围内的所有变型例、等同物以及另选例。

具体实施方式

[0019] 数据仓储系统的概述
[0020] 在某些复杂的企业计算环境中,各种数据源可能分布在整个企业内。例如,企业可能对于不同的商业机能(如会计、财务、电子商务、人力资源、采购、制造、分发等)实现多个独立的计算机系统和/或应用。此外,这种系统和/或应用可能在地理上是分散的和重复的,例如在各分发地点处提供有分发管理系统。在某些这种企业中,数据库或其他数据存储体以及分析工具和其他应用可能对于一地点或机能来说是专用的,并且可以外部地与其他机能或地点的系统相交互。
[0021] 为特定商业机能或地点只提供其执行其大部分任务所需要的数据和资源可以避免在企业内对过度或冗余资源进行分配。然而,在某些情况下,可能需要对来自整个企业的数据作为整体进行分析。例如,对企业范围的财务或生产趋势的分析可能依赖于在多个不同地点处或跨越不同部门所产生和保持的数据。在某些情况下,可以将数据分析工具配置成对跨越多个商业机能的复杂相互关系进行检测,这种相互关系不能直接通过对孤立的单个机能的分析辨别出。例如,在员工经验与培训(由人力资源来跟踪)、分发生产率与财务业绩(例如,由于分发错误而导致的产品回报额的减少)之间可能存在关系。可以通过对来自这些机能中的每一个的数据集体地针对互相关性进行检查来识别这种关系。
[0022] 在某些实施例中,企业可以提供集中化数据仓储系统以便于对企业范围的数据进行处理和分析。一般来讲,数据仓库可以包括被配置成将存储在一个或更多个数据源中的数据汇集起来的数据库或其他数据储存库。数据源自身可以是企业内的存储或产生数据的其他数据库或其他应用。通常,存储在数据仓库内的数据是存储在企业内的其他地方的数据的衍生物。然而,在某些情况下,也可以将数据仓库配置成用作针对某些数据(如企业范围的分析数据,或者甚至企业机能或地点数据)的主储存器。
[0023] 在图1中例示了数据仓库系统的一个实施例。在所例示的实施例中,数据仓库系统100包括被配置成与由图1中的数据仓库120a到120d表示的多个数据仓库相交互的数据仓库管理器110。图1所例示的数据仓库120a到120d的数量只是例示性的,其可以在其他实施例中不同。也可以将数据仓库管理器110配置成与操作数据库130相交互。还将数据仓库管理器110配置成与一个或更多个客户机140和数据源160相交互,这些客户机140和数据源160可以位于数据仓库系统100的外部(例如,分布在整个企业中、或者分布在多个企业间、分布在不同逻辑或物理地点处)。在某些实施例中,可以将某些客户机140配置成经由web服务接口150与数据仓库管理器110相交互。在某些实施例中,可以将数据仓库管理器110配置成经由web服务接口(未示出)与某些数据源160相交互。
[0024] 在某些实施例中,数据仓库120a到120d可以包括相应的关系数据库。例如,一给定数据仓库120可以包括诸如Oracle、DB2、Sybase、Informix、Adabas或任何其他私有或开放源码数据库之类的数据库。在某些实施例中,不同的数据仓库120可以实现来自不同厂商的不同类型的数据库软件。一般来讲,关系数据库可以将多个数据项的集合组织到一个或更多个规则结构(如包括多行和多列的表)中,尽管也可以构思多维关系数据库结构。此外,在许多实施例中,可以将关系数据库配置成评估对于存储在数据库内的数据的查询,以选择满足给定查询的数据子集。例如,可以将数据库配置成存储客户定单信息,可以将该客户定单信息组织成包括诸如客户标识符、定单标识符、货运状态信息、定单费用等之类的数据的一个或几个表。试图识别正在等待未付货运的所有客户的用户可以向数据库提交如下查询,该查询指定对于自特定日期和/或时间起具有未运送定单的所有客户标识符的选择。作为响应,该数据库可以对其内容进行检查并返回那些满足该查询的约束条件的数据记录。需要指出的是,在某些实施例中,不同的数据仓库120可以位于不同的物理位置或地点处,这与如下所述的数据集合复制结合在一起,可以通过减小由于单个地点处的故障而损害整个数据仓库120的可能性来增强数据集合的可靠性和可用性。
[0025] 需要指出的是,尽管数据仓库120通常可能包括关系数据库,但是在某些实施例中给定数据仓库120可以包括非关系数据库。通常,在关系数据库中,一特定数据项的含义隐式地由该数据项在表内的位置或其他关系数据结构来描述。例如,在特定二维关系数据库表中,可以将一列定义成存储客户标识符,可以将另一列定义成存储运货状态信息,并将第三列定义成存储定单费用。那么该表的各行可以对应于特定定单记录,因而,存储在一行的第一列中的任何数据项因其位置可被解释成客户标识符。作为对照,在一个实施例中,非关系数据库可以存储这样的数据项:由与给定数据项相关联的显式元数据,而不是由该数据项在所定义数据结构内的位置,来控制对该数据项的解释。例如,在一个实施例中,可以将数据仓库120配置成将数据项存储成由一版本的可扩展标记语言(XML)来界定的记录。在一个这种实施例中,可以由标识了诸如客户标识符之类的一给定数据项的类型的元数据字段或标签来界定该给定数据项。例如,可以将客户标识符“smith”存储为“<cust_id>smith</cust_id>”,其中元数据标签cust_id表示可以由该标签界定的数据可以被解释成客户标识符。通常,可以在记录内按任何顺序来存储非关系数据库内的多个记录的数据项,因为一给定数据项的含义被连同该数据项一起显式地存储,而不是通过该数据项的位置而被隐式地存储。
[0026] 如先前已提及的,在某些实施例中,可以将数据仓库120配置成将存储在企业内的其他地方(如数据源160)的数据汇集起来。在一个实施例中,如以下更详细地描述的,由数据仓库120存储的数据量可以相当大,例如在几百万兆字节(TB)的量级上。在所例示的实施例中,可以将数据仓库管理器110配置成对如何在数据仓库120之间检索和存储数据进行协调,以及对诸如客户机140之类的客户机对数据仓库120的访问进行协调。具体来说,在一个实施例中,可以将数据仓库管理器110(或者简称为管理器110)配置成从一个或更多个数据源160提取数据,并对所提取的数据在一个或更多个数据仓库120中的存储进行协调。
[0027] 在某些情况下,管理器110可以在所提取的数据被存储之前附加地对其进行变换。例如,在一个实施例中,给定数据仓库120可以存储包括有从若干不同的数据源160导出的数据的表。在这种实施例中,可以将管理器110配置成将从不同数据源160抽取的各个数据项变换成给定数据仓库120所要求的格式。在某些实施例中,与对数据进行重排或改变数据的格式相反,对数据的变换可以包括对数据本身的修改。例如,在某些实施例中,可以将管理器110配置成在将特定数据项存储在数据仓库120中之前对这些数据项进行扩缩或四舍五入,或者可以施加任何其他合适的变换。在某些实施例中,也可以将管理器110称为提取、变换和加载(ETL)管理器。
[0028] 在所例示的实施例中,可以将操作数据库130配置成对与数据仓库系统100的操作状态有关的信息进行存储和跟踪,该信息可以包括与数据仓库120内的数据项或数据集合(如表或单个记录)的位置有关的信息,以及相对于用于对数据仓库120内的数据进行修改的未处理操作而言的数据项或数据集合的状态。在某些实施例中,操作数据库130可以包括与上述那些数据库类似的关系或非关系数据库(其包括用于对其内容进行访问和修改的查询接口),而在其他实施例中操作数据库130可以包括被配置成例如通过在客户应用编程接口(API)中定义的过程调用而与管理器110进行交互的客户软件应用。以下结合图3到6的描述对在各种实施例中管理器110与操作数据库130一起对数据仓库120进行加载和将数据仓库120的呈现可视化给客户机140的操作进行更详细的描述。
[0029] 在某些实施例中,作出如下构思:可以通过健壮、容错系统来实现管理器110和/或操作数据库130。例如,通过采用冗余(例如热备份(hot standby))或集群计算机系统,可以提高管理器110和/或操作数据库130的总体可靠性和可用性,以使得管理器或数据库操作可以在一个或更多个系统发生故障的情况下继续工作。可以采用任何合适类型的故障转移机制来降低数据仓库系统100对管理器110或操作数据库130的故障的敏感度。
[0030] 而且,在某些实施例中,作出如下构思:将管理器110和/或操作数据库130的实现与数据仓库120的实现进行分离可以降低与数据仓库系统100相关联的成本或复杂度。例如,这种分离可以使得便于利用商品计算机系统和/或数据库软件来实现管理器110和操作数据库130的控制功能。这种分离还可以使得便于通过能够与数据仓库硬件分离地对控制硬件进行升级,来扩缩数据仓库系统100。在某些实施例中,这种分离还可以增强数据仓库系统100的整体可用性并缩短故障恢复时间。例如,如果一个数据仓库120万一发生故障,那么在对该故障仓库进行恢复的同时,操作数据库130和管理器110可以继续加载其他数据仓库120。类似的是,如果操作数据库130万一发生故障,则可能无需对任何数据仓库120进行恢复,由此缩短了总体故障恢复时间。
[0031] 客户机140通常可以包括被配置成访问数据仓库系统100的任何软件应用或其他实体。例如,在一个实施例中,客户机140可以包括被配置成(例如通过查询来)检索数据的应用。这种应用可能包括数据分析应用、决策支持系统、数据查看应用或任何其他合适的应用。客户机140还可以包括可以对数据仓库系统100的操作进行配置的管理应用或实用程序。例如,数据分析员或管理员可以确定应当由数据仓库系统100对来自多个数据源160的特定集合的数据项的组合进行汇集以供将来分析。该分析员或管理员可以使用客户机140来指示管理器110例如一次性地或重复地从数据源160提取有关数据集合。在各种实施例中,可以将客户机140配置成例如在任何合适类型的系统(如通用计算机系统、手持系统或嵌入式系统)上运行。在某些实施例中,可以将客户机140配置成经由中间系统与数据仓库系统100相交互。例如,可以通过客户机-服务器系统(未示出)来实现客户机
140,在该客户机-服务器系统中,将服务器系统配置成对客户机140与数据仓库系统100之间的通信进行传递。
[0032] 除了利用由管理器110提供的API直接进行通信以外,在某些实施例中,可以将一些或所有客户机140配置成经由web服务接口150与管理器110进行通信。一般来讲,可以将web服务接口配置成提供标准的、跨平台API,以用于在请求执行某些服务的客户机与服务提供方之间的通信。在某些实施例中,可以将web服务接口150配置成支持对包括有描述服务请求的信息的文档进行交换并对该请求进行响应。可以利用标准化web协议(如超文本传输协议(HTTP))来交换这种文档,并且可以按照与平台无关的数据格式(如XML)对该文档进行格式化。通过采用该web服务模型,并且使用标准web协议和以及独立于平台的文档格式化,可以减少管理器110需要支持的接口类型的数量,并且可以改进客户机140和管理器110的跨平台互操作性。
[0033] 在某些实施例中,数据源160本身可以包括关系或非关系数据库,并且可以分布在整个企业中。这种数据库可以是也可以不是与数据仓库120的数据库相同的类型(如厂商或格式)。在其他实施例中,数据源160可以是除数据库以外的应用,如被配置成以文档形式或以另一形式来存储数据的客户或私有应用。在这种实施例中,可以将管理器110配置成利用必要的协议(例如,由数据源的API定义的特定格式的过程调用)与数据源160相通信以获取数据。数据源160还可以包括文档的储存库,诸如对如下内容的汇集或归档:交易日志、电邮通信、文字处理器/办公应用文档、图像或多媒体文件、网页文档、XML文档、对电子商务站点的操作的量度,或者任何其他合适类型的文档或数据。例如,在一个实施例中,数据源160可以包括网络附接的大容量介质存储装置,如独立盘阵列或通过存储区域网(SAN)连接的存储装置。
[0034] 无论数据源160的具体类型如何,都可以将管理器110配置成执行合适的操作以从其中提取期望的数据集合、施加任何必要的变换以将数据转换成适合于存储在数据仓库120中的格式、以及将所提取出的数据加载到一个或更多个数据仓库120。如果特定数据源
160的数据内容在格式上与由数据仓库120存储的数据高度不相似,那么可以将管理器110配置成对数据源160进行分析以导出对该数据内容的恰当的量度或表示,或者被配置成调用另一应用来执行这种分析。
[0035] 数据仓库复制、粗同步以及虚拟化
[0036] 在某些情况下,由数据仓库120存储的数据可能对于企业的运行来说是关键的。例如,在某些实施例中,可以将分析软件配置成对所仓储的数据进行操作以生成报告并且/或者识别出趋势,这进而会影响运行决策,如定购/采购决策、人员配备决策等。例如,在企业范围内对一天的生产量度进行的分析可能影响如下决策:在企业内对资源的转移、对下一天的生产的再调度、加急进料或库存采购,等等。万一丢失或破坏了数据仓库120内的要对其执行相关分析的数据,就会严重损害运行或战略决策制定过程,或者在某些情况下会使得完全不能进行这种运行或战略决策制定过程。
[0037] 如上所述,某些经仓储的数据可能是由数据源160存储的数据的衍生物,并且在原则上可以通过将相关数据从这些数据源160再加载到数据仓库120来恢复这些经仓储的数据。然而,例如,如果所丢失或破坏的数据量很大,或者如果数据源160必须访问较慢的数据存储介质(如磁带或离线介质)以检索所请求的数据,那么这种再加载处理可能会耗费相当大的时间量来完成。可能无法在对依赖于经仓储数据的处理产生最小中断的时限内再加载所需数据。再者,在某些情况下,存储在数据仓库120上的数据可能是利用数据仓库系统100的应用(如分析应用)的主要输出,因此无法简单地通过从数据源160再加载该数据就可以恢复的。
[0038] 为了减小数据损失和随之产生的中断的可能性,在一个实施例中,可以将数据仓库120的子集配置成对特定数据集合进行复制。即,可以将两个或更多个数据仓库120配置成存储一数据集合(如表或多个记录的集合)的相应副本。图2例示了例示出这种复制处理的一个实施例。在所例示的实施例中,将数据仓库120a和120b均配置成存储包含有客户定单数据和客户运货数据的表的副本。应当指出的是,在某些实施例中,可以由任意数量(从两个直到数据仓库系统100内的数据仓库120的数量)个数据仓库120来复制特定数据集合。另一方面,在某些实施例中,可以根本不复制某些数据集合,或者可以将某些数据集合复制在其他数据仓库上。在所例示的实施例中,数据仓库120a和120b均包括未由其它数据仓库复制的表(分别是财务报告数据和会话跟踪数据)。应当指出的是,在某些实施例中,可以由数据仓库120利用不同的数据库方案(例如,利用不同的数据字段定义和/或结构)来存储不同的数据集合。
[0039] 在某些实施例中,由数据仓库120存储的数据集合可以对于许多不同类型的企业是共有的。例如,在砖和浆企业与提供虚拟客户界面(例如,基于web的电子商务界面或电子商务界面)的企业内,客户定单和货运数据可能是共同可用的数据集合。然而,在某些实施例中,可以将支持电子商务界面的企业配置成甚至在发生销售之前就收集并存储大量关于客户与企业的交互的信息。在一个实施例中,可以将图2所例示的会话跟踪数据集合配置成存储关于客户与电子商务界面的交互的任何方面的数据。例如,可以将该会话跟踪数据集合配置成存储:表示客户在访问企业的网点期间所查看的特定项目的数据(例如,会话)、以及该查看的持续时间、客户在会话过程中导航的链接、客户所执行的任何搜索,等等。可以将分析应用配置成对这些和其他类型的跟踪数据进行分析以分辨出客户偏好、预测客户定购各种货品的可能性、对呈现给客户的电子商务界面进行定制,等等。
[0040] 然而,需要指出的是,可以将数据仓储和下述各种技术同样地应用于没有基本电子商务组件的企业。例如,某些企业可能具有跨越许多机能和地理分部的高度复杂的内部处理,并且即使除了外部客户的活动之外也会在内部产生可用于进行仓储的巨大数据量。此外,在某些实施例中,企业可能是足够复杂的,它可能针对企业内部的活动和事务采用与上述面向电子商务的活动类似的信息收集策略。例如,企业内的不同的商业单位可能如类似于外部客户的客户那样与其他商业单位进行交互,并且可能按类似的方式产生客户数据。
[0041] 在某些实施例中,可以将多个数据仓库120的子集配置成以不同的复制程度来存储不同类型的数据。例如,在图2的实施例中,如所示出的那样,可以将数据仓库120a和120b配置成按复制方式来存储客户定单和运货数据。在类似的实施例中,可以将数据仓库
120c和120d配置成按复制方式来存储历史会话跟踪数据(例如,前15个月的跟踪数据的价值)(未示出)。在数据仓库120的这种配置中,仓库120a和120b可以形成特别适合于进行涉及客户定单和运货数据的分析的在功能上集群或分组的仓库集合,而仓库120c和
120d可以形成类似的特别适合于进行涉及会话跟踪数据的分析的在功能上集群的仓库集合。在各情况下,可以对相对关键的数据进行复制,以帮助进行保护以防数据丢失。在数据仓库120a到120d的这种配置中,对客户数据的分析驱动查询也可能常常以最近的会话跟踪数据为目标。例如,对客户定货和货运模式的分析可能试图将这些模式关联于最近的会话跟踪数据(例如,前90天的跟踪数据的价值)。由此,在图2的实施例中,将数据仓库
120b配置成存储会话跟踪数据的集合。然而,考虑到将数据仓库120c和120d配置成冗余地存储更大的会话跟踪数据集合(如果需要的话,可以从该集合重构出由数据仓库120b存储的集合),可以不复制由数据仓库120b存储的会话跟踪数据。
[0042] 针对某些数据集合对多个数据仓库120进行集群或分组,使得可以针对不同类型的查询来优化不同的数据仓库120组,这可以使得数据仓库系统100被针对期望的使用模式而更佳地调整。例如,如以下结合图7的描述更详细地描述的那样,根据期望数据仓库120的某个给定集群要处理的活动的程度,可以为作为数据仓库120的基础的硬件系统提供更多或更少的计算资源。然而,在其他实施例中,可以按更均一的方式将数据集合分布在多个数据仓库120中。例如,在一个实施例中,每个数据仓库120都可以包括大致相同的计算资源集合,并且可以按不同复制程度将数据集合分布在大致等价的多个数据仓库120中。虽然在这种实施例中可以针对数据存储和检索活动对硬件资源进行次优地调节,但是例如通过根据处理增长的数据分析需求的需要而添加附加的、类似配置的数据仓库120,可以更容易地对相对均匀的数据仓库120进行扩缩。
[0043] 如上所提及的,通过减小给定数据仓库120的故障将导致数据损失的可能性,跨越多个数据仓库120进行数据集合的复制可以提高数据的总体可靠性。通过增加例如可以响应于查询而向客户机提供经复制的数据集合的数据仓库120的数量,这种复制还可以增加数据集合的可用性。在图1所例示的数据仓库系统100的实施例中,可以将管理器110配置成对将数据存储到数据仓库120的操作(包括在多个仓库120中对数据集合的任何复制)进行协调。由此,在所例示的实施例中,是否复制了一给定数据集合对于一特定数据仓库120来说可能是透明的。然而,在某些实施例中作出如下构思:在此被描述成管理器110的功能的跨越多个数据仓库120对数据集合的管理和复制可以被协作地分布在多个数据仓库120之中,或者由被配置成既用作数据仓库又用作管理器的特定数据仓库120来实现。
[0044] 在某些情况下由数据仓库120存储的各个数据集合可能相当大,例如在几百百兆字节(MB)或几百千兆字节(GB)的量级上。此外,即使由管理器110例如响应于从数据源160对新的可操作数据的定期提取而对给定数据集合进行的部分更新也可能包括相当大量的待传送给一给定数据仓库120的数据。如果跨越几个数据仓库120对数据集合进行复制,最终会将包括该数据集合在内的数据以及对该数据正在进行的更新存储在这几个数据仓库120之中。然而,这种存储处理可能不是同时发生的。例如,即使管理器110同时开始将相同的数据存储到数据仓库120a和120b中,在这两个数据仓库120a和120b中该数据存储处理也可能不是同时完成的。诸如不同的计算负荷(如,对查询的服务)以及基本资源配置之类的因素可能使得一个数据仓库120比另一个更快地完成存储操作。因此,在这两个数据仓库120a和120b上完成存储操作之前的任何给定时刻,在数据仓库120a和120b上正在被存储的数据集合的状态可能不同。在此状态下,也可以将该数据集合称为不具同步性或不同步。
[0045] 对于试图检索数据的客户机140来说,不同步数据可能会带来问题。例如,如果在管理器110接收到以给定的经复制的数据集合为目标的查询时该给定数据集合在数据仓库120a和120b上处于两个不同的状态,那么根据该给定数据集合在该查询被指示以进行评估的特定数据仓库120中的状态,该查询可能返回两个不同的结果。这种不一致可能会导致不一致的客户机操作,尤其是如果在多个数据仓库120(或者更广泛地说,数据仓库系统100的总体结构)中对数据集合的复制对于客户机140来说是透明的话。
[0046] 一个防止由于对不同步数据的不受控制的访问而产生的不一致的客户机行为的方法可能包括:当被复制的数据集合在多个数据仓库120之中是不同步的时,管理器110防止对该数据集合进行任何访问。例如,在一个实施例中,可以将管理器110配置成将对被复制数据集合的更新实现为原子操作或事务操作。一般来讲,相对于其他操作来说,将涉及跨多个实体的同步的原子操作或事务操作视为不可分的;即,在允许进行以所涉及的实体为目标的另一操作之前,这种原子操作或事务操作要么对于这些实体中的所有实体来说都完成了,要么对于这些实体中的没有一个实体来说完成了。由此,在一个实施例中,管理器110可能不允许在完成了存储在所有有关数据仓库120上的所有数据集合副本之前对正在被存储或修改的被复制数据集合进行访问的尝试,从而确保了客户机在尝试访问被复制的数据集合时不会接收到不一致的结果。
[0047] 然而,跨所有数据集合副本执行原子或事务同步可能会显著降低数据仓库系统100的性能。例如,在一给定的被复制数据集合很大的情况下,在可以访问该数据集合之前等待对所有数据集合副本的更新都完成的过程中,可能出现显著的等待时间。因此,在一个实施例中,可以将管理器110配置成对跨多个数据仓库120而复制的数据集合进行粗同步。
在一个实施例中,对数据集合的粗同步可以包括:使对特定数据仓库120内的被复制数据集合的更新原子地同步,而同时允许访问由其他数据仓库120存储的该数据集合的其他副本。即,在一个实施例中,管理器110可以在对特定数据仓库120的特定表(如图2所示的数据仓库120a的客户定单数据表)进行更新的同时针对其他读或写访问原子地锁定该特定表。同时,管理器110可以有条件地允许访问该特定的被锁定表在另一数据仓库120上的副本(例如,数据仓库120b的被复制客户定单数据表)。在另选实施例中,管理器110在对存储在数据仓库120中的数据集合进行更新的同时可以原子地锁定整个数据仓库120,或者可以只锁定正在被更新的数据集合的一部分(如表内的一行);作出如下构思:可以由管理器110采用任何合适的锁定粒度。作出如下附加的构思:在某些实施例中,可以将管理器110配置成锁定给定数据仓库120上的正在被更新的数据集合的一部分,而允许分开地访问该给定数据仓库120上的同一数据集合的未锁定部分以进行读取或更新。
[0048] 在一个实施例中,管理器110可以有条件地允许在对一数据集合副本进行更新的同时,如果对另一数据集合副本的访问不依赖于该数据更新的话,有条件地访问所述另一数据集合副本。例如,客户机140可能提交对于前一整个日历季度(例如,排除当前日历季度)的所有客户运货数据进行请求的查询。同时,管理器110可能处于从许多客户履行地点(其中每一个都可以包括数据源160)提取前一天的客户运货数据的过程中。可以将管理器110配置成:利用任何适当的锁定方案以确保在多个数据仓库120内的同步,来对由这些数据仓库120存储的客户运货数据表进行更新。在对仓库120a进行更新的同时,可以不允许针对其客户货运数据的副本的查询(或者,在某些实施例中,不允许针对仓库120a内的任何数据的查询)。然而,可以将管理器110配置成检测到:所提交的针对前一日历季度的客户运货数据的查询并不依赖于当前正在对数据仓库120a进行的更新。即,尽管数据仓库120b内的客户货运数据并不完全与数据仓库120a内的副本相同步,但是满足所述查询所必需的所有数据都可能存在于数据仓库120b内。因此,在已将客户货运数据更新存储于数据仓库120b之前,管理器110可以允许由数据仓库120b对所述查询进行评估。在该示例中,所讨论的数据集合在数据仓库120a到120b之间并不是完全同步的,而是粗略地同步的,在此情况下允许具有用于对一查询进行评估的足够数据的数据仓库120对该查询进行评估,即使它们不具有所讨论的数据集合的最新版本。
[0049] 在图1所示的数据仓库系统100的实施例中,可以将管理器110配置成利用操作数据库130来保持与由数据仓库120存储的数据集合有关的信息,如标识了存储有给定数据集合的位置(例如,具有该给定数据集合的唯一拷贝或副本的特定数据仓库120)的信息,以及针对任何正在进行的更新活动而标识了数据集合的每个拷贝的状态的信息。例如,在一个实施例中,操作数据库130可以包括与由数据仓库120存储的客户货运数据表的每个拷贝相对应的相应记录。对于图2所示的实施例,操作数据库130可以存储两个这种记录,其中每一个都将相应的数据仓库120a到120b标识为存储有客户货运数据表的相应副本。此外,每个记录都可以包括表明该表在对应的数据仓库120a和120b内的状态的字段。参考在上一段中给出的示例,在管理器110正在对数据仓库120a内的客户货运数据表的更新进行协调的同时,操作数据库130内的对应记录可以表明该副本正在被更新、不可用或者其他合适的状态。与之对照的是,针对由数据仓库120b存储的客户货运数据副本的记录可以表明该副本不是正在被更新或已完成对该副本的更新。
[0050] 在各种实施例中,可以将操作数据库130配置成存储对数据集合的位置和状态进行标识的不同类型的数据。例如,位置标识数据可以包括数据仓库120的唯一标识符,如系统名称、网际协议(IP)地址、或其他合适的标识符。状态信息可以涵盖从表明是否正在更新某个给定数据集合的简单信号到表征给定数据集合的状态的复杂字段的范围。例如,在某些实施例中,与数据集合相对应的状态信息可以表明更新该数据集合的最后一次、用以执行该更新的数据源160、该更新的原因(例如,由于调度操作或手动操作),或者任何其他合适的状态信息。在某些实施例中,(例如,在将管理器110配置成支持对数据仓库120的多个并发读或写操作的实施例中)可以将管理器110配置成利用事务操作来读取和/或修改操作数据库130以确保操作状态的同步。
[0051] 在一个实施例中,管理器110可以利用由操作数据库130存储的位置和状态信息来实现由多个数据仓库120存储的数据的粗同步。即,可以将管理器110配置成在从数据仓库120提取数据并向数据仓库120存储数据时以及在接收到检索所存储的数据的操作(例如,查询)时查阅操作数据库130。图3例示了利用粗同步将所提取的数据存储在数据仓库120中的方法的一个实施例。共同地参照图1到图3,操作始于块300,在该块中,开始从一个或更多个数据源提取数据集合的操作。例如,在一个实施例中,可以将管理器110配置成重复地(例如每小时、每晚、每周)从一个或更多个数据源160(如分布在整个企业中的客户履行地点)中提取诸如客户货运数据的数据集合。作为另一种选择,用户或应用可以经由客户机140请求提取和存储数据集合。在某些实施例中,作出如下构思:可以从数据源160同时提取多个数据集合并在一个或更多个数据仓库120内对它们进行更新。例如,作为批作业或批处理,如调度批作业,可以同时提取并存储多个数据集合;或者可以从数据源160动态地流式传输多个数据集合并在数据仓库120内对它们进行更新。
[0052] 随后,管理器110例如通过向数据源160发出查询或其他命令来检索所提取的数据以抽出数据(块302)。如果有必要的话,可以对所提取的数据进行变换(块304)。例如,如上所述,可能需要改变所提取的数据的格式,或者根据数据仓库120的数据存储要求而需要修改数据本身。
[0053] 管理器110接着确定哪个数据仓库120容纳有所提取的数据集合(块306)。例如,在一个实施例中,管理器110可以查阅操作数据库130以根据其中存储的记录来确定所提取的数据集合所在的位置。管理器110接着选择要使用所提取的数据集合来进行更新的特定数据仓库120,并更新与该数据集合相关联的状态信息以表明发生了所述更新(块308)。在某些实施例中,可以将管理器110配置成按并行或交叠方式对容纳有所提取的数据集合的每个数据仓库120进行更新,尽管这些更新可以在不同的时间开始或结束。在图3中针对块308到312中的重复块例示了这种并行性,可以对若干不同数据集合或数据集合副本中的每一个并行地执行这些块。例如,可以将管理器110配置成:在若干不同数据仓库120上同时开始对所提取的数据集合进行更新;或者可以交错进行这些更新,使得它们在时间上部分地交叠。而且,需要指出的是,在某些实施例中,可以在多个不同数据仓库120内同时更新多个不同数据集合。
[0054] 在其他实施例中,可以将管理器110配置成按串行或有条件的方式对数据仓库120进行更新。例如,如果数据仓库120的一子集复制了所提取出的数据集合,那么管理器
110可以随机地选择特定数据仓库120来开始进行更新。作为另一种选择,管理器110可以选择所述子集中的最不繁忙的数据仓库120,或者可以利用某些其他选择准则。在操作数据库130对未处理数据集合读操作进行跟踪的某些实施例中,如果当前正在读取该数据集合(例如,通过查询),那么可以不选择一数据仓库120来进行数据集合更新。一旦选择了数据仓库120,在一个实施例中,管理器110可以对在操作数据库130中存储的与该数据集合和所选择的数据仓库120相关联的记录中的状态信息进行更新,以表明在所选择的数据仓库中正在对该数据集合进行修改。如以上指出的,在某些实施例中,管理器110可以利用事务操作来与操作数据库130相交互,以例如确保多个并发操作的适当排序。
[0055] 接着将所提取出的数据集合存储于所选择的数据仓库120(块310)。需要指出的是,可以经由其他数据仓库120对该数据集合的其他副本进行访问和/或更新,同时对所选择的数据仓库120的更新继续进行。一旦完成了该更新,管理器110就对与该数据集合相关联的状态信息进行更新以表明完成了该更新(块312)。
[0056] 作出如下构思:在某些实施例中,管理器110在将所提取的数据集合存储到其对应的数据仓库120中时不必对该数据集合进行缓冲。在一个另选实施例中,管理器110在开始从数据源160进行数据提取之前可以选择数据仓库120来进行更新。管理器110接着可以将所提取的数据(施加适当的变换)流式传输或者使得该数据被流式传输到所选择的数据仓库120,并且可以随后使用更新后的数据仓库120作为用于对其他数据仓库120进行更新的数据源。进一步作出如下构思:在某些实施例中,可以同时(而不是顺序地)对多个数据仓库120进行更新。例如,如果在3个数据仓库120中复制有某个给定的数据集合,则可以同时对这些数据仓库中的2个进行更新,而留下第3个数据仓库以供对该给定数据集合进行查询。最后,在某些实施例中,通过同时对所有数据仓库120(或其选定子集)进行更新,在操作数据库130中适当地表示出状态,可以实现(与粗同步相对的)完全同步。
[0057] 在图4中例示了利用粗同步对由多个数据仓库120存储的数据进行查询的方法的一个实施例。共同地参照图1到图4,操作始于块400,在该块中,接收到依赖于由多个数据仓库120存储的一个或更多个数据集合的查询操作。例如,在一个实施例中,可以将管理器110配置成从客户机140接收这种查询,而不是直接或经由web服务接口150来接收。
[0058] 随后,管理器110对所接收到的查询进行分析以确定该查询的数据集合依赖性(块402)。在一个实施例中,对数据集合依赖性的确定可以包括对由该查询引用的特定数据集合的确定,以及对与所依赖的这些数据集合有关的任何附加状态信息的确定。例如,在一个实施例中,管理器110可能确定一特定查询依赖于图2所例示的客户货运数据表,进而确定所依赖的数据是前一日历季度的数据。
[0059] 管理器110接着确定所依赖的数据集合在数据仓库120内的位置,和与所存储的数据集合相关联的当前状态信息(块404)。例如,管理器110可以查阅操作数据库130,以针对所依赖的每个数据集合来确定哪个数据仓库120容纳有该数据集合的拷贝,以及与该拷贝相关联的状态信息(例如,当前正在被更新、自某个日期起是最新的、由于维护而离线,等等)。
[0060] 基于管理器110对所接收到的查询对数据集合依赖性以及与数据集合在数据仓库120内的位置和状态有关的信息的分析,管理器110确定是否任何数据仓库120具有用以对所接收到的查询进行评估的足够数据(块406)。例如,在一个实施例中,如果一数据仓库120具有某个给定查询所依赖的每个数据集合的拷贝,如果不是正在更新所依赖的每个数据集合(例如,通过诸如图3所例示的那样的提取和存储操作),并且如果所依赖的每个数据集合都满足该查询的状态要求(例如,每个数据集合都至少与由该查询所指定的任何日期范围一样新),那么管理器110可以确定该数据仓库120具有足够数据来对该查询进行评估。在其他实施例中,管理器110可以采用不同或附加的准则来确定一给定数据仓库120对于给定查询是否具备数据充足性。例如,这种准则可以包括与数据仓库120的能力或资源(如其对某些类型的查询语言进行评估的能力或其可用于处理复杂查询的计算资源)有关的信息。
[0061] 在某些实施例中,可以将一个或更多个数据仓库120配置成例如通过对可以由给定数据仓库120同时评估的查询的数量进行限制来对查询评估资源进行管理。例如,可以将数据仓库120配置成:为查询的执行提供一定数量的“作业时间片”,并且可以在所有时间片都被占用的情况下不可接受其他查询。在某些实施例中,无论一给定查询的复杂度如何,该查询都可以对应于一个可用作业时间片。在其他实施例中,更复杂的查询可以占用多个作业时间片,或者数据仓库120可以采用其他类型的负载平衡策略。在某些实施例中,管理器110在确定给定数据仓库120是否具有用以对给定查询进行评估的足够数据时还可以考虑该给定数据仓库120的可用查询评估资源。例如,在一个实施例中,管理器110可以不选择具有用以对查询进行评估的足够数据但是没有用于进行查询评估的可用资源的数据仓库120。
[0062] 如果没有数据仓库120具有用以对所接收到的查询进行评估的足够数据(或者,在某些实施例中,如果没有数据仓库120具有用以对所接收到的查询进行评估的足够的可用资源),那么管理器110可以将该查询入队,直到诸如可以识别出足够的数据仓库120的时间为止(块408)。例如,在一个实施例中,管理器110可能识别出所接收到的查询依赖于当前正在被更新到特定数据仓库120中的数据集合,并且在完成了该更新时可以在该特定数据仓库120上对要评估的该查询进行调度。作为另一种选择,管理器110有时可以对已入队的查询进行再评估,以确定是否有数据仓库120已变得可用于对查询进行评估。在某些实施例中,为了避免客户机死锁,管理器110可以对查询可以保持入队状态的时间长度加以限制,并且可以在其查询超过了入队时间限制的情况下向客户机返回错误情况。
[0063] 如果识别出足以对所接收到的查询进行评估的数据仓库120,那么管理器110将所接收到的查询传送给该数据仓库120以进行评估(块410)。需要指出的是,在粗同步下,可以在由一个数据仓库120对以特定数据集合为目标的查询进行评估的同时,在另一数据仓库120上对该特定数据集合的副本进行更新。
[0064] 图5A示出了例示出在粗同步下对数据集合的更新与对数据集合的查询之间的关系的一个实施例的时序图。在所例示的时序图中,管理器110在时刻T1处开始对特定数据集合进行更新,此时数据仓库120a和120b复制有该数据集合。随后,在时刻T2处由管理器110接收到以正在被更新的数据集合为目标的查询。在比T2晚的时刻T3时在数据仓库120a处完成了该数据集合更新,而在比T3晚的时刻T4时在数据仓库120b处完成了该数据集合更新。
[0065] 在所例示的实施例中,示出了对所接收到的查询进行评估的3个可能的时段。在第一情况下,该查询可以由正在被更新的数据集合的更新前的内容来满足。例如,管理器110连同操作数据库130一起可以确定对该查询进行评估所必需的数据并不依赖于当前的更新。在此情况下,在时刻T2之后可以由容纳了有关数据集合的任何可用数据仓库120来评估该查询。即,在接收到该查询之后一旦可以实施就可以对其进行评估,在某些情况下这可能会引起延时。例如,在某些实施例中,如以上指出的,可能不允许针对当前正在被更新的数据仓库120,对查询进行评估。此外,在某些情况下,数据仓库120可能太繁忙,以至于不能立即接受该查询。然而,在某些实施例中,在该查询依赖于更新前的数据的情况下,不必对在时刻T2之后何时可以执行该查询进行与任何更新有关的时间限制。
[0066] 在第二和第三情况下,该查询可能依赖于正在被更新的数据集合的更新后的内容。即,该查询可能要求对在时刻T1时开始的数据集合更新中反映的数据进行正确的评估。在所例示的实施例中,该更新在时刻T3时在数据仓库120a处完成,而在时刻T4时在数据仓库120b处完成。相对应的,可以在时刻T3之后的任何时刻由数据仓库120a对该查询进行评估,而在时刻T4之后的任何时刻由数据仓库120b对该查询进行评估。如先前指出的并且如图5A所例示的,在粗同步下,可以在已更新了被一查询作为目标的数据集合的所有副本之前由特定数据仓库120对该查询进行评估,而在某些情况下(例如,在该查询依赖于更新前的数据的情况下)可以在已更新了该数据集合在该特定数据仓库120上的副本之前对该查询进行评估。如以上指出的,在某些实施例中,可以在由一个数据仓库120对以特定数据集合为目标的查询进行评估的同时,将该特定数据集合存储到另一数据仓库120。此外,在某些实施例中,在已将该特定数据集合存储到任意给定数据仓库120之后,该给定数据仓库120可以对针对该特定数据集合的查询进行评估。例如,在已将经复制的数据集合更新到某些或所有对应的数据仓库120之后,任何更新后的数据仓库120都可能能够满足对经复制的数据集合的查询。
[0067] 而且,需要指出的是,在采用用于锁定数据集合的某些部分的细粒度机制的某些实施例中,如上所述,容纳有正在被更新的数据集合的一给定数据仓库120可能在该更新完成之前可用于对针对该数据集合的查询进行评估。例如,在某些实施例中,可以将管理器110和操作数据库130配置成跟踪数据集合的多个部分的状态(例如,表的各行或多行的集合)。尽管针对给定数据仓库120正在更新特定数据集合的一个部分,但是管理器110可以确定一给定查询依赖于该特定数据集合的当前没有被更新的部分,因此可以允许由该给定数据仓库120对该查询进行评估。在这种实施例中,可以在功能上将针对数据集合中的不在进行更新的部分的查询处理成好像该查询依赖于与正在被更新的数据集合无关的数据集合一样,并且可以允许与该更新无关地对其进行评估。在图5A的环境下,可以在不与时刻T3和T4处的更新完成点同步的情况下允许在时刻T2时接收到该查询之后的任何时间对这种查询进行评估。
[0068] 图5B到5D与图5A所示的各种时间点相关地例示了利用粗同步所复制的数据集合的一个实施例的具体示例。在图5B到5D所示的实施例中,将客户定单数据集合配置成由数据仓库120a和120b来复制。图5B例示了在更新开始之前的时刻(例如,在图5A所示的时刻T1之前的时刻)时该客户定单数据集合的副本。在图5B中,按更新前的状态示出客户定单数据集合的两个副本。
[0069] 图5C例示了在已更新了数据仓库120a的副本之后但是在更新了数据仓库12b0的副本之前(例如,在图5A所示的时刻T3与T4之间的时刻)时该客户定单数据集合的副本。如图5C所示,客户定单数据集合的这两个副本处于不相似的状态。最后,图5D例示了在已更新了所述两个副本之后的时刻(例如,在图5A所示的时刻T4之后的时刻)时该客户定单数据集合的副本。如上所述,对客户定单数据集合的查询可能在对该数据集合的更新开始之后的任何时刻发生。根据其数据集合要求,可以允许在完成了对两个数据仓库120a和120b的更新之前(包括在这两个数据集合副本具有不相似的内容(例如,如图5C所示)时的时刻)针对数据仓库120a和120b中的任一个执行特定查询。
[0070] 需要指出的是,在某些实施例中,数据仓库系统100的组织可能对于被配置成与系统100相交互的客户机140来说是完全透明的。即,在某些实施例中,客户机140可能不具有数据仓库120内的给定数据集合的位置或状态的直接知识。在某些这种实施例中,可以将管理器110配置成将多个数据仓库120呈现为当从客户机140的观点来看是单个虚拟数据仓库(例如,可以将管理器110配置成对多个数据仓库120进行虚拟化)。由此,在某些这种实施例中,管理器110可以在任意程度上自由地复制数据集合,重新确定数据集合在多个数据仓库120之中的位置,或者改变存储在系统100内的数据的组织结构,同时将单个、稳定的界面(如查询界面)呈现给客户机140。
[0071] 在一个实施例中,在任意给定时刻,由数据仓库120存储的多个数据集合可供给定客户机140来进行查询,并且在任意给定的时刻所存储的多个数据集合中的一个可能与所存储的多个数据集合中的另一个不相似。例如,所存储的两个数据集合可能由于它们被定义成存储不同类型的数据而不相似。作为另一种选择,可以将所存储的两个数据集合配置成复制同一数据,但是可以在某个给定时刻由于如上所述的粗同步的操作而不相似。在某些实施例中,在这些场景中的任一场景下的多个数据集合都可供客户机140查询,并且可以将管理器110配置成对如何按对于客户机140透明的方式在数据仓库系统100内安排和操纵这种数据集合的详情进行管理。
[0072] 对于客户机140来说,可以与是否复制存储在数据仓库120内的数据集合无关地进行数据仓库120的虚拟化。图6例示了对于客户机140将数据仓库120虚拟化成单个数据仓库的方法的一个实施例。共同地参照图1到图6,操作始于块600,在该块中,管理器110存储与数据仓库120中的数据集合有关的位置信息。例如,在一个实施例中,管理器110可以将每个数据集合的位置信息连同对数据集合的状态、数据集合是否被复制等进行标识的其他信息一起存储在操作数据库130。
[0073] 随后,管理器110接收到以存储在数据仓库系统100内的特定数据集合为目标的查询(块602)。作为响应,管理器110对能够评估所接收到的查询的特定数据仓库120进行识别(块604)。例如,可以将管理器110配置成对该查询进行分析以检测如上所述的数据集合和状态依赖性,并查阅操作数据库130以识别出可以评估该查询的一个数据仓库120(或者一个以上,如果复制了该数据集合的话)。诸如正在进行的数据集合更新、数据仓库工作负荷等之类的其他因素也会影响对用于进行查询评估的合适数据仓库120的识别。
[0074] 一旦识别出用以评估所接收到的查询的数据仓库120,管理器110就将该查询传送给所选择的数据仓库120以进行评估(块606)。接着对该查询进行评估(块608),然后经由管理器110将结果返回给进行请求的客户机140(块610)。需要指出的是,在某些实施例中,在提交查询与接收查询结果之间的所有步骤都可以是对客户机140透明的。还要指出的是,在某些情况下,管理器110可以在不能立即识别出用于进行评估的合适数据仓库120的情况下将该查询入队。此外,在某些情况下,例如如果一查询有形式错误或者对数据仓库120的等待超时了,管理器110可以将错误情况返回给进行请求的客户机140。
[0075] 数据仓库计算基础设施
[0076] 每个数据仓库120都可以包括计算硬件以及被配置成实现数据仓储功能的操作系统软件和数据仓储软件(例如数据库软件)的相应集合。在某些实施例中,所使用的计算硬件可以包括专用、高端多处理器计算机系统,可以细致地将该计算机系统与专用于特定安装的定制的操作系统和数据仓储软件集成起来。然而,对于购买、管理以及维护来说这种配置可能是昂贵的。因此,在某些实施例中,任意或所有数据仓库120均可以包括由运行广泛发布的或开放源码的操作系统和/或数据仓储软件的多个较不昂贵(例如商用)计算机系统所组装成的相应计算集群。
[0077] 图7例示了可以实现数据仓库120的计算集群的一个实施例。在所例示的实施例中,数据仓库集群700(或简称为集群700)包括多个计算节点710(或简称为节点710)。每个节点710都耦合到多个交换机720中的每一个,并且每个交换机720都耦合到相应的多个存储器阵列730。由此,在所例示的实施例中,每个节点710都可以通过合适的交换机
720来访问任一存储器阵列730。在一个实施例中,集群700可以包括16个节点710、8个交换机720以及64个存储器阵列730。然而,需要指出的是,在各种实施例中,可以采用任意多个节点710、交换机720以及存储器阵列730,以及用于将这些组成要素互连的各种拓扑结构。
[0078] 在一个实施例中,如以下结合图8的描述更详细地描述的,每个节点710都可以包括单处理器或多处理器计算机系统。在某些实施例中,节点710可以包括由包括Sun Microsystems、Hewlett-Packard、IBM、戴尔或任何合适的系统制造商在内的多个厂商中的任何厂商提供的通用服务器、个人计算机或工作站系统。此外,可以将节点710配置成执行一个或更多个合适的操作系统,如与Linux、Microsoft Windows、Solaris、HP-UX、AIX或任何其他合适的通用或专用操作系统的某个版本兼容的操作系统。
[0079] 一般来讲,每个节点710都可以进行操作以针对可以经由存储器阵列730存储的数据集合对经由管理器110接收到的查询以及其他数据仓库操作进行评估,同时交换机730提供节点710与存储器阵列730之间的互连性。由此,在所例示的实施例中,在特定节点710上被评估的查询可以均匀地访问存储在任何存储器阵列730上的数据集合。在其他实施例中,可以将数据集合不均匀地提供给节点710。例如,可以将给定节点710映射到包括某些数据集合但是不包括其他数据集合的特定一个或更多个存储器阵列730。在这种实施例中,根据特定查询所依赖的数据集合如何分布在多个存储器阵列730上,多个节点710可能需要参与对该特定查询的评估。
[0080] 在某些实施例中,交换机720和存储器阵列730可以包括存储区域网(SAN)。例如,可以利用光纤信道互连或其他合适的SAN互连和管理技术将交换机720耦合到节点710和存储器阵列730。然而,作出如下构思:可以使用任何合适类型的网络来将集群700的多个设备互连。例如,在一个实施例中,作为互连技术,可以采用吉比特以太网或10吉比特以太网。
[0081] 每个存储器阵列730都可以包括一个或更多个大容量存储装置,如固定磁盘装置。例如,在一个实施例中,每个存储器阵列730都可以包括被配置成独立盘冗余阵列(RAID阵列)的相同数量个SCSI(小型计算机系统接口)硬盘驱动器。可以由存储器阵列730自身来管理由存储器阵列730支持的各种存储特征,如盘分段(disk striping)、镜像以及数据奇偶校验。例如,除了大容量存储装置以外,存储器阵列730还可以包括被配置成对这些装置进行管理的附加硬件。作为另一种选择,存储器阵列730可以是相对被动的,可以由智能交换机720来管理其存储特征。作出如下构思:除了磁盘以外或者作为磁盘的替代物,一给定存储器阵列730可以包括其他类型的存储装置,如光学介质或磁带。此外,作出如下构思:在某些实施例中,可以对各存储器阵列730进行相同的配置,而在其他实施例中,存储器阵列730在它们的配置和/或特征集合方面可以是不同种类的。
[0082] 在某些实施例中,可以容易地对集群700进行扩缩以使其与给定数据仓库120的预期工作负荷相匹配。例如,如果数据仓库120预期要容纳接收不频繁或相对简单的查询的大量数据,那么可以将存储器阵列730配备成存储所预期量的数据(包括如上所述的任何期望的数据集合复制),同时可以基于所预期的工作负荷独立地配备节点710。如果查询工作负荷或存储要求万一增加了,那么随后可以添加附加的节点710、交换机720和/或存储器阵列730。
[0083] 作出如下构思:在某些实施例中,可以将上述任何方法或技术(例如,管理器110或数据仓库120的功能,或图3、4以及6所例示的方法)实现为能够经由计算机可访问的介质来存储或传送的程序指令和数据。可以执行这种程序指令以执行特定计算功能,如数据仓储和虚拟化、存储管理、查询和数据集合分析、查询评估、操作系统功能、应用、和/或任何其他合适的功能。在一个实施例中,节点710可以包括计算机可访问介质。图8例示了可以作为给定节点710的例示的计算机系统的一个实施例。在所例示的实施例中,计算机系统800包括经由输入/输出(I/O)接口830耦合到系统存储器820的一个或更多个处理器810。节点710还包括均耦合到I/O接口830的网络接口840和SAN接口850。
[0084] 需要指出的是,在某些实施例中,可以将计算机系统800的实例配置成与集群700分开,并将该实例配置成执行数据仓库系统100内的其他应用或功能。例如,在一个实施例中,可以将计算机系统800的一个或更多个实例配备在集群700的外部,并配置成执行可以经由计算机可访问介质来存储或传送的程序指令和数据并配置成实现管理器110。在某些这种实施例中,被配置成实现管理器110的计算机系统800的实例的配置可以与图8所示的配置不同。例如,在某些实施例中,计算机系统800的这种实例可以包括更多个或更少个处理器810。此外,尽管在某些实施例中这种实例可以保留SAN接口850,但是也可以略去该接口。
[0085] 如以上指出的,在各种实施例中,计算机系统800可以是包括一个处理器810的单处理器系统或包括若干个(如2、4、8或其他合适的数量)处理器810的多处理器系统。处理器810可以是能够执行指令的任何合适的处理器。例如,在各种实施例中,处理器810可以是实现任何不同指令集架构(ISA)(如x86、PowerPc、SPARC或MIPSISA或任何其他合适的ISA)的通用或嵌入式处理器。在多处理器系统中,每个处理器810都可以共同地但非必要地实现同一ISA。
[0086] 可以将系统存储器820配置成存储可由处理器810访问的指令和数据。在各种实施例中,可以采用任何合适的存储器技术,如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪速型存储器或任何其他类型的存储器,来实现系统存储器820。在所例示的实施例中,将实现期望功能(如上述那些功能)的程序指令和数据示出为作为代码825存储在系统存储器820内。
[0087] 在一个实施例中,可以将I/O接口830配置成对处理器810、系统存储器820以及设备内的任何外围设备(包括网络接口840、SAN接口850或其他外围接口)之间的I/O业务量进行协调。在某些实施例中,I/O接口830可以执行任何必需的协议、定时或其他数据变换以将来自一个组件(例如系统存储器820)的数据信号转换成适合于由另一组件(例如处理器810)使用的格式。在某些实施例中,I/O接口830可以包括对通过各种类型的外围总线连接的设备的支持,如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变型。在某些实施例中,可以将I/O接口830的功能分成2个或更多个分开的组件,如北桥和南桥。而且,在某些实施例中,可以将I/O接口830的某些或所有功能(如到系统存储器820的接口)直接并入处理器810中。
[0088] 可以将网络接口840配置成允许在计算机系统800与连接到网络的其他设备之间交换数据。例如,可以将管理器110配置成在集群700的外部的计算机系统800上执行,并且被配置成集群700内的节点710的特定计算机系统800可以经由网络接口840与位于外部系统上的管理器110相通信。在各种实施例中,网络接口840可以支持经由以下网络进行通信:有线或无线通用数据网络,如任何合适类型的以太网;电信/电话网络,如模拟话音网络或数字光纤通信网络;存储器局域网,如光纤通道SAN;或任何其他合适类型的网络和/或协议。
[0089] 在一个实施例中,可以将SAN接口850配置成允许经由交换机720在计算机系统800与存储器阵列730之间交换数据。在某些实施例中,如上所述,SAN接口850可以包括光纤通道接口或另一合适的接口。然而,作出如下构思:在某些实施例中,可以通过标准的网络接口来实现SAN连接性。在这种实施例中,计算机系统800可以提供单个网络接口(例如网络接口840)以与存储装置和其他计算机系统相通信,或者计算机系统800可以将存储装置和通用网络通信均匀地散布在几个类似配置的网络接口上。
[0090] 在某些实施例中,系统存储器820可以是被配置成存储如上所述的程序指令和数据的计算机可访问介质的一个实施例。然而,在其他实施例中,可以接收、发送或在不同类型的计算机可访问介质上存储程序指令和/或数据。一般来讲,计算机可访问介质可以包括诸如磁或光介质之类的存储介质或存储器介质,例如,经由I/O接口830耦合到计算机系统800的盘、CD-ROM或DVD-ROM,或经由SAN接口850耦合到计算机系统800的存储器阵列730。计算机可访问介质还可以包括可以作为系统存储器820或另一类型的存储器而包括在某些实施例的计算机系统800中的任何易失性或非易失性介质,如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。此外,计算机可访问介质可以包括传输介质或信号,该信号例如是经由诸如网络和/或无线链接的通信介质而传送的诸如电、电磁或数字的信号,使得可以经由网络接口840或SAN接口850来实现。
[0091] 尽管详细地描述了以上实施例,但是本领域的技术人员一旦全面理解了以上公开内容就将明了许多变型和修改。应当将以下权利要求解释成包括所有这种变型和修改。