异构源上的动态分布式查询执行的制作方法

文档序号:6365044阅读:167来源:国知局
专利名称:异构源上的动态分布式查询执行的制作方法
技术领域
本发明涉及计算机系统,尤其涉及动态分布式查询执行。
背景技术
传统数据库系统的一个基本问题在于从数据存储中存在的未知数量的数据片段中导出有用的信息,数据存储包括网络可访问的数据存储或“云”数据存储。一个障碍在于以下事实,即,例如,数据存储在采用不同的数据模型或方案的意义上是异构的。因此数据是充裕的,而有用的信息很少。

发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。简而述之,本发明一般涉及对与来自多个异构数据源的数据进行交互的程序的执行进行优化。每个数据源能以各种方式不同,尤其包括数据表示、数据检索、变换能力以及性能特征等。这些不同可用来为程序确定有效的执行策略。而且,在程序被执行的同时按需执行分析。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。


图I是有效的程序执行系统的框图。图2是代表性查询处理器组件的框图。图3是代表性优化组件的框图。图4是代表性数据提供器组件的框图。图5是有效地执行与来自多个异构源的数据进行交互的程序的方法的流程图。图6是执行与来自多个异构源的数据进行交互的程序的方法的流程图。图7是基于成本的程序优化的方法的流程图。图8是成本变换方法的流程图。
图9是示出用于本发明各方面的合适操作环境的示意性框图。
具体实施例方式以下详细描述一般针对对一程序的执行进行优化,该程序相对于多个不相关的异构数据源与数据进行交互(例如,读、写、变换等)。数据源能以许多方式不同,尤其包括数据表示、数据检索、变换能力以及性能特征等。数据源间的这些不同可用来为总体程序确定有效的执行策略。而且,在程序执行期间,可以按需执行或惰性地执行分析。数据处理领域的相关工作包括结构化查询语言(SQL)分布式查询引擎和语言集成的查询(LINQ-to-SQL)。SQL分布式查询引擎执行整个查询的全局分析(非按需),被约束在它所能支持的一组数据源(例如OLEDB-对象链接与嵌入数据库 )中,并且使用用于分析外部SQL数据源能力和性能的一维模型。另一方面,LINQ-to-SQL是这样一种技术,该技术允许相对于SQL服务器的对程序的按需执行,但却不支持异构数据源并且在不考虑程序对总体程序性能的影响的情况下将尽可能多的程序推向SQL服务器。尽管不限于此,本发明的各方面可以相对于数据集成(或mashup)工具而结合,该工具从多个异构数据源(例如数据库、逗号分隔值(CSV)文件、OData订阅源等)提取数据,以非寻常方式变换数据,以及通过若干手段(例如,数据库、OData订阅源)公布数据。该工具允许非技术用户能在他们所熟悉的图形环境中创建复杂的数据查询,同时使查询语言例如向技术用户完全地表达。此外,该工具可以鼓励在存在动态结果预览的情况下复杂查询或表达式的交互式构建。为启用这一高度交互式的功能,该工具尤其可以使用这里进一步描述的优化来快速获得部分预览结果。现在参考附图更详细地描述本发明的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。首先参考图1,示出了有效的程序执行系统100。如图所示,系统100包括与程序120通信上耦合的查询处理器组件110,程序120包括指定了要在执行(例如计算)时执行的特定动作的一组计算机可执行指令。这里,程序120可涉及包括获取、变换和生成数据等等的数据交互。尽管不限于此,程序120可以以通用功能性编程语言来指定。因此,程序120可以用表达式、查询表达式或仅仅用例如标识了一组要检索的数据的任意复杂度的查询来指定数据交互。如这里使用的,为了清楚和便于理解,程序120可以被简称为查询、表达式或查询表达式。然而,程序120不限于数据检索动作,而事实上可以指定实质上任何类型的动作(或换言之,计算)。查询处理器组件110被配置成执行(或评估)程序120 (或查询),并且返回结果。按照本发明一方面,查询处理器组件110可以被配置成联合计算。换言之,程序120或其部分可被分发用于远程执行。联合允许对多个不相关的且通常非常不同的源和/或系统进行透明集成,以允许统一交互。为此,程序可以被分割成适用于为远程执行提交的多个子表达式,在远程执行后,来自每个子表达式的结果被组合以产生最终结果。常规的分布式查询系统处理多个执行位置,但不理解可能存在不同的能力和成本。这样的系统区分了本地和远程执行,允许到多个位置的分发,但假定远程位置是相同的或相似的。在这里的联合模型中,这样的假定被放宽到允许向任意外部方进行分发。查询处理器组件110可以与多个数据提供器组件130 (数据提供器组件I-数据提供器组件N,N是正整数)和相应的数据源140 (数据源I-数据源N,N是正整数)进行交互。数据提供器组件130可以被配置成在查询处理器组件110连同程序120以及相关联的数据源140之间提供桥梁。换言之,数据提供器组件130可以体现为一种适配器,该适配器允许与不同的数据源140(例如,数据库、数据订阅源、电子表格、文档等)以及特定源提供的不同格式的数据(例如,文本、表格、HTML (超文本标记语言)、XML (可扩展标记语言)等)进行通信。更为具体地,数据提供器组件130可以从数据源140检索数据,并且将对数据的改变协调回数据源140。此外,查询处理器组件110可以采用异构数据源140间的不同来确定对于程序120的有效评估方案或执行策略,这些不同包括但不限于数据表示、数据检索(如,完全查询处理器、获得机制(如读文本文件)等)和变换能力、以及性能特征。而且,在程序被执行的同时,在存在优化机会的程序120的各部分上,这样的确定和相关分析可以按需执行。例如,分析可被推迟,直到向程序的特定区段请求了结果且该特定区段可能被优化。换言之,可以在运行时惰性地执行动态分析,以确定总体程序相对于异构数据源140的最优执行策略。通过推迟分析,可以确定表达式或子表达式定向一特定的数据源(如SQL服务器),并且可以基于特定数据源的成本和能力以及与数据源交互周围的环境(例如,网络等待时间)来作出决策。特定执行策略的执行可以产生相对于异构数据源140执行的输出的操作代表。按照一实施例,可以返回一数据子集,例如作为结果的预览。例如,可以返回和查询匹配的数据的子集(诸如前一百个匹配的结果),而不是返回和查询匹配的整个数据集合。因而,所请求的、发送的和作用于的数据量相对较小,从而允许迅速返回结果和后续交互(例如,下钻)。图2描述了代表性的查询处理器组件110,查询处理器组件110包括预处理组件210、变换组件220、优化组件230和后退执行组件240。预处理组件210被配置成对程序进行标准化。换言之,程序可以从第一形式被映射至后续处理所预期和使用的第二标准形式。例如并且按照一个实施例,程序表达式、功能等在被调用时,可以捕捉它们自身的描述以及它们的输入并且将其发送至查询处理器组件110供执行。因而,预处理组件210可以配置有例如一组规则来对程序描述进行标准化,或换言之,使描述符合可被查询处理器组件110理解的标准。而且,预处理器组件可以被配置成在执行前应用一组通用优化。例如,过滤器可以在连接操作之前而不是之后被移至执行,以便减少执行连接时涉及的数据量。按照一个实施例,可以组合地执行标准化和通用优化。例如,为标准化程序而应用的规则也可以被构造成执行通用优化。无论如何,最终结果将是可以被进一步处理的经标准化和通用优化的程序。变换组件220可被配置成向数据提供器组件130请求信息,例如,关于数据源140是否能执行程序的各个部分(例如,子表达式)。换言之,程序的指定从数据源获取数据的各部分被定位,并且作出关于这种数据源能理解和执行程序的多少部分的确定。基于接收 到的信息,变换组件220可以对程序进行变换以反映数据源能力。例如,程序的各部分或其中的表达式可以以系统方式被组合,以简化表达式和改进有效执行。按照一个实施例,变换组件220可以对于数据源能力执行功能性编程语言操作中的折叠(又称为减少、累积、压缩、注入)。优化组件230被配置成根 据成本来为程序120选择有效的执行策略。简言之,可以向程序应用和不同的执行策略相对应的一组优化,来产生等价的候选程序。可以向候选程序应用成本,成本诸如和不同数据源的使用有关的成本,包括等待时间和说明各个源之间的差异的其他度量。基于成本或特定的成本模型,可以选择候选程序之一作为最有效的(或最优的)程序,因此确定了与这种优化相关联的执行策略。查询处理器组件110还可以包括被配置成执行程序的全部或部分的后退执行组件240。因此,后退执行组件240可用于执行程序中的未被其他数据源和/或相关系统处理的片段。而且,后退执行组件240可被认为是最初对于程序的全部或部分的可能的执行目标,例如,在采用后退执行组件240比将执行分发至另一源/系统更为有效的情况下。换言之,后退执行组件不需要仅仅是在程序不能在其他地方被执行时使用的后备执行组件。简单返回至图1,注意到如果数据源140错误表达了其能力、或者如果数据源140的能力不同于数据源所属的这类源预期的一组能力,则和该源相对应的数据提供器130可以被配置成识别这一情况,例如在分发计算的失败尝试之际。在这一情况下,例如,数据提供器组件130或者可以增量地回退(roll back) 一组计算直到得出数据源140所能够进行的计算,或者完全地回退该计算使得与数据源140的交互不破坏任何计算。委托计算的增量式回复和批量回复间的选择可以是优化策略的结果,因为数据源140对于它所认为不适当的计算请求不同地响应。例如,数据源140可以在接收到预定数量的坏请求后开始拒绝请求。然而,增量委托或者委托的尝试一般会得到有效的计算。注意到图2,数据提供器组件130所回退的任何计算可由后退执行组件240处理。然而,一旦后退执行组件240被通知到能力缺陷或回退,它就可以被配置成为有效执行的目的而向另一数据源140分发全部工作或一部分工作。更进一步,查询处理器组件110包括被配置成基于所保存的数据、信息等方便执行的高速缓存组件250。例如,高速缓存组件250可以本地地高速缓存之前获取的数据供后续使用。而且,可以采用优先高速缓存来预取预计可能被采用的数据。例如,可以扩展查询以返回附加数据。更进一步,高速缓存组件250可以生成对于远程执行环境的已存储过程等,来允许对流行数据的迅速访问。而且,高速缓存组件250可以存储和执行错误或失败有关的信息,以允许生成后续执行策略来考虑这一信息。注意到图3,更详细地描绘了代表性优化组件230。如图所示,优化组件230包括成本标准化组件310。由于本发明的系统考虑了异构数据源,因此可以采用标准的(或规范的)成本模型来允许在多个数据模型/方案等之间进行比较。换言之,第一数据源特定格式的成本信息可被转换成第二标准格式,以允许同时在不同的源上进行推理。成本标准化组件310将接收到的、检索到的或以其他方式确定的成本或者关于数据源的推断映射至标准成本表示。例如,等待时间和吞吐量度量在数据源间可以是不同的,并且由成本标准化组件310标准化为标准形式,以允许成本在数据源间的“同类型”比较。成本导出组件320可以被配置成生成从已知成本信息得到的附加成本信息。更为具体的,成本模型可以从多个因子的加权计算中得到,多个因子包括但不限于,每计算周期的时间、货币成本,每数据传输的货币成本,或保真度(例如,信息损失或维持)。而且,可以相对于多个因子或不同的成本模型来支持约束条件,例如以允许确定收支差额。例如,约束条件可以指定允许执行在接下来十五分钟内完成的最小货币费用。规则组件330可以被配置成向程序的可应用部分应用一个或多个优化规则的集合,以生成多个等价程序或换言之候选程序。这样的规则可以是有点推测的,因为不知道哪个候选是最佳的。例如,不知道使用嵌套循环连接还是排序合并连接还是索引连接才是最佳的。而且,不知道将数据从一个源拉出并且将数据推至另一个源和例如本地地拉两个数据集相比是否更好。成本分析组件340被配置成计算与每个等价候选程序相关联的预期成本,并且根据所计算的成本来标识候选程序之一。更具体地,成本分析组件340可以被配置成基于成本模型来分析等价候选程序的有效性,并且选择最有效的候选程序,从而选择执行策略。
注意到图4,更详细地示出了代表性数据提供器组件130。如前所述,数据提供器组件130可以在查询处理器组件110以及程序120和特定数据源140之间提供桥梁。包括了成本估计器组件410和能力组件420。成本估计器组件410可以被配置成提供和与特定数据源的交互相关联的预期成本的估计。按照一个实施例,成本估计器组件410可以向数据源相关的系统请求成本信息。例如,数据库管理系统维持可以在请求时返回的成本信息和执行计划。另外的或另选的,成本估计器组件可以观察与数据源的历史交互,以及关于交互的记录信息。然后可以分析这一记录的信息以确定或推断和等待时间、响应时间等相对应的成本估计。 能力组件420可以被配置成标识数据源能力。类似于成本估计器组件410,可以采用两个实施例。首先,能力组件420可以向数据源和/或相关系统(在被启用时)请求标识能力。另外地或另选地,能力组件420可以观察和分析与数据源的交互以确定或推断源能力。数据提供器组件130还可便于与各种不同源进行交互,各种不同源包括那些具有不同的数据检索能力的源。例如,对于像可执行查询的数据库这样的可查询数据源,编译器组件430可以被配置成将程序或其部分从标准形式变换成可被数据源接受的或对数据源本机的形式。随后,程序可以被提供至数据源并由其执行。例如,程序表达式可以被变换成结构化查询语言,并且被提供在相关数据库上执行。按照不能执行查询的不可查询数据源,诸如文本、逗号分隔值文件和超文本标记语言(HTML)源,可以用例如串行化组件440获取数据。串行化组件440被配置成便于串行化和去串行化,以允许数据被检索并且在数据上执行操作。例如,所标识的数据可以被串行化、被发送至数据提供器组件130、并且被去串行化供使用。而且,这样的数据可以被串行化以便于传输供远程执行。应该理解,可以将程序的全部或部分分发给任何计算引擎等,不仅仅是查询处理器。因而,编译器组件430可以定向任何计算引擎。例如但不限制,考虑程序包括矩阵计算的情况。在该情况下,与相关数据库相关联的查询处理器可能不是执行程序的最佳选择。相反,专攻高性能科学计算的弓I擎会是较佳的目标。而且,查询处理器组件110或类似的计算引擎可以利用冗余数据。通常,相同的数据可以被主存在多个数据存储中。之前,这一描述集中在基于各成本来确定执行策略,所述成本包括与数据存储交互并可能选择最便宜的单个数据存储的成本。然而,也可以采用另一方法,其中数据是向多个数据存储请求的,并且从第一存储使用以返回数据。例如,数据可以向两个最便宜的源请求。例如,首先接收到的数据可在比较中使用而其他数据可在比较中被忽略或使用,以确定接收到正确数据。参考若干组件之间的交互已经描述了上述系统、架构、环境等。应该理解,这样的系统和组件可以包括其中指定的那些组件或子组件,某些指定的组件或子组件,和/或附加的组件。子组件也可以被实现为在通信上被耦合到其他组件而不是被包括在父组件中的组件。此外,一个或多个组件和/或子组件可以组合成提供聚集功能的单个组件。系统、组件、和/或子组件之间的通信可以根据推送(push)或拉取(pull)模型来实现。各组件也可以与一个或多个其他组件进行交互,出于简要考虑在此未具体描述其他组件,但本领域的技术人员均已知。此外,以上公开系统以及以下方法的各个部分可以包括或包含人工智能、机器学习或基于知识或规则的组件、子组件、过程、手段、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎、分类器...)。这样的组件和其它 组件可以自动化其执行的某些机制或过程,由此使得系统和方法的各部分更为自适应以及高效及智能。作为示例而非限制,查询处理器组件110可使用这样的机制来确定或推导执行策略。考虑到以上描述的示例性系统,参考图5-9的流程图将可以更好地理解根据所公开的主题实现的方法。尽管为了说明简洁起见,按照一系列框示出和描述了方法,但是,应该理解和知道,所要求保护的主题不限于框的顺序,因为一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。图5示出有效地执行与来自多个源的数据进行交互的程序的方法500。在附图标记510,标识多个数据源和/或相关系统的能力。在附图标记520,标识数据源成本。例如,可以向与相应的数据源相关联的数据提供器请求能力和成本信息。在附图标记530,根据能力和成本动态地确定程序的执行计划或策略。随后在附图标记540,基于执行计划对于一个或多个数据源开始动作的执行。在附图标记550,按需合并由一个或多个数据源提供的结果以产生最终结果。图6描述了执行与来自多个源的数据进行交互的程序的方法600。在附图标记610,可以预先处理与数据消费相关联的程序或其部分。换言之,程序可以从第一形式映射至第二标准形式。在标准化的一个特定实施例中,程序功能、操作等等可以包括它们自己的描述,诸如它们如何被调用以及它们的输入变量,从而允许由例如查询处理器进行后续分发和远程执行。而且,可以采用预处理来将程序变换成更有效的程序。例如,过滤器可以在连接操作前被移至操作,以便使被连接的数据量最小化。在附图标记620,标识了向数据源请求数据的程序的各部分或各区段。在附图标记630,标识了可以满足请求的至少一部分的源。注意到不止一个源可以能够满足请求或其部分。在附图标记640,根据成本来确定最优执行策略,在一个示例中在运行时动态地确定。换言之,可以选择一策略来最有效地执行程序,包括将在何处执行程序。在附图标记650,可以按照策略来开始远程执行。在附图标记660,开始程序的非远程执行的一个或多个部分的本地执行。在附图标记670,从不同源获取的结果被适当地组合并返回。按照一个实施例,可以在预览中返回结果的子集。
图7示出基于成本的程序优化的方法700。在附图标记710,标识了候选执行策略。这样的策略可以通过将一组优化规则推测性地应用于程序的可应用部分来标识,从而生成多个等价程序或候选程序。在附图标记720,确定与候选执行策略(以及尤其是候选程序)相关联的成本。这样的成本可以从数据源或相关系统获取,或者从以前的交互确定或推断。在附图标记730,根据成本来选择候选执行策略。按照一方面,可以采用允许在异构源(例如,不同的数据模型/方案)间比较成本的标准成本模型。这里,成本模型是指抽象地描述与数据进行交互的成本的实体。例如,基于时间的列表成本模型包括最初创建列表的成本、以及检索列表中的各项的按项成本。而且,应当理解,可以采用从多个因子的加权计算得出的成本模型。图8是描述对多个异构数据源的成本分析的方法800的流程图。在附图标记810,确定与多个数据源相关联的成本。这样的成本可以为每个不同的数据源不同地表示。在附图标记820,成本可以被映射(或变换)至对所有数据源通用的标准表示。然后在附图标记830分析经标准化的成本,例如以确定有效的执行策略。在一个实例中,可以对数据集成工具采用本发明公开内容的各方面。可以使用该工具来从多个异构源获取数据并且执行数据整形,或换言之,数据操纵、变换或过滤。例如但非限制,信息工作者(IW)可以采用诸如电子表格应用这样的可选应用,工具从该应用向信息工作者提供了获取和整形数据的新体验,他们然后可以将获取和整形数据的结果导入到他们的所选应用中和/或导出至别处。此处使用的术语“组件”和“系统”及其各种形式旨在表示与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多计算机之间。在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换示例,但出于简明的目的已被省略。如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户状态的过程。可以使用推断来标识特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,计算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个 还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护的主题的自动化和/或推断的动作。而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有”或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。为了为所要求保护主题提供上下文,图9以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。尽管能够在可以在一台或多台 计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其他程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表……)、基于微处理器或可编程消费或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。参考图9,示出了示例通用计算机910或计算设备(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机910包括一个或多个处理器920、存储器930、系统总线940、大容量存储950、以及一个或多个接口组件970。系统总线940与至少上述系统组件通信地耦合。然而,可以理解,在其最简单的形式中,计算机910可包括耦合到存储器930的一个或多个处理器920,该一个或多个处理器920执行存储在存储器930中的各种计算机可执行动作、指令和/或组件。处理器920可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器920还可被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、结合DSP核的一个或多个微处理器、或任何其它这种配置。计算机910可包括各种计算机可读介质或以其他方式与各种计算机可读介质交互以便于控制计算机910来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机910访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机910访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。存储器930和大容量存储950是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器930可以是易失性的(例如RAM)、非易失性的(例如ROM、闪
存......)或是两者的某种组合。作为示例,包括诸如在启动期间在计算机910内的元件之
间传输信息的基本例程的基本输入/输出系统(BIOS)可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器920的处理等。
大容量存储950包括相对于存储器930用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储950包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。存储器930和大容量存储950可包括或其中存储有操作系统960、一个或多个应用962、一个或多个程序模块964和数据966。操作系统960用于控制和分配计算机910的资源。应用962包括系统和应用软件之一或两者,并且可利用操作系统960对资源的管理通过存储在存储器930和/或大容量存储950中的程序模块964和数据966来执行一个或多个动作。因此,应用962可根据由此提供的逻辑来将通用计算机910变成专用机器。所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,有效的程序执行系统100或其一部分可以是应用962或形成应用964的一部分,并且包括存储在存储器和/或大容量存储950中的一个或多个模块964和数据966,这些模块和数据的功能可在由一个或多个处理器920执行时实现。根据一个特定实施例,处理器920可与片上系统(SOC)或在单个集成电路基座上包括或换言之集成硬件和软件的类似架构相对应。此处,处理器920可包括至少与处理器920和存储器930相似的一个或多个处理器以及存储器等。常规处理器包括最少量的硬件和软件并且广泛依赖于外部硬件和软件。作为对比,处理器的SOC实现更强大,因为它将硬件和软件嵌入其中以能够用最少的硬件和软件或不依赖于外部硬件和软件来启用特定功能。例如,有效的程序执行系统100或其部分和/或相关联的功能可被嵌入到SOC体系结构中的硬件内。计算机910还包括通信地耦合到系统总线940并方便与计算机910的交互的一个或多个接口组件970。作为示例,接口组件970可以是端口(例如,串行、并行、PCMCIA、USB、
火线......)或接口卡(例如,声音、视频......)等等。在一个示例实现中,接口组件970可被
具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标等定点设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、照相机、其他计算机……)来将命令和信息输入到计算机910中。在另一示例实现中,接口组件970可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其他计算机等提供输出。此外,接口组件970可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其他计算设备(未示出)通信。
以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从 而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。
权利要求
1.一种便于数据访问的方法,包括 采用被配置来执行存储在存储器(930)中的计算机可执行指令以执行以下动作的至少一个处理器(920) 根据数据源能力和成本,在从多个异构数据源(140)获取数据的程序的执行期间,为该程序生成执行策略。
2.如权利要求I所述的方法,还包括,根据跨所述异构数据源的成本模型标准来确定成本。
3.如权利要求I所述的方法,还包括本地地执行所述程序的至少一部分。
4.如权利要求I所述的方法,还包括将所述程序从第一形式变换为第二标准形式。
5.如权利要求I所述的方法,还包括开始在所述异构数据源之一上分发所述程序的至少一个子集。
6.—种便于程序执行的系统(100),包括 耦合到存储器(930)的处理器(920),所述处理器(920)被配置来执行存储在所述存储器(930)中的以下计算机可执行组件 第一组件(110),所述第一组件被配置成基于数据源能力和成本来生成一策略,所述策略用于执行在多个异构数据源上指定的查询。
7.如权利要求6所述的系统,其特征在于,所述第一组件被配置成在运行时惰性地生成策略。
8.如权利要求6所述的系统,还包括,被配置成本地地执行所述查询的至少一部分的第二组件。
9.如权利要求6所述的系统,还包括,被配置成根据与所述数据源之一的历史交互来推断能力或成本的第二组件。
10.如权利要求6所述的系统,还包括,被配置成按照所述策略来将所述查询的各部分分发至所述异构数据源中的一个或多个的第二组件。
全文摘要
异构源上的动态分布式查询执行。根据数据源能力和成本,在与来自多个异构数据源的数据进行交互的程序的执行期间,为该程序生成执行策略。程序的各部分可以对于异构数据源本地和/或远程地执行,并且结果被组合。
文档编号G06F17/30GK102708121SQ20121003930
公开日2012年10月3日 申请日期2012年2月20日 优先权日2011年2月18日
发明者C·西泽伯斯基, G·休斯, J·特维利杰, M·科尔森 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1