调用表值函数的查询的有效评估系统和方法

文档序号:6475143阅读:215来源:国知局

专利名称::调用表值函数的查询的有效评估系统和方法调用表值函数的查询的有效评估系统和方法相关申请的参照本申请要求2004年6月30日提交的美国申请序列号(未分配),代理案巻号MSFT-3350的优先权,该申请要求2004年3月19日提交的美国申请序列号60/554,639的优先权,这些申请的公开内容通过整体引用结合于此。发明领域本发明涉及数据检索和操纵,尤其涉及调用表值函数来提供结果的查询。发明背景诸如来自华盛顿州雷蒙德市微软公司的SQLtmServer等关系型数据库执行各种各样复杂的操作来检索和操纵数据。这些复杂的计算通常不可能使用传统的结构化查询语言(SQL)或诸如GROUPBY、WHERE等其它关系型操作符。表值函数(TVF)可通过提供一种将特殊逻辑引入到查询操作树中来解决这一问题。函数的TVF类允许标量自变量作为输入,并产生一系列行作为输出。特殊逻辑可被插入到TVF函数中以执行传统关系型操作符不支持的特殊变换。TVF的有效评估是困难的。这些函数通常没有可预测的性能行为,因为它们可包含任意的过程代码。该代码可包括调用可能在远程机器上的外部组件的复杂逻辑。由于査询优化器通常使用成本估算模型来选取有效的执行策略,TVF会提出关于优化的难题,因为其性能难以预测。此外,由于TVF用于任意地扩展数据库系统,因此难以构建覆盖TVF可扩展性的所有形式的单个成本估算。另外,实现TVF的用户通常具有关于査询处理器的内部的有限知识。这一有限的知识使得难以提供关于函数与现有的内部操作相比的相对执行成本的准确和可信信息。关于TVF的评估的另一困难是某些TVF实现要求TVF的结果在査询的剩余部分的执行之前在例如临时表中预实现。这一预实现要求査询结果的慢假脱机,并且也通过要求TVF的输入在可执行查询的任何其它部分之前已知而限制了TVF的灵活性。这一限制是不合需要的,因为提供査询的一部分,如表中的一列,作为TVF调用的自变量通常是有利的。作为以上列出的困难的结果,常规关系型数据库系统中的TVF的用户必须接受次等的性能以及有限的能力作为TVF可扩展性的代价。由此,本领域中需要一种有效地评估调用TVF的查询的系统和方法。本发明满足这些和其它需求。发明概述本发明描述了一种用于在关系型数据库服务器中实现表值函数(TVF)的有效和快速框架。该框架提供了期望的可扩展性属性,并具有通过与査询处理器中的优化基础结构紧密地集成而最小化性能退化的能力。本发明也使诸如公共语言运行库(CLR)等受管执行环境能够有效和动态地用用户提供的代码来扩展数据库引擎的逻辑。依照本发明的一个方面,TVF框架提供了来自査询处理器的一抽象层次。当在查询处理器处接收到调用TVF的传入查询时,为描述TVF的能力的信息类生成一请求。该信息类通常用一组绑定问题来查询,以提供用于査询绑定的信息。该信息类也用一组优化问题来査询,以提供用于査询优化的信息。在査询执行期间,该信息类用于生成一执行类,它依照TVF向査询处理器返回一组输出行。依照本发明的另一方面,上述TVF框架可被扩展到受管执行环境(MEE)。在该MEE中提供诸如文本编辑器等接口,使用户能够创建定义TVF的能力的类。该类然后被编译成二进制文件并提交给数据库服务器。在数据库服务器处,该二进制文件可用于生成可在TVF框架内实现的信息类。依照本发明的另一方面,诸如过滤、投影和分组操作等关系操作可被推入到TVF的执行中。这类关系操作"下推"通过使TW能够依照关系操作的范围来评估而改进了效率。当结合附图阅读以下说明性实施例的详细描述时,可以清楚本发明的其它特征和优点。附图简述在结合附图阅读了以下详细描述之后,可以更好地理解说明性实施例,附图中图1是依照本发明的数据检索和操作系统的框图;图2是依照本发明的示例性TVF框架;图3是依照本发明用于査询评估的示例性方法的流程图;图4是依照本发明用于TVF框架可扩展性的示例性方法的流程图;图5所示是依照本发明的示例性关系操作下推的框图;图6是表示具有其中可实现本发明的各种计算设备的示例性网络环境的框图;以及图7是表示其中可实现本发明的示例性计算设备的框图。说明性实施例的详细描述本发明的主体用细节来描述以满足法定要求。然而,该描述本身不打算限制本专利的范围。相反,发明人构想所要求保护的主体也可以结合其它现有或未来技术用其它方法来实施,以包括类似于本文档中所描述的那些不同的动作或元素。图1示出了依照本发明的示例性数据检索和操作系统的框图。一般而言,客户机应用程序108使査询能够被生成并被提交到数据库服务器104以供在数据库服务器104处执行。数据库服务器104提供对一个或多个底层数据存储的访问,它们以诸如被组织成行和列的表的形式储存数据。数据库服务器104包括查询处理器106,它一般在底层数据存储上执行传入的査询。当接收到传入的査询时,查询处理器106通常在执行之前对査询执行查询绑定和査询优化过程。如图l所示,数据库服务器104可(尽管不必要)结合受管执行环境(MEE)102操作。MEE102可以是,例如,公共语言运行库(CLR)环境。MEE102—般为受管代码提供执行环境。因此,MEE102可提供程序执行所需的各种功能和服务,包括,例如及时(just-in-time)(JIT)编译、分配和管理存储器、强制类型安全、异常处理、线程管理和安全性。此外,除诸如结构化査询语言(SQL)等传统关系査询语言之外,MEE102还使任务能够以诸如VisualBasic和C弁等正式编程语言来执行。这类正式编程语言可支持诸如数组、集合、对每一个循环、位移位和类等特征。由此,开发者可充分利用MEE102与数据库服务器104的集成,以编写比传统的关系查询语言具有更复杂逻辑并更适用于计算任务的代码。数据库服务器104处的执行通常要求现有关系査询语言操作符不支持的复杂操作。为执行这类操作,查询处理器106可调用一个或多个表值函数(TVF)。一般而言,TVF提供了一种将特殊逻辑引入到查询操作树中的机制。TVF通常接收标量自变量作为输入,并产生一系列行作为输出。特殊逻辑可被插入到TVF中以执行传统关系操作符不支持的特定变换。本发明提供了一种用于执行调用TVF的査询的框架。重要的是,该框架从查询处理器106中抽象用户代码。该框架可结合个别TVF或诸如基于MEE的TVF等的TVF类使用。每一这样的TVF或TVF类实现支持诸如绑定输出列、理解参数和例示运行时逻辑等操作。另外,关于TVF的能力的抽象问题也通过该框架来提供,并且査询处理器106探究了与框架中这些抽象能力所描述的行为特征相一致的替换特征。例如,TVF可以总是以已排序次序返回行。如果这是对框架所描述的,则査询处理器106可在计划生成期间充分利用这一信息。例如,可以避免查询树的其它部分中的排序操作。图2示出了依照本发明的示例性TVF框架的框图。一般而言,当接收传入的查询105时,査询处理器106执行查询绑定过程112和查询优化过程114。査询处理器106然后依照绑定112和优化114来执行査询116。当传入的査询105调用TVF时,信息类工厂132生成描述TVF的能力的信息类134。为向绑定112提供信息,用多个绑定问题122查询信息类134。同样,为向优化114提供信息,用多个优化问题124查询信息类134。最后,在执行116期间,使用信息类134来生成执行类136,它依照所调用的TVF向査询处理器106提供输出行。图2所示的框架可使用图3所描述的示例性査询评估方法来实现,现在将详细描述该方法。在动作310,在査询处理器106处接收传入的查询105。如果传入的查询105调用TVF,则在动作312,査询处理器106向信息类工厂132发送对于对应信息类134的请求115。在动作314,信息类工厂132生成所请求的信息类134。信息类134可被实现为例如从另一语言的类属基类或某一等效构造中导出的C++中的类。关键属性是信息类134作为抽象点而生成,在该抽象点处,査询处理器106具有到它所调用的对象的具体实例的一间接层次。在动作316,作为绑定112的一部分,査询处理器106用一组绑定问题122查询信息类134。示例性绑定问题122可请求诸如将在査询期间返回的列数、列类型以及类名等信息。示例性绑定问题122也可询问TVF是确定性的还是访问外部数据源。在动作318,作为优化114的一部分,查询处理器106用一组优化问题124査询信息类134。示例性优化问题124可包括,例如,行是否在列的任何一集合上分组、列是否构成唯一关键字、TVF是确定性的还是访问外部数据源。示例性优化问题124也可请求关于函数的结果的统计信息。这类统计信息可包括,例如,对每一调用或每一参数值范围将返回的行数、对每一列或列组将返回的重复值的数量、以及描述将从函数返回的值的分布的直方图。在动作320,作为执行116的一部分,信息类134用于生成执行类136。在动作322,查询处理器向执行类136发送对TV输出行组128的请求,并且在动作324,执行类136返回所请求的输出行128。由此,本发明的框架提供了一种抽象层次,其中,当调用TVF时,可向查询处理器106提供关于TW的信息,以帮助绑定112和优化114,并依照TVF提供输出行。依照本发明构想的某些示例性TVF操作可包括但不限于,支持诸如XQuery等分层査询操作的计算、用于管理对象关系数据库系统中的类型层次的操作、用于有效地执行数据库系统中到和自用于模型化文件系统的内部路径的目录路径的转换的操作、以及用于在诸如web服务等远程数据源的结果上产生关系视图的操作。由本发明的框架提供的抽象层次使扩展中定义的任意用户能够在受管执行环境(MEE)102中动态地编写,并且能够被集成到框架中。这一集成使用户定义的扩展能够由査询处理器106以与本地扩展相同的方式来评估。另外,用户定义的扩展可被动态地添加到数据库服务器104中而没有性能损失。该方法可以用MEE102的本机受管语言来实现,该语言可用于满足由上述信息类134描述的信息指定的要求。这些方法可任选地用未明确提供的属性的默认值来实现。这允许随时间的推移添加任意的新方法,同时维护与不实现新方法的先前实现的用户定义的扩展的后向兼容性。关于MEE的其它应用可包括从诸如平面文件、磁带设备或数据库服务器1-4外部的其它辅助存储机制等持久存储机制中导入复杂的用户定义类型(UDT)。TVF也可用于当从数据库服务器104外部导入时,确认UDT为结构上正确的。另外,TVF甚至可用于展示关于MEE中的UDT的复杂元数据,因为TVF可用于通过动态地深入到UDT的结构中来显示任意结构的数据。TVF可扩展性的又一益处是TVF提供了展示关系模型内的更复杂编程概念的能力。这类复杂编程概念可包括,例如,列表、目录、数组、集合、属性包(propertybag)。这些概念一般涉及将多个对象组合到单个容器中,以供在诸如由MEE可扩展性变得可用的编程语言中更容易地使用。图4示出了依照本发明的TVF框架可扩展性的示例性方法的流程图。在动作410,MEE102提供了使用户能够定义描述TVF的能力的类的接口。MEE102可提供,例如,使用户能够定义类的文本编辑器接口。示例性MEE类对象示出如下ClassMyTVF{publicstaticIEnumerableMyTVF(){}〃提供"信息对象"属性的方法PublicSQLMetadata[]GetOrderColumns(){〃实现}PublicSQLMetadata口GetUniqueKeyColumns(){〃实现}〃运行时方法PrivatestaticvoidFillRow(objectsource,ISqlUpdatableRecordrecord){〃实现}上述示例性类以C弁定义,然而,依照本发明的类对象可以用MEE102支持的任何语言来定义。在动作412,类被编译成二进制文^=,并且在动作414,将所编译的二进制文件提交给数据库服务器104。在动作416,依照所编译的二进制文件生成TVF。具体地,当结合图2的TW框架实现时,信息类工厂132可使用所编译的二进制文件来生成描述由传入的査询105调用的TVF的能力的信息类134。由于被实现为MEE对象,因此用户定义类的对象代码可由数据库服务器104解释以向编译的对象代码查询相关联的元数据,作为其在TVF框架中的安装或使用的一部分。由此,例如,管理员不需要提供关于用户定义扩展的附加信息。此外,数据库服务器104不需要储存关于所得的信息类134中使用的能力的附加元数据。当框架需要时,可通过检査所编译的受管二进制对象文件来査询元数据。对此概念的扩展可包括,例如,将相关元数据复制到数据库服务器104中的临时位置以供更有效的访问。另外,受管代码可以用例如.EXE或.DLL文件的形式被复制到数据存储610中,作为维护元数据在查询计划的生命周期中都处于一致状态的技术。无论是通过简单的出错或恶意的企图,用户定义的扩展都可包括不正确地描述TVF的属性的元数据。数据库服务器104可通过各种技术来排除这类不正确元数据的风险。在一种这样的技术中,如果不能被证明为可信信息,则所提供的元数据被忽略。在另一种技术中,数据库服务器104可向调用TVF的查询的执行计划提供附加的验证逻辑。在执行期间,如果TVF不如所指示的那样运作,则可生成出错消息。例如,如果用户定义的类指示TVF返回已排序结果,则查询处理器106可添加特殊的处理逻辑来验证TVF的输出是否的确是已排序的。如果TVF无法如所指示的那样执行,则可抛出错误,并且可中止或重新编译査询,并重新启动,同时忽略不正确的用户提供的元数据。除使能够集成用户定义的扩展之外,该框架也使多个关系操作的执行在优化114期间被推入到TVF的执行中。这些关系操作可包括,例如,过滤、投影和组合操作,以及其它定义良好的关系操作。将关系操作的执行推入TVF的执行中导致改进的査询执行效率。例如,如果TVF被定义成返回散列表中的所有元素,则TVF的默认实现可能在每一散列存储桶(bucket)上迭代,并且返回对应表中的每一元素。然而,如果查询将散列表关键字列限制为一单个值,则将这一限制编码到TVF中可能是更有效的,从而避免了枚举所有散列表条目的工作。图5示出了关系操作下推的概念。常规的査询计划510包括过滤操作510a,它将数据表的第一列过滤到5的条目。常规的査询计划510也包括TVF510b。如图所示,过滤操作510a完全与TVF510b分离地执行。相反,在查询计划512中,过滤操作被有效地下推到TVF512a中,由此消除了枚举数据表的所有条目的需求。关系操作下推可通过将额外的隐含自变量编码到TVF来实现。这些自变量向TW传递了附加指令,如"将这一列过滤到这一值",或"对于这一列,扫描从10到20的范围"。这一技术可用于通过以良好定义的顺序提供来传递任意数量的列上的限制,使得TVF能够解释要在哪一列上实施限制。关系操作下推也可通过对每一推入的关系操作(或一组推入的关系操作)生成单独的运行时实现来达到。例如,推入的过滤可以通过在运行时检索行的唯一类来实现。如可从上文清楚的,本发明的各种系统、方法和特征的所有或部分可以用硬件、软件或两者的组合来实现。当以软件实施时,本发明的方法和装置,或其某些方面或部分可以用程序代码(即,指令)的形式来实施。该程序代码可储存在诸如磁、电或光存储介质等计算机可读介质上,包括但不限于,软盘、CD-ROM、CD-RW、DVD-ROM、DVD-RAM、磁带、闪存、硬盘驱动器或任何其它机器可读存储介质,其中,当程序代码被加载到诸如计算机或服务器等机器中并由其执行时,该机器变为用于实施本发明的装置。程序代码在其上执行的计算机一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。程序代码可以用高级过程语言或面向对象的编程语言来实现。或者,程序代码可以用汇编语言或机器语言来实现。在任一情况下,语言可以是已编译或已解释的语言。本发明也可以用程序代码的形式实施来实施,该程序代码通过某一传输介质来发送,如通过电线或电缆、通过光纤、通过包括局域网、因特网或内联网的网络、或通过任一其它形式的传输,其中,当程序代码由诸如计算机等的机器接收并装载到其中由其执行时,该机器变为用于实施本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合,以提供与专用逻辑电路类似地操作的唯一装置。此外,本发明可以结合任何计算机或其它服务器设备来实现,它们可作为计算机网络的一部分部署,或在分布式计算环境中部署。在这一点上,本发明涉及具有任意数量的存储器或存储单元以及在任意数量的存储单元或巻上发生的任意数量的应用程序和进程的任何计算机系统或环境,它可结合依照本发明在数据库存储中持久保存对象的进程使用。本发明可应用于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户机计算机的环境。本发明也可应用于独立的计算设备,它具有编程语言功能、用于结合远程或本地服务生成、接收和发送信息的解释和执行能力。分布式计算便于通过计算设备和系统之间的交换共享计算机资源获得服务。这些资源和服务包括但不限于,信息交换、高速缓存存储和文件的盘存储。分布式计算利用了网络连接,从而允许客户机充分利用其集体能力来有益于整个企业。在这一点上,各种设备可具有蕴含结合本发明的对象持久存储执行的处理的应用程序、对象或资源。图7提供了示例性网络化或分布式计算环境的示意图。分布式计算环境包括计算对象10a、10b等,以及计算对象或设备110a、110b、110c等。这些对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象可包括诸如PDA、电视机、MP3播放器、个人计算机等的相同或不同设备的各部分。每一对象可通过通信网络14与另一对象通信。该网络本身可包括向图7的系统提供服务的其它计算对象和计算设备,并且本身可表示多个互连的网络。依照本发明的一个方面,每一对象10a、10b等或110a、110b、110c等可包含可以利用API或其它对象、软件、固件和/或硬件来请求对用于实现本发明的对象持久存储方法的过程的使用的应用程序。可以理解,诸如110c等对象可以主存在另一计算设备10a、10b等或110a、110b等上。由此,尽管所描述的物理环境可以将连接的设备示出为计算机,然而这一说明仅是示例性的,并且该物理环境可替换地被描绘或描述为包括诸如PDA、电视机、MP3播放器等各种数字设备,诸如接口、COM对象等的软件对象。有各种支持分布式计算环境的系统、组件和网络配置。例如,计算系统可以通过有线或无线系统、局域网络阔的分布式网络连接在一起。当前,许多网络耦合至因特网,后者为广阔的分布式计算提供了基础结构并包含许多不同的网络。任一基础结构可用于关联本发明所作出的示例性通信。因特网通常指使用TCP/IP协议套件的网络和网关的集合,该协议在计算机联网领域中是公知的。TCP/IP是"传输控制协议/互联网协议"的縮写。因特网可被描述为由执行允许用户通过网络交互和共享信息的联网协议的计算机互连的地理上分布的远程计算机网络。由于这类广泛分布的信息共享,诸如因特网等远程网络至今发展成一种开放系统,开发者可对该开放系统设计用于执行专用操作或服务的应用程序,在本质上没有限制。由此,网络基础结构启用了诸如客户机/服务器、对等或混合体系结构等大量网络拓朴。"客户机"是使用它所不相关的另一类或组的服务的类或组的成员。由此,在计算时,客户机是进程,目卩,粗略地而言是一组请求由另一程序提供的服务的指令或任务。客户机进程使用所请求的服务,而无需"知道"关于其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中,尤其是网络化系统中,客户机通常是访问由另一计算机,如服务器提供的共享网络资源的计算机。在图7的示例中,计算机110a、110b等可以被认为是客户机,而计算机10a、10b等可以被认为是服务器,尽管任何计算机可以被认为是客户机、服务器或两者,这取决于环境。这些计算设备的任一个可以用蕴含本发明的对象持久存储技术的方式处理数据。服务器通常是可通过远程或本地网络,如因特网访问的远程计算机系统。客户机进程可以在第一计算机系统中为活动,而服务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,由此提供了分布式功能并允许多个客户机利用服务器的信息收集能力。依照本发明的持久存储机制使用的任何软件对象可以在多个计算设备上分布。客户机和服务器可使用由协议层提供的功能彼此通信。例如,超文本传输协议(HTTP)是一种结合万维网(WWW)或"web"使用的常见协议。通常,计算机网络地址,如互联网协议(IP)地址或诸如统一资源定位器(URL)等其它引用,可用于彼此标识服务器或客户机计算机。网络地址可被称为URL地址。通信可在任何可用通信介质上提供。由此,图7示出了具有通过网络/总线与客户机计算机通信的服务器的示例性网络化或分布式环境,其中可实施本发明。网络/总线14可以是LAN、WAN、内联网、因特网或某一其它网络介质,它具有多个客户机或远程计算设备110a、110b、110c、ilOd、110e等,如便携式计算机、手持式计算机、瘦客户机、联网设备或其它设备,如依照本发明的VCR、TV、烤箱、加热器等等。由此,构想本发明可应用于任何计算设备,期望结合这些设备来维护持久存储的对象。例如,在其中通信网络/总线14是因特网的网络环境中,服务器10a、10b等可以是客户机110a、110b、110c、110d、110e等通过诸如HTTP等多种已知协议与其通信的服务器。服务器10a、10b等也可担当客户机110a、110b、110c、110d、110e等,这可以是分布式计算环境的特征。通信可以在适当时是有线或无线的。客户机设备110a、110b、110c、110d、110e等可以通过或不通过通信网络/总线14通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可以有或没有其控制的网络化方面。每一客户机计算机110a、110b、110c、110d、110e等以及服务器计算机10a、10b等可以具备各种应用程序模块或对象135,并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上可储存文件或数据流,或者可向其下载、发送或移植文件或数据流的各部分。任一计算机10a、10b、110a、110b等可以负责数据库、存储器或用于储存依照本发明处理的数据的其它存储元件20的维护和更新。由此,本发明可以用于具有可访问计算机网络/总线14或与其交互的客户机110a、110b等,以及可与客户机计算机110a、110b等交互的服务器计算机10a、10b等,以及其它类似的设备和数据库20的计算机网络环境中。图7及以下讨论旨在提供可结合其来实现本发明的合适的计算设备的简要概括描述。例如,图7所示的客户机和服务器计算机或设备的任一个可采用这一形式。然而,应当理解,所有种类的手持式、便携式和其它计算设备和计算对象可被构想为结合本发明使用,g卩,计算环境中可生成、处理、接收和/或发送数据的任何地方。尽管下文描述的通用计算机,然而这只是一个示例,本发明可以用具有网络/总线互操作性和交互的瘦客户机来实现。由此,本发明可以在其中蕴含了极少或最小客户机资源的网络化主存的服务的环境中实现,如其中客户机设备仅担当如放置在设备中的对象等对网络/总线的接口的网络化环境。本质上,可储存数据或从其检索数据或向另一计算机发送数据的任何地方都是用于本发明的对象持久存储方法的操作的合乎需要的或合适的环境。尽管并非所需,但本发明可通过由设备或对象的服务开发者使用的操作系统来实现,和/或包括在依照本发明操作的应用程序或服务器软件中。软件可以在诸如由客户机工作站、服务器或其它设备等一个或多个计算机执行的软件模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。通常,程序模块的功能可如各实施例中所需的进行组合或分布。此外,本发明可以用其它计算机系统配置和协议来实施。其它适用于本发明的公知的计算系统、环境和/或配置包括但不限于,个人计算机(PC)、自动售货机、服务器计算机、手持式或希望设备、多处理器系统、基于微处理器的系统、可编程消费者电子产品、网络PC、电器、灯、环境控制元件、小型机、大型计算机等等。图8示出了适合在其中实现本发明的计算系统环境100的一个示例,尽管如可从上文中清楚的,计算系统环境IOO仅为合适的计算环境的一个示例,并非暗示对本发明的使用范围或功能的局限。也不应将计算环境ioo解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。参考图8,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线(也称为Mezzanine总线)。计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机UO访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语"已调制数据信号"指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM131中。RAM132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图8示出了操作系统134、应用程序135、其它程序模块136和程序数据137。计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图8示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对可移动、非易失性光盘156,如CDROM或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。上文讨论并在图8示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图8中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(如鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。图形接口182也可被连接到系统总线121。一个或多个图形处理单元(GPU)184可与图形接口182通信。监视器191或其它类型的显示设备也通过接口,如视频接口l卯连接至系统总线121,视频接口190进而可与视频存储器186通信。除监视器191之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,它们通过输出外围接口195连接。计算机110可以在使用到一个或多个远程计算机,如远程计算机180的逻辑连接的网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括许多或所有相对于计算机110所描述的元件,尽管在图8中仅示出了存储器存储设备181。图8描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络/总线。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。当在LAN网络环境中使用时,计算机IIO通过网络接口或适配器170连接至LAN171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图8示出远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。总结由此,揭示了调用表值函数(TVF)的査询的有效评估系统和方法。本发明提供了一种具有期望的可扩展性属性和通过与查询处理器中的优化基础结构紧密地结合来最小化性能退化的能力的框架。本发明也使诸如公共语言运行库(CLR)等受管执行环境能够有效和动态地用用户提供的代码来扩展数据库引擎的逻辑。尽管结合各附图的较佳实施例描述了本发明,然而,可以理解,可以在不脱离本发明的情况下使用其它类似的实施例或对所描述的实施例作出修改和添加,以执行本发明的相同功能。因此,本发明不应限于任一单个实施例,而是相反,应当依照所附权利要求书的宽度和范围来解释。权利要求1.一种处理调用表值函数来提供结果的查询的方法,所述方法包括生成描述所述表值函数的能力的信息类;用至少一个绑定问题的组来查询所述信息类;用至少一个优化问题的组来查询所述信息类;依照响应于所述绑定问题组和所述优化问题组所提供的信息来执行所述查询。2.如权利要求1所述的方法,其特征在于,执行所述査询包括-生成对应于所述表值函数的执行类;向所述执行类请求一组数据表行作为输出;以及从所述执行类接收所请求的行。3.如权利要求l所述的方法,其特征在于,包括用绑定问题组查询所述信息类,所述绑定问题组包括以下之一由所述表值函数返回的多个列、由所述表值函数返回的列名、以及由所述表值函数返回的列的类型。4.如权利要求1所述的方法,其特征在于,包括用优化问题组查询所述信息类,所述优化问题组包括以下之一行是否在一组列上以己排序次序分组、列是否是唯一关键字列、表值函数是否是确定性的、以及表值函数是否访问外部数据源。5.如权利要求l所述的方法,其特征在于,包括用优化问题组查询所述信息类,所述优化问题组包括对关于所述表值函数的结果的统计信息的请求。6.如权利要求5所述的方法,其特征在于,包括用优化问题组査询所述信息类,所述优化问题组包括对统计信息的请求,所述统计信息包括以下之一将对所述表值函数的每一调用将返回的多个行、对参数值范围将返回的多个行、对一组列将返回的多个重复值、以及描述从所述表值函数将返回的值的分布的直方图。7.如权利要求l所述的方法,其特征在于,还包括从受管执行环境中生成的用户定义类中生成所述信息类。8.如权利要求l所述的方法,其特征在于,还包括依照响应于所述绑定问题组提供的信息绑定所述查询。9.如权利要求1所述的方法,其特征在于,还包括依照响应于所述优化问题组提供的信息优化所述査询。10.如权利要求l所述的方法,其特征在于,执行所述査询包括验证所述表值函数的能力的有效性;以及如果所述表值函数的能力无效,则生成一指示所述表值函数将不提供期望的输出的出错消息。11.如权利要求10所述的方法,其特征在于,还包括如果所述表值函数的能力无效,则中止所述査询的执行。12.如权利要求1所述的方法,其特征在于,还包括调用所述表值函数以提供支持分层查询操作的计算。13.如权利要求1所述的方法,其特征在于,还包括调用所述表值函数以提供用于对数据库系统中的文件系统建模的目录路径的转换。14.如权利要求1所述的方法,其特征在于,还包括调用所述表值函数以提供来自远程数据源的结果。15.—种用于表值函数的可扩展生成的方法,所述方法包括提供使用户能够定义描述所述表值函数的能力的类的接口;将所述用户定义的类编译成二进制数据文件;以及向数据库服务器提交所述二进制数据文件,所述数据库服务器依照所述二进制数据文件生成表值函数。16.如权利要求15所述的方法,其特征在于,包括在受管执行环境中提供所述接口。17.如权利要求15所述的方法,其特征在于,还包括执行调用所述表值函数来提供结果的査询。18.如权利要求15所述的方法,其特征在于,还包括提供使用户能够定义描述所述表值函数的査询绑定和査询优化能力的类的接口。19.一种用于有效地处理调用表值函数来提供结果的查询的方法,所述方法包括标识用于执行所述査询的关系操作;以及将所述关系操作的执行推入到所述表值函数的执行中;以及通过调用包括所推入的关系操作的表值函数来执行所述査询。20.如权利要求19所述的方法,其特征在于,将所述关系操作的执行推入到所述表值函数的执行中包括将所述关系操作编码为所述表值函数的隐含自变量。21.如权利要求19所述的方法,其特征在于,将所述关系操作的执行推入到所述表值函数的操作包括通过一在査询期间生成一组输出行的唯一类实现所述关系操作。22.—种用于处理调用表值函数来提供结果的查询的系统,所述系统包括一信息类生成器,它生成描述所述表值函数的能力的信息类;以及一査询处理器,它用绑定问题和优化问题查询所述信息类,并依照响应于所述绑定问题和所述优化问题提供的信息执行所述査询。23.如权利要求22所述的系统,其特征在于,还包括一受管执行环境,它具有使用户能够定义从中可生成所述信息类的用户定义类的接口。24.如权利要求22所述的系统,其特征在于,所述绑定问题组包括以下之一由所述表值函数返回的多个列、由所述表值函数返回的列名、以及由所述表值函数返回的列的类型。25.如权利要求22所述的系统,其特征在于,所述优化问题组包括以下之一是否行在一组列上以已排序次序被分组、列是否为唯一关键字列、所述表值函数是否为确定性的、以及所述表值函数是否访问外部数据源。26.如权利要求22所述的系统,其特征在于,所述优化问题组包括对关于所述表值函数的结果的统计信息的请求。27.如权利要求26所述的系统,其特征在于,所述统计信息包括以下之一对所述表值函数的每一调用将返回的多个行、对参数值范围将返回的多个行、对一组列将返回的多个重复值、以及描述从所述表值函数将返回的值的分布的直方图。28.如权利要求22所述的系统,其特征在于,用于执行所述査询的关系操作被推入到所述表值函数中。29.如权利要求28所述的系统,其特征在于,所述关系操作是过滤、投影和组合操作之一。30.—种其上储存用于执行以下步骤的计算机可执行指令的计算机可读介质生成描述表值函数的能力的信息类;用至少一个绑定问题的组査询所述信息类;用至少一个优化问题的组查询所述信息类;以及依照响应于所述绑定问题组和所述优化问题组所提供的信息执行查询。31.如权利要求30所述的计算机可读介质,其特征在于,用于执行所述查询的计算机可执行指令包括计算机可执行指令,用于生成对应于所述表值函数的执行类;向所述执行类请求一组数据表行作为输出;以及从所述执行类接收所请求的行。32.如权利要求30所述的计算机可读介质,其特征在于,所述绑定问题组包括以下之一由所述表值函数返回的多个列、由所述表值函数返回的列名、以及由所述表值函数返回的列的类型。33.如权利要求30所述的计算机可读介质,其特征在于,所述优化问题组包括以下之一行是否在一组列上以已排序次序被分组、列是否为唯一关键字列、所述表值函数是否为确定性的、以及所述表值函数是否访问外部数据源。34.如权利要求30所述的计算机可读介质,其特征在于,所述优化问题组包括对关于所述表值函数的结果的统计信息的请求。35.如权利要求34所述的计算机可读介质,其特征在于,所述统计信息包括以下之一对所述表值函数的每一调用将返回的多个行、对参数值范围将返回的多个行、对一组列将返回的多个重复值、以及描述从所述表值函数将返回的值的分布的直方图。36.如权利要求30所述的计算机可读介质,其特征在于,用于生成所述信息类的计算机可执行指令包括用于从在一受管执行环境中生成的用户定义类生成所述信息类的计算机可执行指令。37.如权利要求30所述的计算机可读介质,其特征在于,还包括用于依照响应于所述绑定问题组所提供的信息绑定所述查询的计算机可执行指令。38.如权利要求30所述的计算机可读介质,其特征在于,还包括用于依照响应于所述优化问题组所提供的信息优化所述查询的计算机可执行指令。39.如权利要求30所述的计算机可读介质,其特征在于,用于执行所述查询的计算机可执行指令包括计算机可执行指令,用于验证所述表值函数的能力的有效性;以及如果所述表值函数的能力无效,则生成一指示所述表值函数将不提供期望输出的出错消息。40.如权利要求30所述的计算机可读介质,其特征在于,还包括用于将用于执行所述查询的关系操作推入所述表值函数中的计算机可执行指令。全文摘要本发明描述了一种用于在关系型数据库服务器中实现表值函数(TVF)的有效和快速的框架(图2)。该框架提供了期望的可扩展性属性,并具有通过与查询处理器中的优化基础结构紧密集成来最小化性能退化的能力(图2,106)。本发明也使诸如公共语言运行库(CLR)等受管执行环境(MEE)能够有效和动态地用用户提供的代码扩展数据库引擎的逻辑(图2,132、134、136)。文档编号G06F7/00GK101223522SQ200480001694公开日2008年7月16日申请日期2004年7月29日优先权日2004年3月19日发明者B·塞兹金,C·J·坎宁安,R·凡卡特施申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1