数据管理系统及方法与流程

文档序号:18822665发布日期:2019-10-09 01:02阅读:443来源:国知局
数据管理系统及方法与流程

相关申请的交叉引用

本申请要求于2014年2月19日提交的标题为“apparatusandmethodforenterprisedatawarehousedataprocessingoncloudinfrastructure”的美国临时申请序列第61/941,986号的权益,该申请的公开内容通过引用以其整体并入本文。

本公开涉及管理数据的处理和其它任务的资源管理系统及方法。

背景

目前,许多现有的数据存储和检索系统是可用的。例如,在共享磁盘系统中,所有数据被存储在共享的存储设备上,其从数据集群中的所有处理节点是可访问的。在这种类型的系统中,所有的数据变化被写入到共享的存储设备,以确保数据集群中的所有的处理节点访问一致版本的数据。由于在共享磁盘系统中处理节点的数目增加,因此共享的存储设备(以及处理节点和共享的存储设备之间的通信链路)变成了减缓数据读取和数据写入操作的瓶颈。随着更多的处理节点的添加,进一步地加剧这种瓶颈。因此,由于该瓶颈问题,现有的共享磁盘系统具有有限的可扩展性。

另一个现有的数据存储和检索系统被称为“无共享架构”。在此架构中,数据被分布在多个处理节点上,使得每个节点在整个数据库中存储数据的子集。当新的处理节点被添加或移除时,无共享架构必须重新排列在多个处理节点上的数据。这种数据的重新排列可以是费时的并且对在数据重新排列期间执行的数据读取和写入操作具有破坏性。并且,数据对特定节点的亲和度可以在对于流行数据的数据集群上创建“热点”。此外,由于每个处理节点也执行存储功能,因此该架构需要至少一个处理节点来存储数据。因此,如果所有的处理节点都被移除,则无共享架构无法存储数据。另外,由于在许多不同的处理节点上的数据的分布,无共享架构中的数据的管理是复杂的。

本文所描述的系统及方法提供了对数据存储和数据检索的改进的方法,其缓解了上面确定的现有系统的局限性。



技术实现要素:

本申请还包括以下内容:

1)一种方法,包括:

基于接收的查询识别多个文件以进行处理;

识别可用于处理所述多个文件的多个执行节点;

最初创建多个扫描集并且基于文件分配模型将所述扫描集的每一个分配给所述多个执行节点中的一个,其中每个扫描集包括所述多个文件的一部分;

通过所述多个执行节点处理所述多个扫描集;

确定特定的执行节点是否已经完成处理在其分配的扫描集中的所有的文件;以及

响应于确定特定的执行节点已经完成处理在其分配的扫描集中的所有的文件:

重新分配来自第二执行节点的未处理文件;以及

将所述未处理文件分配给所述特定的执行节点用于处理。

2)根据1)所述的方法,还包括基于每个文件的大小布置每个扫描集中的文件。

3)根据1)所述的方法,还包括布置每个扫描集中的文件以优先化由所分配的执行节点缓存的文件。

4)根据1)所述的方法,其中,所述文件分配模型使用一致性哈希模型。

5)根据1)所述的方法,还包括在重新分配期间将所述未处理文件从原始分配的执行节点的所述扫描集中移除。

6)根据1)所述的方法,其中,重新分配来自另一个执行节点的未处理文件包括:识别已经由完成处理在其分配的扫描集中的所有的文件的执行节点缓存的文件以重新分配。

7)根据1)所述的方法,其中,重新分配来自另一个执行节点的未处理文件包括基于文件窃取模型选择所述未处理文件以进行重新分配。

8)根据7)所述的方法,其中,所述文件窃取模型使用在不同所有权级别处的一致性哈希算法。

9)根据8)所述的方法,其中,所述不同所有权级别确定其中文件由所述多个执行节点中的每一个处理的顺序。

10)根据1)所述的方法,其中,所述特定的执行节点从远程存储设备中检索所述未处理文件。

11)根据10)所述的方法,还包括:

确定所述第二执行节点是否变得可用于处理所述未处理文件;

确定所述第二执行节点是否已缓存所述未处理文件;

确定所述特定的执行节点是否已完成从所述远程存储设备中检索所述未处理文件;以及

响应于确定所述第二执行节点变得可用、所述第二执行节点已缓存所述未处理文件且所述特定的执行节点没有完成从所述远程存储设备中检索所述未处理文件,指示所述特定的执行节点停止处理所述未处理文件。

12)根据11)所述的方法,还包括响应于确定所述第二执行节点变得可用、所述第二执行节点已缓存所述未处理文件且所述特定的执行节点没有完成从所述远程存储设备中检索所述未处理文件,指示所述第二执行节点处理所述未处理文件。

13)一种装置,包括:

请求处理模块,其被配置为识别与接收的查询相关联的多个文件;

虚拟仓库管理器,其被配置为识别可用于处理所述多个文件的多个执行节点;以及

事务管理模块,其被配置为创建多个扫描集并且基于文件分配模型将所述扫描集中的每一个分配给所述多个执行节点中的一个,所述事务管理模块还被配置为确定特定的执行节点是否已完成处理在其分配的扫描集中所有的文件,以及响应于确定特定的执行节点已完成处理在其分配的扫描集中所有的文件,重新分配来自第二节点的未处理文件并且将所述未处理文件分配给所述特定的执行节点用于处理。

14)根据13)所述的装置,其中,每个扫描集包括所述多个文件的一部分。

15)根据13)所述的装置,其中,所述事务管理模块还被配置为基于每个文件的大小对每个扫描集中的文件进行布置。

16)根据13)所述的装置,其中,所述文件分配模型使用一致性哈希模型。

17)根据13)所述的装置,其中,所述事务管理模块还被配置为基于文件窃取模型选择所述未处理文件。

18)根据17)所述的装置,其中,所述文件窃取模型使用一致性哈希模型。

19)一种装置,包括:

用于处理请求以识别与接收的查询相关联的多个文件的工具;

用于管理虚拟仓库以识别可用于处理所述多个文件的多个执行节点的工具;以及

管理工具,其用于创建多个扫描集并且基于文件分配模型将所述扫描集中的每一个分配给所述多个执行节点中的一个,所述管理工具还用于确定特定的执行节点是否已完成处理其分配的扫描集中所有的文件,以及响应于确定特定的执行节点已完成处理其分配的扫描集中所有的文件,重新分配来自第二节点的未处理文件并且将所述未处理文件分配给所述特定的执行节点用于处理。

20)根据19)所述的装置,其中,所述文件分配模型使用一致性哈希模型。

