数据库管理系统中的表达式混合求值的制作方法

文档序号:6457093阅读:153来源:国知局

专利名称::数据库管理系统中的表达式混合求值的制作方法
技术领域
:本发明涉及数据库管理系统中的表达式求值。
背景技术
:数据库管理系统在运作时会计算标量表达式。两种众所周知的变数求值方法是惰性求值及及早求值。惰性求值方法只会在需要数值时才对一个标量表达式进行求值。相反,及早求值会在对表达式求值之前先对其依赖的所有变数进行求值。惰性求值避免对一些不必要的表达式进行求值,因此比及早求值更有效率。相反,即使子表达式在一个表达式图表中被多次使用,及早求值方法也只会对这个子表达式进行一次求值。通过这种方式,及早求值相比惰性求值可以节省对某一子表达式求值的次数。在惰性求值中浪费掉的求值是来自于对一个已有所需数值的子表达式进行重复求值(因为这个子表达式早己使用子表达式中变数的当前数值进行求值)。在这种情况下,记忆化是一种用于避免浪费求值的众所周知的方法。带有记忆化的惰性求值只会在有需要以及当前并不存在的时候来对一个变数求值。这使得变数求值的次数减到最低。记忆化也可用于及早求值,如果变数已经用需要的数值进行求值,就可以节省求值。当一些被预测求值的变数最终未被使用时,具有记忆化的及早求值就会比具有记忆化的惰性求值对更多表达式进行求值。从以上的描述,具有记忆化的惰性求值看起来可能是一致的最佳的方法。不过这并不正确具有记忆化的惰性求值将表达式求值次数减到最少,但是求值次数减少的代价是增加记忆的簿记操作,而这可能会超过保存求值的成本。没有单个方法(及早或惰性、具有或不具有记忆化)在所有情况下都是最佳的。因此,在数据库管理系统中需要有一种表达式求值的混合方法。
发明内容本发明是涉及一种数据库管理系统(DBMS)中表达式求值的系统、方法及计算机程序产品。简单而言,本发明使用了混合方式去进行表达式求值。本发明的一个实施方案,是针对每个表达式中的每一个变数,基于成本估算而选择求值的策略。该变数可以使用惰性求值,或者是及早求值去进行求值。此外,还会决定是否使用记忆化。一个成本优化器会为每一个表达式中的每一个变数选择一个评估策略,而这些求值策略会在执行时使用。以下结合附图的书面说明,会对本发明其他的特征及优点和各实施例的结构及操作,作进一步的描述。本发明不只限于这里描述的具体实施例,这些实施例只是用来对本发明进行举例描述的。基于这里所述的教导的其它实施例对于相关
技术领域
的一般技术人员来说将是明显的。这里所包括的附图作为说明书的一部分,描述了本发明,并且结合书面说明进一步描述了本发明的原理,和令到相关
技术领域
的一般技术人员可以制造及使用本发明。图l显示了根据本发明的一个实施例的数据库管理系统。图2显示了一个可以实施本发明的实施例中的组件的一个范例计算机系统。图3-6是用作描述表达式惰性求值方法的语句解析树的示例。图7是一个用来描述本
发明内容的示例表达式图表。图8是根据本发明的一个实施例的表达式混合求值方法的流程图。图9是根据本发明的一个实施例的判断表达式是否严格地需要的方法的流程图。图10是一个用来描述本
发明内容的示例表达式图表。图11是根据本发明的一个实施例的对非严格表达式求值的方法的流程图。图12是根据本发明的一个实施例的混合求值优化器的流程图。在下面的具体说明并连同附图里,本发明的特性和优点会更明显。附图中相似的参考号码通常代表了相同、功能相似及/或结构相似的部分。一般来说,参考号码中最左方的数字代表了该要素首次出现的附图号码。具体实施例方式1、数据库管理系统概览及示例计算机实施本发明是涉及一个数据库管理系统(DBMS)中表达式求值的系统、方法及计算机程序产品。本发明可以在图1中的示例客户/服务器数据库系统100上运行。系统100包括了一个或多个客户端110在网络120上与服务器130相连接。服务器130上安装了一个数据库管理系统(DBMS)140。需要注意的是,图1所示的和这里讨论的客户/服务器数据库系统100只是为了作为一个例子进行而并非限制。本发明不限于图l中的例子。系统运作时,客户端110向数据库管理系统140发出SQL语句来在数据库表格150中的列155中储存或提取数据。数据库管理系统140中的引擎160会处理从客户端110收到的SQL语句。SQL是众所周知的,并在多份公开出版物中有记载,包括美国国家标准局出版的"信息技术-数据库语言-SQL",作为美国国家标准ANSI/ISO/IEC9075:1992,在此编入本文作为参考。引擎160包括解析器161、标准化器163、编译器165、执行单元169及访问方法170。现在开始概括地描述它们。从客户端110收到的SQL语句会被送到解析器161里被转化为査询树,查询树是一种二元树资料结构,它用一种方便系统运作的格式去表示查询的各个部分。在这点上,解析器161使用了众所周知的解析方法(例如递归下降解析法).标准化器163会将查询树标准化。标准化包括例如除去重复的数据等。除此之外,标准化器163会进行侦错,例如确保查询中的表格名称及列名称是有效的(例如,是存在的并且相关联)。最后,标准化器163亦可能査找所有存在的参照完整性约束并将它们加入到查询内。查询树会在标准化后被送到编译器165,编译器165包括了优化器166及代码生成器167。优化器166负责优化査询树。优化器166执行成本估算来制定一个査询执行计划。优化器166会比如说,选择表格连接的次序、以及选择相关的索引145。因此优化器166会对查询进行分析并决定最佳的执行计划,从而,在执行査询时执行单元169会调用特别的访问方法170。本发明的一个实施例中,本发明的系统及部件是使用众所周知的计算机所实现的,例如图2所示的计算机202。例如,计算机202可以用来实现客户端110及服务器130。计算机202可以是任何在巿场上有的,可以执行这里所述的功能的商用计算机,例如国际商业机器公司、苹果电脑公司、太阳计算机系统、惠普、戴尔、康柏电脑公司、数位、克雷计算机公司等生产的计算机。计算机202包含一个或多个处理器(或称中央处理器,CPU),例如处理器206。处理器206与通讯总线204相连接。计算机202亦包含主内存208,例如随机存取存储器(RAM)。主内存208储存了控制逻辑228A(计算机软件)及数据。计算机202有一个或多个辅助存储器210。辅助存储器210可以包括磁碟机212、可卸载式存储装置或驱动器214,以及其他种类的存储器,例如记忆卡及记忆棒。可卸载式存储驱动器214可以是软盘驱动器、磁带驱动器,光盘驱动器、光学储存器、磁带备份、DVD驱动器等。可卸载式存储驱动器214与可卸载式存储单元216相作用。可卸载式存储单元216包括储存了软件228B(控制逻辑)及/或数据的计算机可用或可读媒体224A。可卸载式存储单元216可以是软盘、磁带、光盘、DVD、光学存储碟片、或任何计算机数据储存装置。可卸载式存储器214利用公知的手段在可卸载式存储单元216上读取或储存内容。计算机202还包括输入/输出/显示装置222,如监视器、键盘、指点装置等等。计算机202还包括通讯或网络介面218。网络介面218让计算机202可以与远程装置通讯。例如,网络介面218可以让计算机202在网络上或媒介224B上(一种计算机可用或可读媒介)通讯,如局域网络、广域网络、互联网等。网络介面218可以以有线或无线的方式与远程地点或网络相连接。控制逻辑228C可以通过通讯媒介224B,从计算机202送出,或送到计算机202。计算机202可以通过通讯媒介224B接收或传送由控制逻辑230所调制的载波(电磁信号)。任何包括了储存有控制逻辑(软件)的计算机可用或可读媒体的仪器或产品,在这里被称为计算机程序产品或程序储存装置。这些包括但不限于计算机202、主内存208、辅助存储器210、可卸载式存储单元216及控制逻辑230所调制的载波。这些储存了控制逻辑的计算机程序产品,在被一个或多个数据处理装置执行的时候,会令数据处理装置根据这里所述的方式运作,表示了本发明的实施例。本发明可与除了这里所述的之外的软件、硬件、及/或操作系统一起工作。任何适于执行本说明书所述功能的软件、硬件、及操作系统均可被使用。2、表达式混合求值根据本发明的一个实施例,本发明利用混合懒惰/及早方法来对表达式进行求值,优选地由编译器165在建立查询执行计划(QEP)阶段(虽然这个实施例只是为了说明用途而提到,并不构成限制)时执行。根据一个实施例,本发明涉及标量表达式。表l列出了标量表达式的例子。<table>tableseeoriginaldocumentpage11</column></row><table>在一个实施例中,标量表达式在具有执行位置(XL)的査询执行计划中进行求值。执行位置是一个査询执行计划(QEP)中,查询执行操作符需要一组表达式的一个特定点。每一个查询执行计划中的执行位置都对一组表达式求值。一个具体的例子是应用搜索条件例如"X+1<3"的过滤操作符,或者是一个对包括三个表达式"X+1,X+2,X+3"的SELECT列表进行求值的投影运算符。在一个特定执行位置的求值过程中,叶表达式的值是不变的。因此,如果一个执行位置中使用了一个表达式作为两个或更多表达式的变数,则其将在该执行位置的一个特定调用的所有位置具有相同的值。考虑图7中的例子,表达式708"y+l"作为706和707的变数。表达式708的值在该执行位置的一个特定求值的所有位置都相同。在该执行位置的随后调用中,变数709可能会改变(710是常数,不能被改变)。如果变数709和在前一个调用里是一样的,贝IJ708的值也是一样的。惰性和及早的对表达式求值的方式是众所周知的。为了帮助理解本发明。这些方式将在下面进行简单描述。在惰性方式(也被称为按名传递),变数只在它们被母变数需要的时候才被求值。当它们每次被需要的时候,都会被求值。考虑图7中的示例表达式图表700,表示了以下的表达式(x<5)OR(10<(y+l)AND(y+l)<20)。在执行位置参照表达式图表700的一个特定求值中,可能出现的情况是条件702被满足。在按名传递方法中,对执行位置的这种调用会导致只有702和701被求值。如果,换过来,702不成立(非真),则求值会进行至705,706,然后是708。如果条件706通过(为真),则执行会进行至707,然后是708。在按名传递里,表达式708会被重新求值,即使从上一次求值以来它的值并没有发生过改变(因为叶变数在一个执行位置的一个调用中不会改变)。这表示是一个浪费的求值。如前所述,记忆化可以与惰性求值一起使用(该修改也被称为按需传递)。有了记忆化,如果一个表达式己经根据适当的变数值进行过求值,则其不会被再次求值。该记忆化产生了簿记开销,但是可以避免浪费求值。根据一个实施例,记忆化可以通过使用指示一个表达式是否有效的标志实现。这个例子不是限制性的,其它形式的记忆化也是可能的。考虑图3中的示例语句解析树302,它表示下面的表达式x+2*y在基于标志的记忆化实现中,标志304、306、308、310、312为每一个节点保持。这些标志304、306、308、310、312表示节点是否具有有效的值。表达式的求值于根开始,或者是"+"操作符,并注视根的变数,因为它们需要用来进行"+"的求值。如果对应变数的节点是无效的,则需进行工作以使其有效。在图3的例子中,变量X是有效的(因为它之前己经被赋予一个值),但是"*"操作符还不是有效的(如其标志308所示)。相应地,"*"的变数被观察以判断它们是否有效。在这种情况下,常数"2"是有效的(如其标志310所示),因为其是变量y(如其标志312所示)。相应地,子表达式2*7被求值,从而导致对应于"*"操作符的标志308变成"有效"。这显示在图4中。之后,"+"操作符的所有变数都是有效的,因此整个表达式x+2*y被求值,而相应的标志304的值变为有效。这显示在图5中。在启用包括表达式304的执行位置之后,该执行位置的后续调用会重复使用已有的表达式304的值。如果一个叶表达式发生改变,则需要簿记操作以更新记忆化结构。考虑图6中的示例,变量y被赋予了一个新的值。随着按需调用方法所需要的基于标志的记忆化实现,反向链接602和604被保持以在整个语句解析树302中使这个改变起伏,并改变对应"*"和"+"的操作符的标志308和304为"无效"。现在会描述及早方法(也被称为按值传递)。根据及早方法,表达式E的所有变数都会在对E求值之前先进行求值,而不管它们的值是否需要用于计算E的结果。之后,表达式才被求值。如果静态分析可以显示该求值必须早于同一个执行位置内的变数的在后使用,则该同一执行位置的同一变数的在后使用能被满足,而不需要再次计算数值或检查簿记信息。再次考虑图7中的示例表达式图表,表示一下表达式(x<5)OR(10<(y+1)AND(y+1)<20)假设700中的所有变数都被及早求值。求值是根据最深最先的次序由左到右进行的702、708、706、707、705、701。所有的变数都在他们的母表达式开始求值之前被求值。注意表达式708在该执行位置的一个特定调用中只进行一次求值。在第一次求值之后,可从统计上得知708的值对于执行位置当前调用的余下来说都是可用的,因此在对707求值的时候708不会被重新计算。留意如果702或705其中一个是真,OR就返回"真"。也就是说,OR有时候可以通过对其变数的子集求值来进行求值。在这类情况下,及早求值的效率不高,因为它要求对所有变数进行求值,而不管是否需要它们来对表达式求值。在这点上,惰性方法会更加有效。由于它只对那些需要的变数求值,如果用变数的子集来对表达式求值是可能的(在图7的例子中,如果702(x<5)返回真值的话,705不会被求值),则不需要对所有的表达式变数进行求值。如上所述,然而,惰性方法也是没有效率的。在没有记忆化(按名传递)的情况下,惰性方法在702和706为真的时候会对708进行两次求值。相反,如果使用了记忆化(按需传递),则额外的管理开销将需要用于记忆化的实现。记忆化也可以用于及早策略。与懒惰策略中的记忆化相比,及早策略中的记忆化缓存只被观察一次。对于变数之后的使用,其值被直接读取,因为知道及早求值可以保证对于执行位置的调用,一个适当的值已经被计算。记忆化对及早求值带来的节省只是避免了在一个执行位置的后续调用中重复对变数进行求值。在惰性策略中,节省也可以通过避免在执行位置的单一调用中多次求值来实现。本发明是一种惰性方法和及早方法的混合,并相应地克服它们的缺陷。根据本发明的一个实施例的混合方法现在会对照图8中的流程图802进行描述。对每个表达式和子表达式,流程图802都执行。在步骤804中,会判断一个正在处理的表达式是否是一个"严格表达式"。严格性分析是一种总所周知的技术来判断对于一个表达式树,哪些变数是严格需要的。一个表达式,如果它所有的变数都必须在它本身被求值之前进行求值,则该表达式是严格的。否则,如果某些变数求值可以延迟或者避免,则该函数称为非严格函数。举例来说,乘法是一个严格函数。逻辑构造(AND、OR等)以及条件通常都是非严格的。就算一个表达式是非严格的,它的一个或多个变数也可能是严格的。举例来说,IF表达式永远对谓词变数进行求值。逻辑结构也必须对至少一个变数进行求值。步骤804的运作现在会根据本发明的一个实施例对照图9进行进一步的描述。在步骤902中,会判断表达式是否属于一个被执行位置求值的一组表达式。在步骤904中,会判断表达式是否能通过一个严格要求的表达式的严格边缘触及到。如果步骤902或904其中任何一个为真,则会判断表达式在执行位置(如步骤906所示)中是否严格需要。如果是的话,步骤804就会返回真值。如果步骤902和904都不成立,则表达式将被判断为不是严格需要的(如步骤908所示),在此种情况下步骤804会返回非真值。举例来说,可以看看图IO中的示例表达式图表IOOO,该图表表示了表达式(x<5)OR(10<(y+1)AND(y+1)<20)。考虑子表达式1002(x〈5)的第一次求值。对于"<"函数的求值而言,步骤902会返回真值,因为l)1001被执行位置计算以及2)小于'、"函数1002通过1001"V"的严格边缘触及。相反,1005不是严格需要的,因为它并不被任何执行位置计算的表达式仅通过严格边缘触及。我们现在定义什么叫做一个变数严格超前另一个变数。如果表达式E1和E2具有一个共同的祖先EP,而E1能从EP通过严格边缘触及,E2能从在EP到E1的严格路径之后求值的路径上的边缘触及,则E1严格超前E2。如果一个表达式严格超前它自己,并且及早求值策略被用于第一次求值,则该表达式其后的使用可以直接满足,而不需要对该表达式进行求值或检査记忆化缓存。举例来说,在图7中,表达式708严格超前它自己,因为有一个共同祖先705和一条到708的严格路径(705,706,708)以及一条后续路径(705,707,708)到达同一个变数。如果708用及早策略在706上下文中求值,则表达式707可以再次使用已经计算过的数值,而不需要任何运行时开销。我们现在给出一个如图12所示的混合求值优化器的示范实施例。在步骤1201中,对于每一个表达式,该方法判断母表达式的数量。如果表达式具有一个母表达式,则该表达式会通过惰性求值策略(步骤1202)进行求值。这些表达式在执行位置(单个母表达式)中最多只会进行一次求值,所以惰性方法能达到最佳成本。如果表达式具有多个母表达式,如果步骤1201所判断的,则会在步骤1203中进行严格性分析。对于那些具有多个母表达式的表达式,将会使用及早策略(1204)。这些表达式在执行位置中将需要至少一次,因此及早策略会达到最佳性能。对于已经在步骤1202中被指定了求值策略的表达式,该方法会判断是否根据成本使用记忆化(1205)。回到步骤1203,对于那些具有多个不是被执行位置严格需要的母表达式的表达式,步骤1206会被执行。注意执行位置中可能有调用完全不需要这些表达式的值,因此及早策略不一定是最好的。相反,由于执行位置中有很多使用,使用需要对表达式进行多次求值或者,至少多次检查记忆化结构的惰性策略可能更加昂贵。相应的,在步骤1206中(通常但不是永远用于执行位置中的表达式的一个小子集),基于成本的优化器考虑对每一个变数进行根据四种策略(惰性、惰性记忆化、及早、及早记忆化)中的每一种进行求值的成本。能够最大幅度减少预期成本的策略分配将会被选择。根据本发明的一个实施例的步骤1206的操作现在将会参照图11进行描述。在步骤1102中,进行及早求值的成本被估算。使用记忆化的好处也会被估算。如同相关领域的技术人员可以理解的,数据库管理系统140维护着求值函数成本的记录和统计数据(比如函数需要花费多久时间求值、对函数求值需要使用的资源等等)。相应的,使用这些记录和统计数据来对表达式进行及早求值所花费的成本进行估算的技术,对于相关领域的普通技术人员来说是明显的。在步骤1104中,使用惰性方法对表达式求值的成本被估算。使用记忆化的好处也会被估算。该估算包括执行惰性求值的成本、以及与惰性处理相关的管理成本。如同相关领域的技术人员可以理解的,数据库管理系统140还维护着保持和处理有效标志(例如图6中标志304、306、308、310、312)及反向链接(例如图6中的反向链接602和604)的记录和统计数据。相应的,使用数据库管理系统140维护着的记录和统计数据来对表达式进行惰性求值所花费的成本进行估算的技术,对于相关领域的普通技术人员来说是明显的。在步骤1106中,当惰性求值的估算成本少于及早求值的估算成本时,就会对表达式进行惰性求值。否则,表达式会被及早求值。记忆化在它能减少査询执行计划的估计成本时就会被使用。3、结论虽然本发明的许多不同实施例都在以上描述,需要了解的是它们只是作为范例来展示,而不是限制。对于相关领域的技术人员来说,可以在不偏离本发明的精神和附带的权利要求书所定义的范围的情况下,对其进行不同形式和细节上的改变。相应地,本发明的含义和范围不应该被上述的任何一个示范实施例所限制,而是应该只根据所附的权利要求书和它们的等同物所定义。权利要求1、一种在数据库管理系统中对表达式求值的方法,包括(a)判断表达式是否严格需要;(b)如果该表达式是严格需要的,则对其进行及早求值;以及(c)如果该表达式不是严格需要的,则根据及早方法和惰性方法的估算成本对该表达式使用及早方法或惰性方法进行求值。2、如权利要求l所述的方法,其中步骤(a)包括如果(i)和(ii)中的一个或多个为真,则判断所述表达式是否严格需要;如果(i)和(ii)为非真,则判断所述表达式是否不是严格需要的;其中(i)和(ii)定义如下(i)该表达式是一个执行位置所严格需要的;(ii)该表达式能通过一个严格要求的表达式的一个或多个严格边缘触及到。3、如权利要求l所述的方法,其中步骤(C)包括判断对所述表达式进行及早求值的第一估算成本;判断对所述表达式进行惰性求值的第二估算成本;如果第一估算成本小于第二估算成本,则对该表达式进行及早求值;以及如果第二估算成本小于第一估算成本,则对该表达式进行惰性求值。4、如权利要求3所述的方法,其中所述第二估算成本包括对该表达式进行求值的估算成本和与有效标志及反向链接相关联的估算管理成本。5、如权利要求l所述的方法,其中所述表达式是标量表达式。6、一种计算机程序产品包括记录有计算机程序逻辑,以允许处理器在数据库管理系统中对表达式进行求值的计算机可用媒体,该计算机程序逻辑包括用于允许处理器判断表达式是否严格需要的第一手段;如果该表达式是严格需要的,则允许该处理器对该表达式进行及早求值的第二手段;以及如果该表达式不是严格需要的,则允许该处理器根据及早方法和惰性方法的估算成本对该表达式使用及早方法或惰性方法进行求值的第三手段。7、如权利要求6所述的方法,其中所述第一手段包括如果(i)和(ii)中的一个或多个为真,则允许所述处理器判断所述表达式是否严格需要的手段;如果(i)和(ii)为非真,则允许所述处理器判断所述表达式是否不是严格需要的手段;其中(i)和(ii)定义如下(i)该表达式是一个执行位置所严格需要的;(ii)该表达式能通过一个严格要求的表达式的一个或多个严格边缘触及到。8、如权利要求6所述的方法,其中所述第三手段包括允许所述处理器判断对所述表达式进行及早求值的第一估算成本的手段;允许所述处理器判断对所述表达式进行惰性求值的第二估算成本的手段;如果第一估算成本小于第二估算成本,则允许所述处理器对该表达式进行及早求值的手段;以及如果第二估算成本小于第一估算成本,则允许所述处理器对该表达式进行惰性求值的手段。9、如权利要求8所述的方法,其中所述第二估算成本包括对该表达式进行求值的估算成本和与有效标志及反向链接相关联的估算管理成本。10、如权利要求6所述的方法,其中所述表达式是标量表达式。11、一种在数据库管理系统中对表达式进行求值的编译器包括用于允许处理器判断表达式是否严格需要的第一手段;如果该表达式是严格需要的,则允许该处理器对该表达式进行及早求值的第二手段;以及如果该表达式不是严格需要的,则允许根据及早方法和惰性方法的估算成本对该表达式使用及早方法或惰性方法进行求值的第三手段。12、如权利要求ll所述的编译器,其中所述第一手段包括如果(i)和(ii)中的一个或多个为真,则判断所述表达式是否严格需要的手段;如果(i)和(ii)为非真,则判断所述表达式是否不是严格需要的手段;其中(i)和(ii)定义如下(i)该表达式是一个执行位置所严格需要的;(ii)该表达式能通过一个严格要求的表达式的一个或多个严格边缘触及到。13、如权利要求ll所述的编译器,其中所述第三手段包括判断对所述表达式进行及早求值的第一估算成本的手段;判断对所述表达式进行惰性求值的第二估算成本的手段;如果第一估算成本小于第二估算成本,则对该表达式进行及早求值的手段;以及如果第二估算成本小于第一估算成本,则对该表达式进行惰性求值的手段。14、如权利要求13所述的方法,其中所述第二估算成本包括对该表达式进行求值的估算成本和与有效标志及反向链接相关联的估算管理成本。15、如权利要求ll所述的方法,其中所述表达式是标量表达式。16、一种在数据库管理系统中对表达式求值的方法,包括判断表达式是否有多个母表达式;如果该表达式没有多个母表达式,则对其进行惰性求值;以及如果该表达式有多个母表达式,且在一个执行位置是严格需要的,则对其进行及早求值。17、如权利要求16所述的方法,还包括根据成本判断是否记忆化。18、如权利要求16所述的方法,还包括如果该表达式有多个母表达式,且在一个执行位置不是严格需要的,则根据成本选择惰性方法、惰性记忆化方法、及早方法和及早记忆化方法中的其中一种;以及使用上述所选方法对该表达式进行求值。全文摘要一种在数据库管理系统中对表达式进行求值的混合方法在这里被描述。对于每一个执行位置(XL)中的表达式而言,都会选择一个执行策略。会考虑的策略有惰性、惰性记忆化、及早和及早记忆化。执行策略会依据能最大幅度地减少求值的估算成本来分配。文档编号G06F7/00GK101627363SQ200780051217公开日2010年1月13日申请日期2007年12月19日优先权日2006年12月21日发明者I·T·鲍曼申请人:移动解决方案公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1