当前位置: 首页 > 专利查询>微软公司专利>正文

公共查询运行期系统以及应用编程接口技术方案

技术编号:2921329 阅读:206 留言:0更新日期:2012-04-11 18:40
一种查询运行期体系结构以及一个适用于该体系结构的典型应用编程接口。该体系结构输入一个或多个XML查询和视图并启动翻译该查询,其中可以在不同数据模型的多个数据源上运行该查询和视图。该体系结构结合前端编译器,该前端编译器将输入查询和视图转换成表示各自查询意义或视图意义的一个中间语言表示。于是该体系结构可以允许将中间语言表示进行后端编译成与所需要查询的数据源相一致的目标语言。该体系结构还允许执行那些目标编译来析取该查询所需要的数据。本发明专利技术还揭示了一个用于查询运行期系统的实例应用编程接口。

【技术实现步骤摘要】

本专利技术一般涉及在数据源上进行软件查询的领域,更具体而言涉及使用XML中间语言在一个或多个数据源上进行查询。
技术介绍
可扩展标记语言(XML)是一种万维网协会(W3C)认可的文件格式化标准(参考http//www.w3c.org/tr),该标准提供一种一般的语法给具有人类可读的标识符的标记数据。尽管XML可以容易地以一种严格定义的格式描述一个文件的内容,但是还存在其他不容易描述的数据源,这些数据源不是因为他们的结构与标准文本文件的结构不一致就是由于其他的非XML兼容特性。这种数据源的实例可以是电子表格或关系数据库。在具有多样数据编程模块的数据源上执行一个类似XML的检索的任务称为虚拟XML。该术语通常解释为包括在虚拟XML视图上进行查询。虚拟XML是一个关于建立穿越数据存取编程模型的一致性的概念,并允许用户以它们所认为的方式代替实存格式来处理他们的数据。有关在虚拟XML上进行查询的概念涉及数据处理,就如同它是XML而不曾真正地将它转换成XML。此概念的优势在于把XML编码的开销一直保持到一个最小值。如果虚拟XML方案具有这种优势是合乎需要的——能够运用一种查询语言在一个非XML数据源上进行查询就如同该数据源是XML查询。还期望在实际数据和虚拟XML之间的映射具有高保真度。存在大量本来执行一个虚拟XML的任务。一个问题是效率。可以简单地用一个虚拟XML接口来揭露一个数据源,例如XML阅读器,然后在该数据源上用现有的XML查询工具进行查询,例如XML文件对象模型(DOM)。然而,所有的这些作业发生在XML查询引擎中而不是由数据源自己来执行。假设该数据源本身及其相关的数据管理系统在以其特别设计的语言来管理其数据查询方面比一个具有不同数据模型的外部查询系统更有效率。这方面引入了在执行一个虚拟XML查询中的另一个问题;XML数据并不总是用优先的数据模型及其类型系统来进行最佳定位。可以将所有类型的优先数据源映射为XML类型,但是该处理过程丢失了保真度并且还是低效的。此外,一个系统中的类型不明显等效于另一个。例如,表示诸如XML中的图像那样的二进制数据需要一个代价高的到XML字符集的转换(例如,64位基数编码)。优先尝试通过构造两个不同的数据结构在解决问题的虚拟XML上进行查询;一是为了查询一是为了映射,然后一前一后遍历它们以在原始数据源上直接产生一个有效的查询,甚至不实现该虚拟XML视图。尽管该方法起初运行得很好,但是当查询和映射语言复杂性增加之时发展变得及其困难。在查询或映射中的概念经常不直接翻译成目标数据模型,而且以复合XML视图来组成复合查询需要许许多多的语义分析和改写。另外,一种能够支持在多个数据源上把用一种语言的查询转换成查询表现或查询结果的系统体系结构通常需要高代价地执行M乘以N路径,其中M是输入选项的数量且N是输出选项的数量。通过使用标准体系结构,这种转换编译器在数量上变得很大。因此需要一种统一表示以及一种单独的系统体系结构以便在XML和非XML数据源上为了XML查询和视图而执行虚拟XML。本专利技术应用于上述需求并用一个运用一个统一表示的体系结构以及一个供本专利技术用户所使用的应用编程接口来解决上述需求。专利技术概述提供一种用于编译和执行输入查询以产生查询结果的系统,该系统包括一个用于接收一个输入的输入装置,一个用于产生输入查询的语义意义的中间语言编译器,一个用于将XML中间语言表示转换成目标语言以便形成目标查询的目标产生器(或目标语言编译器),以及一个执行引擎。执行引擎允许在数据源上执行输入查询。该执行引擎可以直接地执行XML中间语言,或者在执行该查询之前先将XML中间语言转换成一个目标语言。该输入查询可以来自任何XML查询或视图,而且该目标语言可以是任何能够在一个数据源上进行查询的查询语言。该数据源可以是关系类型或非关系类型(例如分层的)数据,而且该系统能够在多个数据源上进行查询。描述一种与应用程序进行通信的方法,该应用程序定义一种应用编程语言的功能性。一个应用程序可以向查询系统发送一个或多个请求来设置一个或多个编译参数和命令,这些编译参数和命令用于将一个或多个输入查询转换成一个XML中间语言表示。另外,一个应用程序可以向该系统发送一个或多个请求来将XML中间语言表示转换成一个可执行的查询。该系统可以向应用程序发送事件状态,例如进程状态,中间结果,最终结果,错误信息,警告和帮助信息。接下来参照附图所进行的说明性实施例的详细描述将使本专利技术附加的特征和优点变得明显。附图的简要描述连同附图一起看前面所述的摘要以及接下来优选实施例的详细描述将会更好地理解。为了举例说明本专利技术,在附图中显示了本专利技术典型结构;然而,本专利技术并不局限于这些特定方法以及所揭示的工具。在附图中附图说明图1示出了在其中实现专利技术方面的一个典型计算环境的框图。图2描述了在其中实现专利技术方面的一个框图体系结构;以及图3举例说明适用于本专利技术的特征的一个流程图。说明性实施例的详细描述概述本专利技术针对在来自多个查询源的多种类型数据源上的查询问题。对在虚拟XML数据源上的查询问题的一个解决方法可以使用一个统一中间语言。本专利技术的XML中间语言明确表示一个查询的意义或语义。把XML中间语言称为查询中间语言(QIL)。QIL针对通常所说的“查询/视图组合”问题。举例来说,假设在不是XML数据就是XML虚拟数据,或其他数据的一个虚拟XML视图上执行一个XML查询。一种解决方法可以是将数据源具体化为XML,但是这也许是非常低效的,而且所需要的存储器可能要多于系统所可以采用的。另一个解决方法是可视化该视图,用虚拟视图组成该查询,并将结果翻译成在原始数据上进行的操作。用户看见在一个逻辑XML数据模型上的一个XML查询,但是该工具使用它提供的任何查询系统来查询本地数据格式。在关系数据库中使用该解决方法用于结构化查询语言(SQL)在SQL视图上进行查询,而且过去在XML视图上进行查询的一个XML工具已经使用了该解决方法。然而,使用诸如QIL那样的一种XML中间语言,可以在执行任何一个查询之前将原始假定地复合视图分解成更小的基本查询操作。因此,一个在一个复合视图上的查询变成一个在一个查询加上一个简单视图上的查询。查询组合将它转变成在仅仅是在简单视图上的一个查询,从而简化问题。换言之,该XML视图本身简单地变成一个查询。XML中间语言QIL提供(1)XML查询和XML视图的统一表示,从而极大地简化查询/视图组合问题以及(2)处理所有作为“虚拟XML”的视图极大地简化了系统的接口。代替具有一个适用于每一种可能语言和数据模型的API,所有的API可以分享一个公共数据模型,XML中间语言QIL的运算符。XML中间语言QIL还针对一个众所周知的编译器问题。通常地,用一种语言,编译器需要在N后端目标计算机上执行M前端语言,其中M和N是整数。如果执行了每一个成对的组合,需要M乘于N的编译器工具来覆盖所需要的组合。然而,如果通过介绍一个公共中间表示来使它们分离,那么该编译器的复杂性就降低到仅仅是M加上N。本专利技术揭示了一个适用于使用QIL的查询运行期系统的体系结构以及一个典型的应用编程接口,该应用编程接口通过一个或多个应用程序来启动使用该系统。示范的计算装置图1以及接下来所进行的本文档来自技高网...

【技术保护点】
一种在用于构造可执行查询的系统中与应用程序进行通信的方法,包括:该系统接收来自应用程序的一个或多个请求来设置一个或多个编译参数和命令以便用于将一个或多个输入查询转换成一个XML中间语言表示;以及该系统接收来自应用程序的一个或 多个请求来将该XML中间语言表示转换成一种可执行查询。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:AA德塞MW弗塞尔AE金伯尔ML布伦达吉S杜比奈茨TF弗雷格
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1