附图说明

参考以下附图描述了本公开的非限制性且非穷举性的实施例,其中除非另有说明,贯穿各个附图的相似的参考数字指代相似的部件。

图1是描绘本文所描述的系统和方法的示例实施例的方框图。

图2是描绘资源管理器的实施例的方框图。

图3是描绘执行平台的实施例的方框图。

图4是描绘示例操作环境的方框图,其中多个用户通过多个虚拟仓库访问多个数据库。

图5是描绘另一个示例操作环境的方框图,其中多个用户通过负载平衡器和在虚拟仓库组中包含的多个虚拟仓库访问多个数据库。

图6是描绘另一个示例操作环境的方框图,其具有多个分布式虚拟仓库和虚拟仓库组。

图7是描绘用于管理数据存储和检索操作的方法的实施例的流程图。

图8是描绘用于管理通过多个执行节点的多个文件的处理的方法的实施例的流程图。

图9是描绘用于管理从执行节点窃取文件的方法的实施例的流程图。

图10a-10d描绘使用一致性哈希来将文件分配给执行节点的示例实施例。

图11是描绘示例计算设备的方框图。

详细描述

本文所描述的系统和方法提供用于存储和检索数据的新的平台而不存在现有系统所面临的问题。例如,这种新的平台支持新的节点的添加而无需按照无共享架构所要求重新排列数据文件。另外,节点可以被添加到平台而不会产生在共享磁盘系统中常见的瓶颈。这种新的平台始终可用于数据读取和数据写入操作,即使节点中的一些离线维护或发生故障。所描述的平台将数据存储资源与计算资源分开,使得数据可以被存储而无需要求专用计算资源的使用。这相对于无共享架构是一个改进,如果所有的处理节点被移除则该无共享架构无法存储数据。因此,新的平台继续存储数据,即使计算资源不再可用或者正在执行其它任务。

在以下的描述中,参照形成其的一部分的附图,并且在附图中通过实例说明示出了本公开可以在其中被实践的具体示例性实施例。足够详细地对这些实施例进行描述以使本领域的技术人员能够实践本文所公开的概念,并且应该理解的是,在不脱离本公开的范围的情况下可以对各种公开的实施例做出修改,并且可以利用其它实施例。因此,以下详细的描述不应以限制意义被采用。

贯穿本说明书,对“一个实施例”、“实施例”、“一个示例”或“示例”的引用意味着结合实施例或示例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,贯穿本说明书,在各个位置中的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”的出现并不一定都指的是相同的实施例或示例。另外,应该认识到,这里提供的附图对本领域的技术人员是出于解释目的,并且附图并不一定按比例绘制。

根据本公开的实施例可以被体现为装置、方法或计算机程序产品。因此,本公开可采用完全硬件组成的实施例、完全软件组成的实施例(包括固件、常驻软件、微代码等等)或结合软件和硬件方面的实施例的形式,其可在本文中通常全部被称为“电路”、“模块”或“系统”。此外,本公开的实施例可采用计算机程序产品的形式,该计算机程序产品被体现在具有在介质中体现的计算机可用程序代码的任何有形介质表示中。

一个或多个计算机可用或计算机可读介质的任何组合可被使用。例如,计算机可读介质的可包括便携式计算机磁盘、硬盘、随机存取存储器(ram)设备、只读存储器(rom)设备、可擦除可编程只读存储器(eprom或闪存)设备、便携式光盘只读存储器(cdrom)、光学存储设备以及磁存储设备中的一个或多个。用于执行本公开的操作的计算机程序代码可以以一个或多个编程语言的任何组合来编写。这样的代码可以从计算机可读汇编语言的源代码或者适合于在其上将执行该代码的设备或计算机的机器代码编译。

实施例还可在云计算环境中实施。在本说明书和以下权利要求中,“云计算”可以被定义为模型,用于实现对可配置计算资源(例如,网络、服务器、存储器、应用和服务)的共享池的普遍存在的、方便的、按需的网络访问,该可配置计算资源可经由虚拟化被迅速地供应并以最小管理努力或服务提供商交互而被释放,并然后被相应地扩展。云模型可由各种特征(例如,按需自助、宽带网络访问、资源池、快速弹性以及可计量的服务)、服务模型(例如,软件即服务(“saas”)、平台即服务(“paas”)和基础设施即服务(“iaas”)),以及部署模型(例如,私有云、社区云、公共云以及混合云)组成。

所附附图中的流程图和框图根据本公开的各种实施例图示了系统、方法和计算机程序产品的可能的实施方式的架构、功能性和操作。在这点上,流程图或框图中的每个块可以代表代码的模块、片段或部分,其包括一个或多个用于实施指定的逻辑功能的可执行指令。还将指出的是,在框图和/或流程图中的每个块以及框图和/或流程图中块的组合可以由执行指定功能或行为的专用的基于硬件的系统或专用硬件和计算机指令的组合来实现。这些计算机程序指令还可存储在计算机可读介质中,其可指导计算机或其他可编程数据处理装置以特定方式起作用,使得存储在计算机可读介质中的指令产生制造品,其包括实施流程图和/或方框图的一个或多个方框中所指定的功能/行为的指令装置。

本文所描述的系统和方法提供使用新的数据处理平台的灵活且可扩展的数据仓库。在一些实施例中,所描述的系统和方法利用云基础设施,该云基础设施支持基于云的存储资源、计算资源等。示例性的基于云的存储资源以低成本提供按需可用的大量存储容量。此外,这些基于云的存储资源可以是容错且高度可扩展的,其在私人数据存储系统中实现可以是成本高昂的。示例性的基于云的计算资源是按需可用的并且可基于资源的实际使用水平来定价。通常,云基础设施以快速的方式被动态地部署、重配置以及退役。

在所描述的系统和方法中,数据存储系统利用基于sql(结构化查询语言)的关系数据库。然而,这些系统和方法可适用于任意类型的数据库,以及任意类型的数据存储和检索平台,其使用任意数据存储架构并且使用任意语言来存储和检索数据存储和检索平台内的数据。本文所描述的系统和方法还提供多租户系统,其支持不同的客户/客户端之间以及在相同的客户/客户端内的不同用户之间的计算资源与数据的隔离。

图1是描绘新的数据处理平台100的示例实施例的方框图。如图1所示,资源管理器102被耦合到多个用户104、106和108。在特定的实现中,资源管理器102可以支持希望访问数据处理平台100的任意数目的用户。用户104-108可包括例如,提供数据存储和检索请求的终端用户、管理本文描述的系统和方法的系统管理员以及与资源管理器102进行交互的其它组件/设备。资源管理器102提供各种服务和功能,其支持数据处理平台100内的所有的系统和组件的操作。如本文使用的,资源管理器102还可以被称为“全球服务系统”,其执行如本文讨论的各种功能。

资源管理器102还耦合到元数据110,其与存储在整个数据处理平台100上的数据的整体性相关联。在一些实施例中,元数据110包括存储在远程数据存储系统中的数据的汇总以及从本地缓存可用的数据。另外,元数据110可包括关于如何在远程数据存储系统和本地缓存中组织数据的信息。元数据110允许系统和服务确定一段数据是否需要在没有加载或访问来自存储设备的实际数据的情况下被访问。

资源管理器102还耦合到执行平台112,如以下更详细地讨论的,该执行平台112提供执行各种数据存储和数据检索任务的多个计算资源。执行平台112耦合到多个数据存储设备116、118和120,其是存储平台114的一部分。虽然在图1中示出了三个数据存储设备116、118和120,但是执行平台112能够与任意数量的数据存储设备进行通信。在一些实施例中,数据存储设备116、118和120是定位在一个或多个地理位置中的基于云的存储设备。例如,数据存储设备116、118和120可以是公共云基础设施或私有云基础设施的一部分。数据存储设备116、118和120可以是硬盘驱动器(hdd)、固态硬盘(ssd)、存储集群、amazons3tm存储系统或任何其它数据存储技术。另外,存储平台114可包括分布式文件系统(诸如,hadoop分布式文件系统(hdfs)、对象存储系统等等)。

在特定的实施例中,在资源管理器102和用户104-108、元数据110以及执行平台112之间的通信链路经由一个或多个数据通信网络实现。同样地,在执行平台112和存储平台114中的数据存储设备116-120之间的通信链路经由一个或多个数据通信网络实现。这些数据通信网络可以利用任何通信协议以及任何类型的通信介质。在一些实施例中,数据通信网络是两个或更多个相互耦合的数据通信网络(或子网络)的组合。在可选实施例中,这些通信链路使用任何类型的通信介质和任何通信协议来实现。

如图1所示,数据存储设备116、118和120从与执行平台112相关联的计算资源解耦。这个架构基于变化的数据存储/检索需要以及访问数据处理平台100的用户和系统的变化的需要支持对数据处理平台100的动态变化。动态变化的支持允许数据处理平台100响应于对数据处理平台100内的系统和组件的变化需求快速地扩展。计算资源与数据存储设备的解耦支持对大量的数据的存储而不要求对应的大量的计算资源。同样地,资源的这种解耦支持在特定时间处利用的计算资源中的显著增加,而不要求在可用的数据存储资源中的相应的增加。

资源管理器102、元数据110、执行平台112以及存储平台114在图1中被示出为单独的组件。然而,资源管理器102、元数据110、执行平台112以及存储平台114中的每一个可以被实现为分布式系统(例如,分布在多个地理位置处的多个系统/平台上)。另外,资源管理器102、元数据110、执行平台112以及存储平台114中的每一个可以根据对从用户104-108接收的请求的变化及数据处理平台100的变化的需要按比例增加或减少(相互独立地)。因此,在所描述的实施例中,数据处理平台100是动态的并且支持规律性变化以满足当前数据处理需要。

在典型的操作期间,数据处理平台100对从用户104-108中任一个所接收的多个查询(或请求)进行处理。这些查询由资源管理器102管理以确定何时以及如何执行该查询。例如,资源管理器102可以确定需要什么数据来处理查询并且进一步地确定在执行平台112内的哪些节点是最适合于处理该查询。一些节点可以已经缓存处理查询所需的数据并且因此是用于处理查询的良好候选者。元数据110协助资源管理器102确定执行平台112中的哪些节点已经缓存处理查询所需的数据的至少一部分。执行平台112中的一个或多个节点使用由节点缓存的数据以及必要时使用从存储平台114检索的数据来处理查询。希望的是从执行平台112内的缓存中检索尽可能多的数据,这是因为该检索速度通常比从存储平台114中检索数据快得多。

如图1所示,数据处理平台100将执行平台112与存储平台114分开。在这种布置中,执行平台112中的处理资源和缓存资源独立于存储平台114中的数据存储资源116-120而操作。因此,计算资源和缓存资源不限于特定的数据存储资源116-120。相反地,所有的计算资源和所有的缓存资源可以从存储平台114中的任意的数据存储资源中检索数据,以及将数据存储到存储平台114中的任意的数据存储资源。另外,数据处理平台100支持新的计算资源和缓存资源到执行平台112的添加,而不要求对存储平台114的任何变化。同样地,数据处理平台100支持数据存储资源到存储平台114的添加,而不要求执行平台112中的节点的变化。

图2是描绘资源管理器102的实施例的方框图。如图2所示,资源管理器102包括访问管理器202和耦合到数据存储设备206的密钥管理器204。访问管理器202处理用于本文所描述的系统的认证和授权任务。密钥管理器204管理在认证和授权任务期间使用的密钥的存储和认证。例如,访问管理器202和密钥管理器204管理用于访问存储在远程存储设备(例如,存储平台114中的数据存储设备)中的数据的密钥。如本文使用的,远程存储设备还可以被称为“持久性存储设备”。请求处理服务208管理所接收的数据存储请求和数据检索请求(例如,数据库查询)。例如,请求处理服务208可以确定处理所接收的数据存储请求或数据检索请求所必需的数据。必需的数据可以存储在执行平台112内的缓存中(如以下更详细地讨论的),或者存储在存储平台114中的数据存储设备中。请求处理服务208可以使用“请求处理模块”来实现。管理控制台服务210支持由管理员和其他系统管理者对各种系统和过程的访问。另外,管理控制台服务210可以从用户104-108接收请求以发出查询并监控系统上的工作负载。管理控制台服务210可以使用“管理控制台模块”来实现。在一些实施例中,特定的用户可以发出请求以监控系统上它们的特定查询放置的工作负载。

资源管理器102还包括sql编译器212、sql优化器214以及sql执行器210。sql编译器212解析sql查询并且生成用于该查询的执行代码。sql优化器214基于需要进行处理的数据确定执行查询的最佳方法。sql优化器214还处理各种数据修剪操作和其它数据优化技术以提高执行sql查询的速度和效率。sql执行器216执行用于由资源管理器102接收的查询的查询代码。

查询调度器和协调器218将所接收的查询发送到合适的服务或系统,以用于对执行平台112的编译、优化和调度。例如,查询可以被优先化并且以该优先化次序进行处理。在一些实施例中,查询调度器和协调器218识别或分配执行平台112中的特定节点以处理特定查询。虚拟仓库管理器220管理在执行平台112中执行的多个虚拟仓库的操作。如下讨论的,每个虚拟仓库包括多个执行节点,其每一个包括缓存和处理器。

另外,资源管理器102包括配置和元数据管理器222,其管理与在远程数据存储设备中和本地缓存(即,执行平台112中的缓存)中存储的数据有关的信息。如以下更详细地讨论的,配置和元数据管理器222使用元数据来确定哪个数据文件需要被访问以检索用于处理特定查询的数据。监控器和工作负载分析器224监督由资源管理器102执行的进程,并且管理在虚拟仓库和执行平台112中的执行节点上的任务(例如,工作负载)的分布。基于整个数据处理平台100的变化的工作负载,监控器和工作负载分析器224还根据需要重新分配任务。配置和元数据管理器222以及监控器和工作负载分析器224被耦合到数据存储设备226。图2中的数据存储设备206和226代表数据处理平台100内的任何数据存储设备。例如,数据存储设备206和226可以代表执行平台112中的缓存、存储平台114中的存储设备或任何其它存储设备。

资源管理器102还包括事务管理和访问控制模块228,其管理各种任务及与数据存储请求和数据访问请求的处理相关联的其它活动。例如,事务管理和访问控制模块228提供由多个用户或系统对数据的一致且同步的访问。由于多个用户/系统可以同时访问相同的数据,因此对数据的更改必须被同步以确保每个用户/系统正在使用当前版本的数据进行工作。事务管理和访问控制模块228提供对资源管理器102中的单一集中的位置处的各种数据处理活动的控制。在一些实施例中,事务管理和访问控制模块228与sql执行器216进行交互,以支持由sql执行器216正在执行的各种任务的管理。

图3是描绘执行平台112的实施例的方框图。如图3所示,执行平台112包括多个虚拟仓库302、304和306。每个虚拟仓库包括多个执行节点,每个执行节点包括数据缓存和处理器。虚拟仓库302、304和306能够通过使用多个执行节点并行地执行多个查询(以及其它任务)。如本文讨论的,执行平台112可以基于系统和用户的当前处理需要实时地添加新的虚拟仓库以及终止现有的虚拟仓库。这种灵活性允许执行平台112在需要时快速地部署大量的计算资源,而不会在这些计算资源不再被需要时被迫继续支付这些计算资源。所有的虚拟仓库可以访问来自任何数据存储设备(例如,存储平台114中的任何存储设备)的数据。

尽管图3中示出的每个虚拟仓库302-306包括三个执行节点,但是特定的虚拟仓库可包括任何数目的执行节点。进一步地,虚拟仓库中的执行节点的数目是动态的,使得在出现附加的需求时创建新的执行节点,以及在节点不再必要时删除现有的执行节点。

每个虚拟仓库302-306能够访问图1中示出的数据存储设备116-120中的任一个。因此,虚拟仓库302-306不必被分配给特定的数据存储设备116-120,并且相反地,可以访问来自数据存储设备116-120中的任一个的数据。同样地,图3中示出的执行节点中的每一个可以访问来自数据存储设备116-120中的任一个的数据。在一些实施例中,特定的虚拟仓库或特定的执行节点可以暂时被分配给特定的数据存储设备,但是虚拟仓库或执行节点可以随后访问来自任何其它的数据存储设备的数据。

在图3的示例中,虚拟仓库302包括三个执行节点308、310和312。执行节点308包括缓存314和处理器316。执行节点310包括缓存318和处理器320。执行节点312包括缓存322和处理器324。每个执行节点308-312与处理一个或多个数据存储和/或数据检索任务相关联。例如,特定的虚拟仓库可以处理与特定的用户或客户相关联的数据存储和数据检索任务。在其他实现中,特定的虚拟仓库可以处理与特定的数据存储系统或数据的特定类别相关联的数据存储和数据检索任务。

与以上讨论的虚拟仓库302相似,虚拟仓库304包括三个执行节点326、328和330。执行节点326包括缓存332和处理器334。执行节点328包括缓存336和处理器338。执行节点330包括缓存340和处理器342。另外,虚拟仓库306包括三个执行节点344、346和348。执行节点344包括缓存350和处理器352。执行节点346包括缓存354和处理器356。执行节点348包括缓存358和处理器360。

在一些实施例中,图3中示出的执行节点相对于执行节点正在缓存的数据是无状态的。例如,这些执行节点不存储或以其它方式保持关于执行节点或由特定的执行节点正在缓存的数据的状态信息。因此,在执行节点故障的情况下,故障的节点可以被另一个节点透明地替换。由于没有与故障的执行节点相关联的状态信息,因此新的(替换)执行节点可以容易地替换故障的节点而无需考虑重新创建特定的状态。

虽然图3中示出的执行节点的每个都包括一个数据缓存和一个处理器,但是可选实施例可包括含有任意数目的处理器及任意数目的缓存的执行节点。另外,在不同的执行节点中缓存的大小可以变化。图3中示出的缓存在本地执行节点中存储从存储平台114(图1)中的一个或多个数据存储设备中检索的数据。因此,缓存减少或消除发生在持续地从远程存储系统中检索数据的平台中的瓶颈问题。代替重复地访问来自远程存储设备的数据,本文所描述的系统和方法在执行节点中访问来自缓存的数据,其明显地更快并且避免以上所讨论的瓶颈问题。在一些实施例中,缓存使用提供对缓存的数据的快速访问的高速存储设备来实现。每个缓存可以存储来自存储平台114中的存储设备中的任一个的数据。

此外,缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可以含有大量的计算资源和最少的缓存资源,使得执行节点对于要求大量的计算资源的任务是有用的。另一个执行节点可以含有大量的缓存资源和最少的计算资源,使得该执行节点对于要求缓存大量的数据的任务是有用的。又一个执行节点可以含有提供更快的输入-输出操作的缓存资源,对于要求对大量的数据的快速扫描的任务是有用的。在一些实施例中,基于执行节点将要执行的预期任务,在创建执行节点时,确定与特定的执行节点相关联的缓存资源和计算资源。

另外,基于由执行节点执行的变化的任务,与特定的执行节点相关联的缓存资源和计算资源可以随着时间变化。例如,如果由执行节点执行的任务变得更处理器密集,则特定的执行节点可以被分配更多的处理资源。同样地,如果由执行节点执行的任务要求更大的缓存容量,则执行节点可以被分配更多的缓存资源。

虽然虚拟仓库302-306与相同的执行平台112相关联,但是虚拟仓库可以在多个地理位置处使用多个计算系统来实现。例如,虚拟仓库302可以在第一地理位置处由计算系统实现,而虚拟仓库304和306在第二地理位置处由另一个计算系统实现。在一些实施例中,这些不同的计算系统是由一个或多个不同的实体维护的基于云的计算系统。

另外,每个虚拟仓库在图3中被示出为具有多个执行节点。与每个虚拟仓库相关联的多个执行节点可以在多个地理位置处使用多个计算系统来实现。例如,虚拟仓库302的特定实例在特定的地理位置处的一个计算平台上实现执行节点308和310,并且在另一个地理位置处的不同的计算平台处实现执行节点312。选择特定的计算系统来实现执行节点可以取决于各种因素,诸如,对于特定的执行节点所需的资源级别(例如,处理资源要求和缓存要求)、在特定的计算系统处可用的资源、在地理位置内或地理位置之间的网络的通信能力以及哪些计算系统已实现虚拟仓库中的其它执行节点。

执行平台112也是容错的。例如,如果一个虚拟仓库故障,则该虚拟仓库快速地用不同的地理位置处的不同的虚拟仓库来替换。

特定的执行平台112可包括任意数量的虚拟仓库302-306。另外,特定执行平台中的虚拟仓库的数量是动态的,使得在需要附加的处理资源和/或缓存资源时创建新的虚拟仓库。同样地,可以在与虚拟仓库相关联的资源不再需要时删除现有的虚拟仓库。

在一些实施例中,虚拟仓库302、304和306可以对存储平台114中的相同的数据进行操作,但是每个虚拟仓库具有其本身的执行节点与独立的处理和缓存资源。这种配置允许不同的虚拟仓库上的请求独立地并且请求之间没有干扰地进行处理。结合动态地添加和移除虚拟仓库的能力,这种独立的处理支持关于新的用户的新的处理能力的添加,而没有影响由现有的用户所观察的性能。

图4是描绘示例操作环境400的方框图,其中多个用户通过多个虚拟仓库访问多个数据库。在环境400中,多个用户402、404和406通过多个虚拟仓库408、410和412访问多个数据库414、416、418、420、422和424。虽然未在图4中示出,但是用户402、404和406可以通过资源管理器102(图1)访问虚拟仓库408、410和412。在特定的实施例中,数据库414-424被包含在存储平台114(图1)中,并且可通过执行平台112中实现的任何虚拟仓库来访问。在一些实施例中,用户402-406使用数据通信网络(诸如,互联网)来访问虚拟仓库408-412中的一个。在一些实现中,每个用户402-406在特定的时间处指定特定的虚拟仓库408-412一起工作。在图4的示例中,用户402与虚拟仓库408进行交互,用户404与虚拟仓库410进行交互,以及用户406与虚拟仓库412进行交互。因此,用户402通过虚拟仓库408提交数据检索和数据存储请求。同样地,用户404和406分别通过虚拟仓库410和412提交数据检索和数据存储请求。

每个虚拟仓库408-412被配置为与所有的数据库414-424的子集进行通信。例如,在环境400中,虚拟仓库408被配置为与数据库414、416和422进行通信。同样地,虚拟仓库410被配置为与数据库416、418、420和424进行通信。并且,虚拟仓库412被配置为与数据库416、422和424进行通信。在可选实施例中,虚拟仓库408-412中的一个或多个与所有的数据库414-424进行通信。图4中示出的布置允许单独的用户通过单个虚拟仓库发送所有的数据检索和数据存储请求。该虚拟仓库使用虚拟仓库中的执行节点中的一个内的缓存的数据来处理数据检索和数据存储任务,或者从合适的数据库中检索(以及缓存)必要的数据。虚拟仓库之间的映射是逻辑映射而不是硬件映射。这种逻辑映射基于与安全和资源访问管理设置有关的访问控制参数。逻辑映射容易被改变而无需虚拟仓库或存储资源的重新配置。

虽然环境400示出了被配置为与数据库414-424的特定的子集进行通信的虚拟仓库408-412,但是该配置是动态的。例如,基于将由虚拟仓库408执行的变化任务,虚拟仓库408可以被重新配置为与数据库414-424的不同子集进行通信。例如,如果虚拟仓库408接收到访问来自数据库418的数据的请求,则虚拟仓库408可以被重新配置为还与数据库418进行通信。在稍后的时间,如果虚拟仓库408不再需要访问来自数据库418的数据,则虚拟仓库408可以被重新配置为删除与数据库418的通信。

图5是描绘另一个示例操作环境500的方框图,其中多个用户通过负载平衡器和虚拟仓库组中包含的多个虚拟仓库访问多个数据库。环境500与环境400(图4)相似,但另外包括虚拟仓库资源管理器508和被布置在虚拟仓库组516中的多个虚拟仓库510、512和514。虚拟仓库资源管理器508可以被包含在资源管理器102中。特别地,多个用户502、504和506通过虚拟仓库资源管理器508和虚拟仓库组516访问多个数据库518、520、522、524、526和528。在一些实施例中,用户502-506使用数据通信网络(诸如,互联网)来访问虚拟仓库资源管理器508。虽然未在图5中示出,但是用户502、504和506可以通过资源管理器102(图1)访问虚拟仓库资源管理器508。在一些实施例中,虚拟仓库资源管理器508在资源管理器102内被实现。

用户502-506可以将数据检索和数据存储请求提交到虚拟仓库资源管理器508,其将数据检索和数据存储请求路由到虚拟仓库组516中的合适的虚拟仓库510-514。在一些实现中,虚拟仓库资源管理器508向虚拟仓库510-514提供用户502-506的动态分配。当提交数据检索或数据存储请求时,用户502-506可以指定虚拟仓库组516以处理请求,而没有指定将处理请求的特定的虚拟仓库510-514。这种布置允许虚拟仓库资源管理器508基于效率、可用资源以及虚拟仓库510-514内的缓存的数据的可用性在虚拟仓库510-514上分布多个请求。在确定如何对数据处理请求进行路由时,虚拟仓库资源管理器508考虑可用的资源、当前的资源负载、当前用户的数量等。

在一些实施例中,响应于虚拟仓库的故障,容错系统创建新的虚拟仓库。新的虚拟仓库可以在相同的虚拟仓库组中或者可以在不同的地理位置处的不同的虚拟仓库组中被创建。

每个虚拟仓库510-514被配置为与所有的数据库518-528的子集进行通信。例如,在环境500中,虚拟仓库510被配置为与数据库518、520和526进行通信。同样地,虚拟仓库512被配置为与数据库520、522、524和528进行通信。并且,虚拟仓库514被配置为与数据库520、526和528进行通信。在可选实施例中,虚拟仓库510-514可以与任何(或所有)的数据库518-528进行通信。

虽然环境500示出一个虚拟仓库组516,但是可选实施例可包括任意数量的虚拟仓库组,每个虚拟仓库组与任意数量的虚拟仓库相关联。在特定环境中的虚拟仓库组的数量是动态的,并且可以基于环境中用户和其它系统的变化的需要而改变。

图6是描绘另一个示例操作环境600的方框图,该操作环境600具有多个分布式虚拟仓库和虚拟仓库组。环境600包括资源管理器102,其通过数据通信网络602与虚拟仓库组604和606进行通信。仓库组604包括两个虚拟仓库608和610,以及仓库组606包括另两个虚拟仓库614和616。资源管理器102还通过数据通信网络602与虚拟仓库612(其不是虚拟仓库组的一部分)进行通信。

虚拟仓库组604和606以及虚拟仓库612通过数据通信网络618与数据库620、622和624进行通信。在一些实施例中,数据通信网络602和618是相同的网络。环境600允许资源管理器102协调在多个虚拟仓库608-616上的用户数据存储和检索请求,以存储和检索数据库620-624中的数据。虚拟仓库组604和606可以被定位在相同的地理区域中,或者可以在地理上被分开。另外,虚拟仓库组604和606可以由相同的实体或者通过不同的实体来实现。

本文所描述的系统和方法允许数据作为与计算(或处理)资源分开的服务被存储和访问。即使没有已经从执行平台分配计算资源,数据也可用于虚拟仓库而无需从远程数据源重新加载数据。因此,数据是独立于与数据相关联的计算资源的分配可用的。所描述的系统和方法对任何类型的数据是有用的。在特定的实施例中,数据以结构化、优化的格式存储。数据存储/访问服务与计算服务的解耦也简化了在不同的用户和组之间的数据的共享。如本文讨论的,每个虚拟仓库可以访问它对其具有访问权限的任何数据,甚至在其它虚拟仓库正在访问相同的数据的同时。这种架构在没有任何实际的数据存储在本地缓存中的情况下支持运行查询。本文所描述的系统和方法能够进行透明动态的数据运动,其根据需要以对系统的用户是透明的方式将数据从远程存储设备移动到本地缓存。进一步地,由于数据存储服务与计算服务的解耦,任何虚拟仓库可以访问任何数据,因此这种架构支持数据共享而无需之前的数据移动。

图7是描绘用于管理数据存储和检索操作的方法700的实施例的流程图。最初,方法700在702处接收来自用户的语句、请求或查询。语句是用于执行数据相关的操作的任何请求或命令。示例语句包括数据检索请求、数据存储请求、数据传递请求、数据查询等等。在一些实施例中,语句被实现为sql语句。资源管理器在704处创建查询协调器以管理所接收的语句。例如,查询协调器管理对于处理所接收的语句必需的各种任务,包括与执行平台和一个或多个数据存储设备进行交互。在一些实施例中,查询协调器是专门创建的临时例程以管理所接收的语句。

方法700在706处继续,资源管理器确定对于处理所接收的语句所需的多个任务。多个任务可包括例如访问来自执行节点中的缓存的数据,从远程存储设备中检索数据,更新缓存中的数据,将数据存储在远程存储设备中等等。资源管理器在708处还将多个任务分布给执行平台中的执行节点。如本文讨论的,执行平台中的执行节点在虚拟仓库内被实现。每个执行节点在710处执行分配的任务并且将任务结果返回到资源管理器。在一些实施例中,执行节点将任务结果返回到查询协调器。资源管理器在712处接收多个任务结果并且创建语句结果,以及在714处将语句结果传递给用户。在一些实施例中,在语句结果被传递给用户之后,删除查询协调器。

图8是描绘用于管理通过多个执行节点的多个文件的处理的方法800的实施例的流程图。在特定的实施例中,方法800由资源管理器102执行。最初,方法800在802处接收(或识别)来自用户的查询,并且在804处识别对处理所接收的查询必需的多个文件。处理特定的查询需要的文件将随查询的变化而不同。查询参数和查询指令指示数据将被处理,并且相应地指示访问该数据所必要的文件。例如,如果查询与在特定日期范围内的特定公司的财务记录相关联,则必要的文件包括含有关于该特定公司并且在该特定日期范围内的数据的所有文件。为了在基本上相同的时间处处理多个文件,多个文件被分发给多个执行节点。为了实现这个,方法800在806处识别当前可用于处理多个文件的多个执行节点。

方法800在808处通过创建多个扫描集继续,其中每个扫描集包括多个文件的一部分。扫描集是一个或多个文件的任何集合。所有的扫描集的并集包括处理所接收的查询所需的所有文件。不同的扫描集可以含有不同数目的文件。基于一致性文件分配模型,每个扫描集最初被分配给特定的执行节点。如以下讨论的,因为某些文件随后可以被重新分配给不同的执行节点,所以这是扫描集文件的最初分配。一致性文件分配模型定义用于将文件分配给执行节点的方法,并且每次与查询相关的文件被分配给用于处理的执行节点时使用该一致文件分配模型。通过重复地使用相同的文件分配模型,大多数文件被分配给相同的执行节点用于处理,从而增加分配的文件已在执行节点的缓存中的可能性,其保持高缓存命中率。基于一致性文件分配模型,每个扫描集中的文件被布置(或排序)。在一些实施例中,每个扫描集中的文件基于其大小被布置,使得如果该布置被多次重复(例如,用于访问相似的文件的多个查询),则布置是相同的。例如,扫描集中的文件可以从最大至最小或者从最小或最大而进行布置。如下面讨论的,扫描集到执行节点的分配可以使用例如一致性哈希方法。

在一些实施例中,任何算法可以用于将扫描集分配给执行节点。算法的目的是以将执行节点将在其缓存中找到该文件的概率最大化的方式分配扫描集。这可以通过使用相同的算法或方法来将扫描集分配给执行节点而完成。通过以相同的方式一致地分配扫描集,执行节点更有可能在其缓存中具有必要的文件。另外,对被分配给每个执行节点的文件进行一致性排序(即,其中执行节点处理文件的顺序)将提高首先处理的文件是在缓存中的可能性。在一些实施例中,以最不可能在缓存中的文件被最后处理的方式对文件进行排序,其提高了它们将被另一个执行节点窃取的可能性,如本文所讨论的。

多个执行节点在810处并行地开始处理在它们相关联的扫描集中的文件。在特定的扫描集中的文件通过在之前使用一致性文件分配模型确定的布置(或顺序)中的执行节点进行处理。在812处,当特定的执行节点完成处理在其分配的扫描集中的所有文件时,该执行节点基于文件窃取模型从另一个执行节点中窃取未处理的文件。如本文使用的,“窃取”文件指的是将文件从第一执行节点重新分配给第二执行节点。术语“窃取”和“重新分配”在本文中可互换地使用。文件窃取模型定义用于在执行节点之间窃取文件的方法。当窃取特定的执行节点的文件时,如果其它的执行节点(即,具有未处理的文件的执行节点)在创建扫描集时是不可用的,则那个执行节点被分配它本来将会接收到的文件。在一些实施例中,所窃取的文件在扫描集内以相反的顺序进行选择(例如,从扫描集中的文件的有序列表的底部选择所窃取的文件)。

基于文件窃取模型,特定未处理的文件被选择用于通过可用的执行节点处理。在814处,这种未处理的文件从原来的执行节点的扫描集中移除并且由可用的执行节点处理。方法800通过识别其它已完成处理所有的文件执行节点而继续,并且指示执行节点窃取未处理的文件。这一直持续到所有的扫描集中的所有的文件已经被处理。在一些实施例中,如本文讨论的,文件窃取模型使用一致性哈希算法。在其他实施例中,文件窃取模型可以使用任何算法或过程,其提供将从一个执行节点被窃取到另一个执行节点的文件的一致性选择。这种文件的一致性选择通常增加缓存命中率。

窃取过程通过完全利用所有的执行节点资源而提高整体系统性能。代替允许一个执行节点保持空闲而其他执行节点具有等待被处理的文件,空闲的执行节点可以与其他执行节点处理并行处理等待的文件。关于窃取(或重新分配)未处理的文件的附加细节以下进行讨论。

在一些实施例中,文件窃取过程还使用一致性哈希模型。在这些实施例中,每个执行节点具有所有文件的所有权但以不同的级别。例如,最高级别的所有权(级别0)指示文件最初被分配给那个执行节点。在特定的执行节点已处理其所有的最初分配的文件(级别0文件)之后,执行节点然后继续处理级别1文件,然后级别2文件,以此类推。级别1文件指示如果紧邻的执行节点没有出现,该文件将已经最初被分配给执行节点。在一些实施例中,当一个执行节点从另一个执行节点窃取文件时,“窃取”执行节点是唯一的一个可以窃取文件,这是因为它是唯一相邻的执行节点(即,相邻于从其窃取文件的其他执行节点)。这防止试图窃取相同文件的多个执行节点之间的任何竞争。

在特定的实现中,查询调度器和协调器218(图2)负责管理这些类型的文件活动。在一些实施例中,查询调度器和协调器218包括文件管理器,其管理各种虚拟仓库和虚拟仓库内的执行节点中的文件的分布。该文件管理器还管理不同的执行节点之间的文件的窃取(或重新分配)。

本文讨论的一致性哈希算法的使用允许对等操作,从而消除了对于管理单独的执行节点的每一个的集中式逻辑的需要。相反地,每个执行节点知道环中的所有其他执行节点。当窃取文件时,“窃取”执行节点查问相邻的执行节点是否其具有可被窃取的任何文件。如果在相邻的执行节点中没有级别1文件要被窃取,则窃取执行节点将移动到环中的下一个执行节点。如果没有级别1文件保留在任何的执行节点中,则窃取执行节点将移动到级别2文件,以此类推。

图9是描绘用于管理从执行节点窃取文件的方法900的实施例的流程图。在特定的实施例中,方法900由资源管理器102执行。最初,在902处,第一执行节点被指示从第二执行节点中窃取文件。如以上参考图8讨论的,这种文件窃取例如在特定的执行节点已处理完其分配的扫描集中所有的文件但另外的文件(在其他节点的扫描集中)仍然未处理时可以发生。

在904处,第一执行节点开始从远程存储设备检索文件。方法900在906处确定通过第一执行节点的文件检索(从远程存储设备)是否完成。如果文件检索完成,则在908处第二执行节点被指示不对文件进行处理。在一些实施例中,除了指示第二执行节点不对文件进行处理外,第二执行节点被指示从其扫描集中移除该文件。

如果在906处第一执行节点没有完成从远程存储设备检索文件,则方法900在910处确定第二执行节点是否变成可用于处理文件。如果第二执行节点不可用于处理文件,则方法900返回906处检查通过第一执行节点的文件检索的完成。

如果在910处第二执行节点可用于处理文件,则方法900在912处确定文件是否在第二执行节点的缓存中可用。如果文件不在第二执行节点的缓存中,方法900分支到918,其中第一执行节点继续检索和处理文件,同时第二执行节点被指示不对文件进行处理。在这种情况下,由于第二执行节点没有缓存文件,因此第一执行节点被允许继续从远程存储设备中检索文件,这是由于这将有可能比由第二执行节点开始新的文件检索过程更快。

如果在912处文件在第二节点的缓存中可用,在914处第一执行节点被指示不对文件进行处理。另外,在916处第二执行节点被指示对缓存的文件进行处理。在这种情况下,由于第二执行节点可用于处理文件,并且该文件已在第二执行节点的缓存中,因此第二执行节点可以比仍然从远程存储设备检索文件的第一执行节点更快地处理文件,

在一些实施例中,一个执行节点可以通过直接从其它执行节点的缓存中复制文件来从另一个执行节点窃取文件。因此,从其它执行节点的缓存中检索文件可能更快,而不是使执行节点从远程存储系统中检索窃取的文件。

在一些实施例中,一致性哈希被使用作为基础模型以最初将文件分配给用于处理的执行节点,以及用于在执行节点已处理完其所有最初分配的文件时重新分配(窃取)文件。在一个实施例中,一致性哈希执行关于集群中每个服务器的哈希(例如,使用物理服务器标识符)到大的哈希空间,诸如64位哈希空间。为了最初将文件分配给执行节点,文件以与使用文件的唯一标识符相同的方式进行哈希运算。与该文件相关联的执行节点是在执行文件哈希之后出现在哈希空间中的第一执行节点。这种方法在达到最大的哈希值时“绕回”到零。

使用这种一致性哈希方法支持服务器(以及执行节点)的添加或移除,而不会造成文件的明显不同的初始分配。例如,在具有10个服务器的系统中,一个服务器的添加将造成大约10%的文件的重新分配。因此,大约90%的文件没有被重新分配。为了最小化歪斜的风险(一些执行节点比其他执行节点执行更多的文件处理工作),尤其在执行节点的数目少时,一些实施例在哈希空间中使用多个哈希函数创建每个执行节点的多个副本。在特定的实现中,系统对于每个执行节点可以创建128个副本并且对于哈希空间使用64位哈希值。

图10a-10d描绘使用一致性哈希算法来将文件分配给执行节点的示例实施例。在特定的实施例中,这种文件到执行节点的分配由资源管理器102执行。图10a图示10个文件到三个执行节点的分配。在图10a中的圆的顶部处开始并且按顺时针方向移动,文件6和文件3被分配给下一个执行节点(执行节点3),然后文件1、8、4和5被分配给下一个执行节点(执行节点2),以及最后文件7、10、9和2被分配给下一个执行节点(执行节点1)。

图10b示出在添加另一个执行节点(执行节点4)之后产生的文件分配。在此示例中,与执行节点2和执行节点3相关联的文件与图10a相比没有变化。在图10a中与执行节点1相关联的文件在图10b中的执行节点1和执行节点4之间共享。因此,由于添加执行节点4只有一些文件被重新分配。

图10a和图10b中示出的示例由于只有三个执行节点是可用的而可能具有歪斜问题(其中一些执行节点比其他执行节点执行更多的文件处理工作的情况)。为了减少歪斜的可能性,在哈希空间中提供每个执行节点的多个副本。

图10c示出与图10a相似的示例,但对于三个执行节点中的每一个使用八个副本。这种方法提供执行节点之间更均匀的文件分配。

图10d示出在添加另一个执行节点(执行节点4)之后产生的文件分配。在此示例中,执行节点4的八个副本被添加到哈希空间。如图10d所示,文件1从执行节点3被移动到执行节点4,以及文件5从执行节点2被移动到执行节点4。因此,文件从两个不同的节点移动,而不是如图10a和图10b所示的两者均从相同的节点移动。

图10a-10b示出的一致性哈希示例在扫描集(或单独的文件)到执行节点的初始分配以及将文件从一个执行节点重新分配(例如,窃取)到另一个执行节点中是有用的。在两个实例中,一致性哈希方法增加了关于由执行节点处理的文件的缓存命中的可能性。

在一些实施例中,当可用的执行节点准备窃取文件时,一致性哈希方法用于识别未处理的文件,如果其他的执行节点(最初被分配文件的执行节点)在执行初始文件分配时是不可用的,该未处理的文件就将会分配给可用的执行节点。这种方法增加了可用的执行节点将窃取已在可用的执行节点上缓存的文件的可能性。

在一些实现中,相同的文件同时由多个执行节点缓存。这种文件的多个缓存有助于在多个执行节点上的负载平衡(例如,平衡数据处理任务)。另外,在多个执行节点中缓存文件有助于避免在大量的数据试图通过相同的通信链路时的潜在的瓶颈。这种实现也支持由不同的执行节点对相同数据的并行处理。

本文所描述的系统和方法利用共享磁盘系统和无共享架构两者的益处。一旦数据在本地被缓存,所描述的用于存储和检索数据的平台类似于无共享架构是可扩展的。它还具有共享磁盘架构的所有的益处,其中处理节点可以被添加和被移除而没有任何的约束(例如,对于0到n)并且无需任何明确的数据重组。

图11是描绘示例计算设备1100的方框图。在一些实施例中,计算设备1100用来实现本文讨论的系统和组件中的一个或多个。例如,计算设备1100可以允许用户或管理员访问资源管理器102。此外,计算设备1100可以与本文所描述的系统和组件中的任一个进行交互。因此,计算设备1100可以用于执行各种程序和任务(诸如,本文讨论的那些程序和任务)。计算设备1100可以作为服务器、客户端或任何其它计算实体作用。计算设备1100可以是许多种的计算设备中的任一个,诸如台式计算机、笔记本式计算机、服务器计算机、手持式计算机、平板等。

计算设备1100包括一个或多个处理器1102、一个或多个存储设备1104、一个或多个接口1106、一个或多个大容量存储设备1108以及一个或多个输入/输出(i/o)设备1110,所有这些都耦合到总线1112。处理器1102包括一个或多个处理器或控制器,其执行存储在存储设备1104和/或大容量存储设备1108中的指令。处理器1102还可以包括各种类型的计算机可读介质,诸如缓存存储器。

存储设备1104包括各种计算机可读介质,诸如易失性存储器(例如,随机存取存储器(ram))和/或非易失性存储器(例如,只读存储器(rom))。存储设备1104还可以包括可重写rom,诸如闪存。

大容量存储设备1108包括各种计算机可读介质,诸如磁带、磁盘、光盘、固态存储器(例如,闪存)等等。各种驱动器还可以被包括在大容量存储设备1108中,以能够从各种计算机可读介质读取和/或写入到各种计算机可读介质。大容量存储设备1108包括可移动介质和/或不可移动介质。

i/o设备1110包括各种设备,其允许数据和/或其它信息被输入到计算设备1100或者从计算设备1100中检索。示例i/o设备1110包括光标控制设备、键盘、小键盘、麦克风、监控器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、镜头、ccd或其他图像捕获设备等。

接口1106包括各种接口,其允许计算设备1100与其他系统、设备或计算环境进行交互。示例接口1106包括任意数目的不同网络接口,诸如局域网(lan)、广域网(wan)、无线网络以及互联网的接口。

总线1112允许处理器1102、存储设备1104、接口1106、大容量存储设备1108以及i/o设备1110相互进行通信,以及与耦合到总线1112的其他设备或组件进行通信。总线1112代表几种类型的总线结构中的一种或多种,诸如系统总线、pci总线、ieee1394总线、usb总线等等。

出于说明的目的,程序和其他可执行程序组件在本文中被示出为离散的块,但是应理解,这样的程序和组件可以在不同的时间驻留在计算设备1100的不同的存储组件中并且由处理器1102执行。可选地,本文所描述的系统和程序可以在硬件或硬件、软件和/或固件的组合中实现。例如,一个或多个专用集成电路(asic)可被编程以执行本文所描述的系统和程序中的一个或多个。

虽然本公开以某些优选的实施例进行描述,但是考虑到本公开的益处,其他实施例对于本领域的技术人员将是明显的,包括未提供本文阐述的所有的益处和特征的实施例,其也在本公开的范围内。将理解,其他的实施例可以在不偏离本公开的范围的情况下被使用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1