用于查询关系数据库的方法及装置的制作方法

文档序号:6405877阅读:180来源:国知局
专利名称:用于查询关系数据库的方法及装置的制作方法
专利说明用于查询关系数据库的方法及装置 本发明涉及一种用于评价有关关系数据库的查询的方法以及有关的装置和程序。
生物信息学的主要目标是提供能迅速、有效和完整检索到生物信息的搜索工具。目前有存储生物信息的庞大数据库。可是除此以外,还存在许多较小的数据库以及并不象数据库那样构建的电子数据库,也可以说成是平面文件,如科学杂志中的出版物。因此生物信息学中的搜索工具必须经常综合来自各种资料源的数据。由于用户希望立刻在屏幕上得到结果,在这点上时间显得犹为重要。
已经证实SRS查询语言和数据包是构建这种搜索工具的有效手段。SRS可以综合来自各种资料源的数据。在WO00/41094中指出了SRS的原理。基本上,SRS以两步过程操作。第一步是识别数据源中的条目,第二步通过分析程序提取。尽管这个概念很适用于平面文件,但是关系数据库的应用还是带来了问题,有关标识符的信息如列表密匙的提取可能在大数据库中要花费相对长的时间。这是因为这些请求信息通常必须从多个不同的列表中采集,而这些列表可能并非直接相互连接。目前的关系列表管理系统以建立查询所涉及的所有列表的连接表的方式操作。由于该连接表的尺寸基本上是单个列表行尺寸的产物,因此这很快导致形成大的结果集,并且相应地引起评价这些结果集的处理时间过长。
本发明的一个目的是提供一种用于在关系数据库中进行查询的方法、装置以及程序,其中查询可以更容易地进行,更易于理解,并且查询过程可以更快速,尤其是提供一种能兼容从其它数据源如平面文件中提取信息的流程的方法。
根据本发明,这个目标通过评价涉及关系数据库的查询来实现,其中关系数据库包括至少一个关系数据库管理系统(RDBMS),所述查询与所述关系数据库的至少一个列表有关,所述方法包括确定所述关系数据库的列表作为评价所述查询的网关列表、通过所述的RDBMS检索与将被查询的列表中与一个或多个条目有关的所述网关列表的一个或多个唯一标识符、使用所述RDBMS、从将要被查询的一个或多个列表中检索与所述网关列表的所述被检索的唯一标识符有关的信息并向所述查询提供结果。这个结果可以是结果列表传统意义上的结果集,包括与所述已检索的信息有关的网关列表的被检索的主码,或者包括查询的结果的对象,这可以从常规的结果列表中得到。
根据本发明,选择“网关列表”构成该查询评价的起点。在某种意义上,将它作为该查询评价的入口点或“网关”。根据本发明,在提出所述查询之前或者在其评价过程中,指定列表作为网关列表,意味着依照这个列表执行检索一个或多个唯一标识符的步骤,当然假定这个列表与查询中所引用的列表有关。指定列表作为网关列表可以预先执行,例如在提交查询之前指定其作为系统或数据库设定的一部分或者通过用户设置的方式。然而,本发明也可以提供在该查询评价的过程中,根据合适的标准确定列表作为网关列表,上述步骤是在关于指定这个列表之后执行的。在优选实施例中,以上提及的唯一标识符是网关列表的主码或唯一索引。然而,本发明还可以提供所述唯一标识符是不同列的索引的综合以及在某些情况下列表的行的所有索引的综合,所述的唯一标识符是通过定义的在关系数据库管理系统中的唯一的标识符。
本发明可以提供,当检索所述网关列表的一个或多个唯一标识符时,在第一步骤中检索了预定的索引。如果这个索引或这些索引没有以唯一方式指定一行列表,唯一标识符就由这些索引根据适当的步骤形成。一个步骤可以是将索引加入到在所述初始步骤中检索过的索引中,直到所述索引的综合是用于与列表中将要查询的条目有关的行的唯一标识符。在这种情况下,这可以一直持续到行的所有标识符都包含在该综合中。这样形成了唯一标识符,证实该有关的行仍与将要查询的列表中的所述条目相关。如果不是这样,该相应的标识符被删除。可选择的,例如可以提供如果在所述初始步骤中已检索过的索引实际上指定了网关列表的多个行,只继续进行该第一行,由此接受可能的信息损失。
本发明可以提供所述关系数据库包括一个或多个预定的集线器列表,所述查询与所述关系数据库的至少一个列表有关,其中所述方法包括通过所述RDBMS的方式检索与将要查询的列表中的一个或多个条目有关的集线器列表的一个或多个唯一标识符、使用所述RDBMS、从将要查询的列表中检索与所述集线器列表的所述被检索的唯一标识符有关的信息并向该查询提供结果,例如以结果集的形式(对象或结果列表),其包括与所述被检索的信息有关的该集线器的被检索的主码。
本发明可以提供基于一个或多个数据库定义了一个或多个程序库。在此的用意是,将程序库定义成列表的汇集,这些列表彼此连接并且它们不需要在同一数据库中,其中恰好有一个列表被定义成集线器列表。程序库中的所有列表直接或间接地连接到集线器。因此,通过集线器中的条目以及与该集线器的(直接或间接)关系能访问程序数据库中的任何条目。由此,可以认为集线器列表代表该程序库。也就是说,本发明意义上的程序库具有用于查询评价的一个唯一入口点或网关,实质上即所述单个集线器。如果程序库专门基于一个数据库定义的,其可以被看成受限的数据库。另一方面,如果第二数据库列表包括在程序库中,该程序库在某种意义上是数据库的扩展。不同的程序库可以享有同一列表。根据本发明使用程序库的概念,可以以比底层数据库更高的水平定义概念,其可以适合应用的需要或用户的希望,而不会影响数据库的底层结构。
使用程序库的概念,如果该程序库涉及多个数据库,显而易见就可以进行多个数据库中的查询,而不用在每个数据库中具有集线器。在这种情况下,在一个数据库中仅有一个集线器,即程序库的集线器(根据定义其包括在一个所述数据库中)。
因此,无论何时参考数据库的集线器或网关列表,应当理解的是这个集线器或网关列表可以是程序库的集线器或网关列表,其中程序库定义在所述数据库上或包括所述数据库的多数据库上。由于程序库实质上是添加在底层数据库上的数据库结构,因此应当理解无论何时参考数据库中的查询或数据库中的查询评价,其阅读须加以必要的变更,除非给出了相反的指示。
集线器列表(也称为“集线器”)实质上是用于在所述数据库或程序库中评价查询的预定的网关列表。通常,查询是用于可搜索的实体中的相关条目的整组,即与列表中的唯一识别的条目相关的在任何列表中的信息,或一部分这种组。如果该可搜索实体是关系数据库,所述整组的相关条目包括与所述数据库中所述条目直接或间接连接的所有条目。通过在数据库上或交叉数据库定义更高水平的实体如程序库(在上述说明中已经理解),一整组相关条目是所述程序库中的一组所有条目,其直接或间接地与包含在所述程序库中的列表中的唯一被识别的条目相关。在许多情况下既不需要也没有必要提供与列表中的条目相关的所有信息。在这种情况下,将会限制到对列表的某列或某列表的查询。在SQL语言中,可以使用标准语法进行这种选择。在优选实施例中,列表和/或列表列的选择将由用户或管理员来预先确定,作为在键入指定查询前用户界面的部分设置。如果专门基于一个单独的数据库确定程序库,该程序库中的一整组相关条目将是整个数据库的一整组相关条目的部分。这意味着通过在数据库上定义程序库,已经形成了对将要查询的列表及列表列的限制,使得当提交参考这个程序库的查询时,不要查询该数据库的其它列表。可是,必须注意,程序库中的一整组相关条目可能不完全包含在数据库的一整组相关条目中,这是因为该程序库可以包括两个或更多不同数据库的列表。
在多数情况下,用户键入的查询输入将由包含在查询结果中的查询条件指定数据组成的。为了所讨论的目的,将查询条件考虑为在该查询中某些元素存在于某些指定的数据字段中的条件。对于关系数据库,这将意味着某些表格中的某些条目具有指定的值。对于平面文件,这将意味着某一顺序的数据,例如以字母顺序,出现在某一数据字段中。尽管这是用户所理解的,该查询条件并没形成可由系统处理的全部查询。为了返回结果,系统需要附加信息,该附加信息是关于哪条涉及所述查询条件的信息应该被返回,例如其它表中的有关信息。附加信息包含在设定中,该设定可以部分或整体由用户确定。基于这些查询条件和预定的关于将要查询的表和列的设定,系统生成一个或多个提交给关系型数据库管理系统(RDBMS)的查询命令。查询条件通常将条件加于将要选定的列的行。在这样情况下,依照本发明的方法将首先寻找满足以查询条件表示的条件的条目,然后返回一个或多个集线器索引,或在优先实施例中集线器表的唯一标识符。
本发明也可以提供在查询中将要检索的列中的所有条目,在这种情况下该查询将检索集线器表的关于某一列的所有的唯一标识符。
本发明可以提供所述的查询,用于一个或多个数据库或程序库的相关条目的完整组或用于所述的关系数据库的这样完整组的预定部分,并且所述的查询包括涉及所述数据库或程序库的一个或多个查询条件,其中所述的方法包括 —识别涉及查询条件中指定条目的网关表, —识别涉及符合查询条件的所述的条目的所述网关表的一个或多个唯一的标识符, —检索相关条目的完整集合或部分集合,其中该部分集合涉及所述的网关表的唯一的标识符。
在多个实例中,查询将涉及不同的实体,例如涉及两个数据库或两个程序库、数据库或程序库和平面文件或多个数据库、程序库和/或平面文件。同样地,也可以是查询涉及一个数据库中的表,表涉及相同数据库的不同集线器。在所有这样的实例中,依照其中的优选实施例,本发明提供的那些涉及集线器或者在不同于程序库或关系数据库的实体的情况下涉及所述的第二实体的一个或多个子实体的查询的部分将会被分别处理,并且通过利用集线器唯一的标识符之间的关系,例如集线器的主码和其它实体的唯一的标识符,以及在这种情况下多个这样的标识符之间的关系将部分搜索结果结合在一起。简单的情况下,确定哪个集线器的唯一标识符涉及另一集线器的其它标识符或者涉及哪个标识符,并且将相关的两部分的查询的结果结合在一起。
本发明可以提供的所述的查询包括至少一个位于所述的数据库外部或位于包括在所述查询中的程序库外的第二可搜索实体,所述的第二实体包括子实体,每个子实体具有至少一个标识符,用于唯一识别所述的子实体,并且其中所述的方法包括 —检索所述第二可搜索实体的子实体的一个或多个标识符,所述的第二可搜索实体与所述的查询相关,特别是与所述查询的查询条件相关, —检索所述关系数据库或程序库的集线器的一个或多个唯一标识符,例如主码,所述关系数据库或程序库与所述子实体的所述被检索的标识符相关, —检索相关条目的集合,特别是相关条目的完整集合,其涉及所述集线器的所述的被检索的唯一的标识符, —从所述的子实体检索由所述的第二实体中的被检索的标识符识别的信息, —将来自于所述的第二可搜索实体和所述的数据库或程序库的检索信息合并为结果集。
另外或可选择地,本发明可以提供的所述的查询包括至少一个位于所述的数据库外部或位于包括在所述查询中的程序库外的第二可搜索实体,并且包括子实体,每个子实体具有至少一个标识符,用于唯一指定所述的子实体,并且其中所述的方法包括 —检索一个或多个与条目相关的所述的数据库或程序库的集线器的唯一标识符,所述的条目与所述的查询相关,特别是与所述查询的查询条件相关, —检索所述第二可搜索实体的子实体的标识符,所述的第二可搜索实体与所述的集线器的所述的检索唯一标识符相关, —检索相关条目的集合或其与所述的集线器的所述的检索唯一标识符相关的部分, —从所述的子实体检索由在所述的第二可搜索实体中被检索的标识符识别的信息, —将来自于所述的第二实体和所述的数据库或程序库的检索信息合并为结果。
本申请中的可搜索实体的意义可以是数据库、程序库,其中的标识符可以是主码或集线器表的其它唯一标识符。
本发明可以提供的所述的第二可搜索实体是第二关系数据库或程序库,所述的标识符是主码或所述的关系数据库或第二程序库中的集线器表的另一唯一标识符,所述的子实体是表、连接表或其部分的结合。
本发明可以提供的所述的第二可搜索实体是平面文件的汇集,在该汇集中子实体作为平面文件。
检索涉及第二实体的检索标识符和/或集线器的检索唯一标识符的信息的步骤可以在检索第二实体的标识符和唯一标识符或集线器的标识符之间的关系步骤之前或之后进行。然而,在本发明的优选实施例中,首先对涉及查询条件的一个实体的标识符进行评估,然后检索其它实体的相关标识符,并将其它实体的这些标识符用作检索其它可搜索实体中的相关信息的起点。如果查询条件既涉及数据库或程序库又涉及第二可搜索实体,优选首先对第二实体的标识符和涉及查询条件的集线器的唯一标识符进行检索,然后将所述的第二实体的标识符和所述的集线器的标识符建立联合,所述的集线器的标识符涉及所有的查询条件,也就是,两种条件既涉及关于数据库或程序库的条件又涉及第二可搜索实体,然后只检索那些与所有查询条件一致的附加信息。
本发明可以提供的所述的检索所述的第二可搜索实体的标识符和所述的数据库或程序库的唯一标识符之间关系的步骤包括解除集线器的唯一标识符和所述的第二可搜索实体的标识符的结合的步骤,其中第二可搜索实体的标识符与查询条件不一致,以及只检索涉及标识符的附加信息的步骤,该标识符包括在与选定的参数一致的标识符的结合中。
本发明可以提供该查询涉及列表,该列表与至少两个集线器表有关,其中所述的方法包括 —检索集线器表的一个或多个唯一标识符,其在涉及各自的集线器的表中涉及满足查询条件的条目, —检索其它各自的集线器的唯一标识符,其涉及所述的关于满足所述的查询条件的条目的所述检索唯一标识符, —检索相关条目的集合或依照该查询其与所述的集线器的所述的检索唯一标识符相关的部分, —将涉及所述集线器的检索信息合并为结果。
检索其它各自的集线器的唯一标识符可以包括在第一步检索涉及查询条件的检索唯一标识符中找到的唯一标识符。在这样情况下,无论唯一标识符的结合是否满足查询条件,都会执行一致性检查。
本发明可以提供所述的检索集线器列表的唯一标识符之间关系的所述步骤包括解除集线器的与查询条件不一致的唯一标识符的结合的步骤,以及只检索涉及至少一个集线器的至少一个唯一标识符的这种附加信息的步骤,该标识符包括在与搜索的参数一致的唯一标识符的结合中。
上述的两个集线器中,至少一个可以是程序库的集线器或两个集线器都可以是程序库的集线器。也可以设置为所述的两个集线器是在相同的关系数据库里的集线器。这些可以,但不一定是限定在这个数据库中的两个程序库的集线器。一个或两个也可以是不涉及程序库的集线器。
本发明也可以提供在执行所述的涉及条目的集合或其中的部分的每个集线器的部分查询之后,各自的结果连接,并随后检查与查询条件的一致性,例如检查冗余。本发明也可以提供为每个部分结果创造对象,并且将这些结果进一步处理来产生查询结果。
本发明可以提供的检索可搜索实体的标识符的步骤是基于所述的实体的标识符之间预先设定的关系而执行的,其中所述的标识符与可搜索实体的另一个标识符有关。
本发明也可以提供的检索可搜索实体的标识符的步骤是在执行查询期间而动态执行的,其中所述的标识符与可搜索实体的另一个标识符有关。本发明也可以提供所述的步骤是部分基于所述的实体的标识符之间预先设定的关系和部分动态执行的。
特别地,数据库的集线器和另一可搜索实体的标识符之间的关系可以基于静态链接或“匆忙”创建的动态链接而建立。
对于大的数据库,从其在查询中被引用且涉及集线器唯一标识符的列表检索信息是相对缓慢的过程,这是由于当前的关系数据库的工作方式。如果包括多个列表的查询以标准语言输入,例如SQL,RDBMS将形成包括所有列表的连接列表,其实质上是所有列表的笛卡儿产品。连接列表中的数据集的数目实质上是包括单个列表的行数的产品,这意味着连接表格的大小随着每次查询中包括的列表的进一步增多而以指数级增长。这使得计算机的速度随所包括的表格的增多而迅速降低。
依照本发明的一个方面,通过更精确地控制包括什么样的列表,这是可以减小的。为了进一步讨论的发明目的,将数据库的表示用作节点图是有帮助的。可将节点图理解为数据库的图形表示,其中将列表描述为节点,列表之间的链节描述为节点之间的连线。列表之间的链节特别可以是通过外部主码的链节,但并不限定于此。使用节点图的概念,数据库两个列表之间的关系可以形象化为两个节点之间的路径,其或者是直接的(在这种情况下两个列表之间存在直接的链接)或者是间接的,并且传递一个或多个中间节点。使用这个概念,控制包括在查询中的节点数量以及形成某种程度上包括限定量的中间列表的查询是可能的。
本发明可以提供在执行所述的检索涉及所述的网关列表的唯一标识符的信息的步骤中,查询选定的列表,该列表形成将网关列表连接到初始查询中所引用的列表的链节图表,在图标表示的数据库中,其中将列表描述为节点,列表之间的链节描述为节点之间的连线。
对这一概念的进一步改进是大的查询可以分裂成多个更容易评价的中间查询,因为包括的连接列表更小。事实上,在所述的图表中的两个列表之间的链接由接续(junction)代替。两个列表之间的接续意味两个列表没有包括在同一个查询中,但链接码的值或者在对列表的前一个查询中找到的链接的另一个输入被用作在包括第二列表的查询中链接码的输入。
本发明可以提供的所述的查询关于所述图表的列表的步骤包括执行串行的部分查询,其中前一个查询的结果被用作后一个查询的输入,优选地是所述的沿着图表的下一个查询,第一部分的所述部分查询的包括网关列表,并且不同于首次查询的查询涉及初始查询中所引用的列表。
依照本发明,该部分查询这样构造只有直接链接到所述查询中另一列表的列表包括在部分查询中,并且所述图表中的每个列表包含在至少一个查询中。
因而,存在完整的查询的链条,其从集线器列表导引到查询中所引用的列表。
当列表之间的关系是外码关系时,本发明可以提供的所述的前一个查询的结果包括包含在所述的后一个查询中的列表的外码的值,并且其中所述的外码的所述的值用作所述的后一个查询的输入。
对于每个部分查询,将结果存储以稍后查询,并将不同的部分结果合并到初始查询的结果或部分结果。为了清楚起见,依照本发明的方法从其开始的查询在这里和以后被称作“初始查询”。
依照优选实施例,除了前一个查询的输入之外,这些查询在某种意义上是非重叠的,只有在其它的部分查询中没有被查询的列表才被查询。
将大的查询分裂成多个更小的查询具有的优点是更小的查询返回更小的结果集,查询的结果随后被整合。由于沿着图表的连续列表被直接链接,在连续列表之间也存在直接连接,意味着单个部分查询的连接列表通常不是过分地大。部分查询包括多少连续列表取决于列表之间的关系。通常,以结果集容易处理且容易被清除冗余的方式来确定不同的部分查询。
本发明可以提供的在每个部分查询之后的冗余检查是在结果列表上进行的。依照本发明的一个实施例,没有冗余的对象是基于部分查询的结果集产生的。
存储的结果可以进一步过滤或净化,取决于进一步部分查询的结果。例如,第一部分查询返回的码的值稍后证明与初始查询引用的列表不相关,涉及所述的结果的对象中的数据并且包括所述的码可以从结果集中清除。
本发明可以提供的每个部分查询包括列表或相互链接的多个列表,并且其中每个部分查询将以前建立的列表的码的值,特别是链接码的值作为输入。所述的链接码将所述的列表或一个或更多所述的多个列表链接到另一个不包括在所述的部分查询中的列表。
作为前一个部分查询的结果,链接码的所述的值可能已被找到。被用作输入的该码值也可能是网关列表的码的值,其已经在前一个步骤中确定。该第一部分查询不同是因为网关列表是该查询的一部分,而其码值被用作输入。
本发明可以提供所述的图表包括至少一个具有与至少两个其它节点链接的分节点,并且其中在初始查询中引用的列表与从所述的分节点衍生的独立分支有关,其中包括与所述的分节点(分列表)相对应的部分查询被执行,并且其中至少一个对包含在每个分支中的一个或多个列表的查询被执行,每个分支将包括分支列表的部分查询的结果作为输入。
每个分支的各自随后的部分查询可以进一步具有作为结果的部分查询,其包括在初始查询中所引用的列表。每个分支的查询链可以连续或相互并行地评价。
如果其中之一分支包括与必要的查询条件相关的列表,例如以SQL的WHERE从句指定,将会优选地首先评价这个分支并从而检索该分支节点的那些码,其实际上与满足所述的必要条件的条目相关。通常这些码比那些当分支节点是“通过”是检索的码要小,即第一次包括在部分查询中。因此,包括分支节点的首次部分查询的结果将会被减少到只包括分支节点的这样的码。该减少的码值的集然后将会用于对涉及其它分支的一个或多个部分查询的输入。
如果两个或多个分支与必要的查询条件相关,基于以前评价的所述的分支的节点的码,也可以通过评价每个独立的分支来继续。每个分支的评价将每次返回那些涉及满足必要条件的条目的分支节点的码,以作为结果。在随后的相关结果的处理中,只有那些包括涉及满足必要条件的条目的分支节点的码的条目才会被保留。
这样,分支列表与集线器列表相似,因为多个查询是来源于其中的。事实上,在大多数情况下,集线器列表也是分支列表,典型的实例就是数据库,其中图例表示的数据库是星形的,集线器在星形的中心。因此,评估来源于分支节点的分支的方法可以与评估来源于同一集线器的相异图表的方法相似。然而,应当记住集线器列表和分支列表的确定是不同的。在确定集线器列表和分支列表之间的差别是集线器列表是用于评估基本查询的预先确定的入口点,它不一定标注一个分支,而节点列表也可以是在评估初始查询中确定的列表。
依照本发明的方法包括步骤 —识别涉及初始查询中引用的列表的单个或多个集线器, —在所述数据库的图表表示中,确定至少用于一个、优选确定用于所有集线器的、将所述集线器连接到所有列表的最佳图表,其中所述的列表与所述的集线器相关,并且其在初始查询中被引用, —执行关于所述最佳图表的查询。
可以提供评价关于所述的图表的所述查询,包括关于所述的最佳图表相互串行的列表的串行部分查询被执行。
上面引用的最佳图表是由最优化算法确定的图表。用于找到连接给定点的最佳图表的最优化算法,诸如Dijkstra’s算法在本领域是熟知的。该图表优先地对速度进行优化,以此速度可以解决部分查询的顺序。进行的一个方法是给图表中的节点之间的每个链接分配权重并改变初始图表直到累加权重被优化。该权重可以作为度规来实现,并且因此依照该度规来寻找“最短的”路径。
利用节点图来定制查询进程的概念以及将大查询分裂为若干较小的串行查询的概念,特别是接续的概念,并不局限于对包括预先确定的集线器列表和涉及所述集线器的列表的查询的评价。事实上,该概念可以不依赖集线器的概念来应用,例如因为对于包括关系数据库的查询来讲,可以确定网关列表,如上所述该网关列表形成了评价该查询的起点,并且由此建立和评估到包括在该查询中的列表的路径和图表。该网关列表并不一定是静态的或预先确定的,例如集线器,但其也可以就具体的查询来选择,甚至在以连接该网关列表和该查询中引用的列表的图表关于评价进程速度被优化的方式(例如上述的算法)评价的进程中。
例如,该概念的进一步的应用可以是两个数据库链接之间的评价。依照本发明的实施例,两个数据库之间的关系始终是通过这两个数据库的集线器建立的。为了建立这样的关系,这两个数据库的两个列表(以后称为“链接列表”)之间存在的链接可以用于在该两个数据库的两个集线器之间提供动态链接。从第一数据库集线器列表和该集线器的某个唯一标识符开始,找到第一数据库中的链接列表,并且所述的集线器列表到链接列表之间的关系建立,例如利用该数据库的节点图。所述的链接列表中的涉及集线器列表的所述的唯一标识符的条目和第二数据库中的链接列表中的相关条目被确定。随后,第二数据库的集线器的涉及所述的第二链接列表的条目的唯一标识符被确定。尽管该步骤可以预先执行,例如对于所包括的集线器的主码,其中这样找到的集线器的主码之间的关系可以静态地预先存储,目前在评价查询中优选地动态执行这些步骤。节点图中的图表概念和接续概念可以应用到动态执行这样的链接中。如以前所阐述的,可以建立通过链接列表连接两个集线器的图表(其中不同数据库的两个链接列表之间的链接象数据库中的正常链接来处理)并且执行并评价多个串行查询,其以主码的确定值或第一集线器的另一个唯一标识符开始,最终通向第二集线器。为了完整性,应该提及的是也可以使用混合型的链接,其中部分步骤预先执行并且部分动态执行。
本发明可以提供的检索所述的网关列表的唯一标识符的所述步骤包括 —确定初始查询中引用的列表, —在所述数据库的图解表示中,确定连接所述列表的网关列表,其中列表被描绘成节点,列表之间的链节描绘成节点之间的连线, —查询所述的数据库中的网关列表的涉及所述列表的一个或多个索引,特别是主码。
本发明可以提供的所述的列表的一个或多个特定的条目由查询条件包含,并且查询所述的数据库中的网关列表的涉及所述条目的一个或多个索引。
本发明可以提供在所述的图解表示中,建立从所述列表到所述网关列表的路径,以及对所述索引的查询的执行是通过查询与所述的图表中的节点相对应的所有列表,来寻找所述的图表中列表之间的链接码的值,这是从查询中所引用的列表和例如其某些条目开始。
本发明可以提供依照预先确定的度规,所述的路径是作为所述的列表和所述的网关列表之间最短的路径选定的。
本发明可以提供所述的路径是一部分或是等于用于确定部分查询的图表,所述的部分查询用于从涉及所述的网关列表的列表中检索附加信息。
本发明可以提供如果涉及网关列表的同一行的且由所述的查询数据库步骤确定的索引或一组索引没有唯一识别所述的网关列表的行,网关列表的一行或多行与所述的索引相关唯一标识符被确定。
本发明可以提供用于评估初始查询的部分查询至少部分并且优选地是完全在所述的评价进程中动态生成。
本发明可以提供所述的结果集由面向对象的表示方法来表示。
本发明可以提供所述的初始化查询的结果表达为通过对象关系映射得来的对象。在该优选实施例中,在评价初始化查询的进程中每个部分查询执行后,通过对象关系映射生成对象,并且表示所述的初始化查询结果的对象来源于与部分查询有关的这些对象。在一个实施例中,由部分查询结果生成的这个或多个对象表述在XML中。
本发明可以提供对所述的查询的评估是在对象管理器的控制下执行的,所述的对象管理器包括一组由计算机系统执行的命令。
本发明可以提供所述的对象管理器处理对象,其中该对象代表将被查询的一个或多个数据库的概要或部分概要。
本发明可以提供所述的对象管理器确定动态生成并初始化的类。
本发明也可以提供用于控制对包含有关系数据库的查询进行评估的数据处理系统,其中所述的关系数据库包括关系数据库管理系统(RDBMS),所述的查询涉及所述的关系数据库的至少一个列表,该数据处理系统包括 —用于确定列表用作评价所述查询的网关列表的装置, —用于在将被查询的列表和网关列表之间建立关系的装置, —用于使RDBMS检索所述的网关列表的一个或多个唯一标识符的装置,其中所述的唯一标识符涉及将被查询的列表中的一个或多个条目, —用于使RDBMS从将被查询的列表中检索涉及所述条目的所述唯一标识符的信息的装置, —用于向所述的查询提供或使得被提供结果的装置,其可以是结果集或结果对象,它包括涉及所述的检索信息的网关列表的检索到的主码。
所述的数据处理系统包括用于将所述的关系数据库中的某列表设定为预先确定的网关列表的装置,网关列表用于将被评估的查询, 依照本发明的数据处理系统,在进一步的实施例中,可以包括用于通过数据处理系统控制如前所述的方法的执行的装置。
本发明也提供了计算机程序和包括这样程序的计算机可读取的存储介质,其中使得当计算机程序在计算机或计算机系统上执行时,计算机或计算机系统来执行以前所述的方法的步骤。
根据本发明的一个重要方面,依照本发明的方法使用标准的关系数据库管理系统,并且确定该关系数据库管理系统之外的所有查询操作。这带来了大范围的灵活性,并且事实上生成了可不依赖基础系统而独立应用的平台。令人惊讶地,如果涉及到具有多个1∶N关系的列表,据发现依照本发明的方法,特别是评估依照图表和接续概念的查询,可以使速度显著上升,可以提升50%甚至更高,使得组合剧增开始出现。
其它发明的进一步的特征和优点将从以下对本发明实施例联系相应附图所进行的描述中变得显而易见。


图1表示具体实例的解释中所参考的单个数据库的节点图。
图2A至2E表示根据图1的数据库的列表。
图3表示第二实例的节点图表。
根据本发明的一个实施例,首先对将用于实现本发明的数据库进行分析。实质上即汇集关于该数据库列表、列、类型、大小、其索引以及码的信息。用于汇集这些信息的分析工具在现有技术中就可以得到。可以使用例如JDBC(JAVA数据库连接)或任何其它的RDBMS API来汇集这些信息。从这些信息中,使用列表之间的码关系以最小生成树的形式构建数据库的节点图表。实质上,对于任何列表,都期待有将这个列表和其它列表相连接的码(链接码),并且如果存在这样的链接码,引入代表这两个列表的两个节点之间的边来表示两个列表。必须理解,没有画实际的曲线图,而是构建了映射这个曲线图的目标结构。为了便于解释,在此引用该曲线图或该曲线图的元素,可以理解这些引用意味着与各个元素、关系或对相应的数据结构的操作有关。
通常,给节点和边分配某些属性。例如,可以给以后要用来确定最优曲线图的每个边分配权重,可以分配表示边代表1∶1、1∶N、N∶N或N∶1关系的属性,或者可以分配代表索引的存在的属性,特别是两个列表之间的关系,仅提出几个实例。已分配给节点(列表)的属性例如可以是列的名称、它们的大小、所其它相关信息。
在这一点上,还可以手工添加或改变列表之间的关系,其中在列表之间需要有联系。例如,如果存在列出科学出版物的作者的列表和有关联系方式如E-mail地址的列表,该列表与作者列表无关或不直接有关,可以手工插入在其中一个列表中的作者姓名和另一个列表中的他或她的E-mail地址之间的关系。这个关系可以作为该数据库的改进而实现。然而,还可以在数据库外作为两个列表之间的外部链接来实现。
这个步骤的结果是代表列表模式的对象。这个模式对象被存储是为了进一步使用。在此所描述的实施例使用SRS环境,在这个环境下,这个模式对象将被存储为SRS对象管理器对象,例如通过SRS Java应用程序界面(API)。该对象管理器是一种控制SRS下查询评价的工具。SRS查询语言的具体情况可以在例如http://srs.ebi.ac.uk中找到。
作为进一步的步骤,确定集线器列表,其作为在查询的评价中的向列表的入口点或网关。对集线器的要求是它包括唯一的标识符,即列表中的每个数据集可以通过标识符来唯一识别。优选地,唯一的索引或主码用作唯一标识符,但是例如还可以使用索引的唯一组合。事实上存在两个使列表定义为集线器的理由。其中一个理由是源自用户范围并寻求提供查询中对用户有指导意义的焦点。另一个理由是更技术性的,并且寻求以可以更有效执行查询的方式来定义该列表。因而,集线器列表可以是表示感兴趣中心点的信息的列表。从技术角度看,集线器列表应该是可能被查询的列表,并且其优选地直接与其它列表相链接,其它列表可能被查询或涉及某种程度上其查询包括集线器的这种列表,并且这些列表可以由RDBMS最快地评估。例如,考虑建立统计表,其列表在关系数据库中非常频繁地被查询,并且列表的综合经常被查询到并相应地选择集线器列表。这两个理由可以经常相互调和,因为经常被查询到的列表通常也是用户主要关心的列表。
关心的焦点可以根据用户而转移。然而一个用户可能主要关心科学申请的作者,另一个用户可能主要对科学申请中的某个关键词感兴趣,并且不关心或者只是稍微关心作者。因此,本发明可以使得用户或数据库管理员能够定义一个集线器或多个集线器作为用户设定的部分,或者甚至当键入查询时。应当注意不止一个集线器可以限定在单个数据库中。这可能在大数据库中有用,因为它允许形成更小的子结构,例如程序库,特别是在大的数据集的大模式情况下,其可以用来提高性能。另一个可以使得在数据库中确定多个集线器的原因是可以以这种方式在数据库中确定列表簇,据知该列表是联合查询的,或者就不同的簇而言,其不是经常相互联合查询的。这以后将限制在许多情况下将被查询的集线器和列表之间的可能路径的数量,并由此对应用速度作出贡献。集线器的定义在SRS下还具有进一步的目的。通过选择集线器列表和唯一标识符(例如主码)作为进入数据库的入口点的标识符,得到可以被视作是围绕“集线器列”集中的数据结构,意味着通过定义明确的标识符访问数据。这与平面文件具有相似性,并由此允许将已经研发用于平面文件的SRS程序用于关系数据库。
当用户输入查询时,他通常仅指定他感兴趣的关键词,并且得到与所述关键词有关的所有信息。这些信息可能是完整的数据库条目。本发明的实施例可以提供,用户可以在绘成曲线图的用户界面上指定他感兴趣的数据库的列表或列。例如这可以通过提供用户用于表示感兴趣的信息的选择框而实现。关于这些需要的信息的范围的另外的信息可以在系统设置中实现,该系统设置可以或不可以由用户改变。
当用户在查询中键入信息时,根据该实例的该系统以两步过程工作,与用于检索信息的SRS下的标准程序类似。在第一步中,识别一个集线器(或多个集线器)的唯一标识符,这些标识符与关于查询条件的列表有关,例如含有用户需要的关键词的列表。在第二步中,检索与查询条件有关的所有信息,直到这些信息在系统设置中或由用户输入而指定。
更确切的,在第一步中用分析程序执行查询分析,例如用ICARUS分析程序。该分析得出的结果可以是二进制树形网络,其代表该查询的分级分析,并以较更高级指定该数据库,以较低级指定标识符字段“作者”、和甚至以更低级指定需要的关键词如“Smith”。该系统现在将这个查询映射到在该系统中存储的数据库的节点曲线图中。为了与上述实例保持一致,该系统证实是否在指定的数据库中存在唯一识别作者和列的列表,其中应当出现作者的姓名。如果发现这种列表,该系统证实集线器与所述节点曲线图中的这个列表是否有关,并证实究竟是哪个集线器与这个列表有关。然后它生成对集线器列表的唯一标识符如主码的查询,该标识符与所述列表中的符合查询条件的条目有关。由于已预先确立该集线器与该输入查询中的列表通过至少一个路径相关,因此应当存在集线器的与该条目相关的至少一个唯一标识符。
在特定实施例中,该系统在所述节点曲线图中确立了从将要被查询的列表到集线器列表的路径,并且在该集线器的唯一标识符的查询中,还查询了该路径中与该查询条件所指定的条目相关的中间列表(节点)的码。这样,确立了与条目相关的整组关系,该条目符合查询条件、且包括集线器的唯一标识符。
假定在该查询中仅存在一个集线器和一个数据库,那么现在该系统在所述节点曲线图中确立了曲线图或树,所述节点曲线图具有作为其起点的集线器列表,在该查询中参考的所有列表作为节点出现。该曲线图优选为没有任何环路的曲线图,即从集线器列表到在该查询中所参考的任何列表仅有一个路径。该曲线图可以具有几个源自集线器的支路,每个支路可以进一步包含支路。理论上,该曲线图在查询中所参考的列表之间的部分应该是最小化的。可是,这并不是在能绘成曲线图意义上的理解,而是在曲线图上所定义的并用于最优算法的度规意义上的理解。例如,对应于包括多个中间列表的曲线图的查询评价可以比对应于一个单独的中间列表的曲线图的查询评价更快速,其中包括多个中间列表的曲线图在其列表之间具有1∶1的关系,只具有一个单独的中间列表的曲线图的中间列表与沿着该曲线图的它的相邻的列表具有1∶N的关系,因此在有关度规的意义上该查询评价被“缩短”了。
已确立最优曲线图后,由于对在初始查询中所参考的列表中的条目进行查询,其中这些条目与第一步识别的唯一标识符的值有关,因此该图表被评价。更特别的,该系统形成了对该查询的包括类别和部分SQL查询的目标计划,其中动态形成部分SQL查询。用于形成并说明类别和部分查询所必须的信息被保持在所谓“转盘”的数据结构中,其中该数据结构含有执行具有不同初始输入的查询所需要的所有信息,该不同初始输入也就是用于集线器标识符的不同值。该目标计划根据关于这个查询的曲线图的图解和信息而形成,并且可以包括最优化步骤。一旦已经形成这个目标计划,也就给出了初始信息,即集线器的唯一标识符的值以及随后运行的值。在该查询评价中,该系统将查询该列表所有条目的值,这些列表由与集线器的主码相关的支路上的节点来表示。正如预先指出的那样,对于沿支路的多个列表,如果以通常方式形成,这可能引起具有许多虚假条目的大的结果集。根据本发明,将沿支路包括部分曲线图列表的查询分成了多个沿曲线图的列表的连续的查询,其中在部分查询中涉及的列表的各自的数量小于涉及整个支路的查询中的列表的数量。这些多个查询彼此连续,其中在先查询的结果被存储,并且至少部分地被用作至少一个随后接着的查询的输入。
因为其中第一查询的结果或部分结果被用作随后接着的查询的输入,连接两个沿曲线图的顺接的查询的技术在此被称为接续。接续意味着对应于曲线图的节点的两个列表并没有包括在同一查询中,其中这些节点直接相互连接。对于与沿曲线图直接连接的节点相对应的每对列表,存在以确立这两个列表之间的关系的、通常是链接码的一种链接。使用接续,输入该连接,在对包括这两个列表中的其中一个列表的前一个查询的评价中确立的连接码的值,通常被用作包括另一个列表的随后的查询的输入。这意味着没有包括这两个列表的连接,并且由此每个部分查询的结果集将变得更小。
在每个部分查询后,确定前一步中确定的码是否完全与沿曲线图的随后的列表有关。如果没有关系,各自的码值将从部分查询的结果中删除。另外,为了存储前的每个部分查询的结果,执行过滤以及检查冗余和/或相容性。在一个实施例中,冗余检查可以从与列表相关的列开始,沿着现在被查询的离集线器最远的曲线图部分。如果相同的码的组合证实是在这个等级,并且沿该部分曲线图没有N∶1或N∶N的关系,就意味着存在冗余并且除去了各自的条目。当然可以应用冗余检查的另一种技术。由于在每一步中仅形成和过滤小结果集,因此如果立刻查询初始查询中参考的所有列表,将产生以下结果,这种过滤、冗余检查等可以比大结果集的冗余检查和过滤更快更有效地进行。每个部分查询的结果具有已除去的冗余和不相容性,其存储为对象,并且存储检索所述对象所需要的信息。
在曲线图的支路的评价中,如果识别了进一步的支路,就可以独立地执行沿着每个支路随后接着的查询,这些随后接着的查询或者相互平行或者相互连续。可是,如果随后接着的支路相对较短,在给定的情况下,也可以在一个单独的部分查询中选择包括沿着这些随后接着的支路的列表以及与支路节点对应的列表。
以这种方式对支路作出整体评价后,综合该部分查询的结果并再一次检查冗余和相容性。对源自集线器的每个支路评价后,得到每个支路的结果集,每个支路的结果集都是由集线器唯一标识符的值来识别。然后将不同支路的结果汇总在一起,并再一次检查冗余和相容性,以得到最后的结果。
这个结果被表示成目标结构,如SRS的结构中提供的目标结构。对这个目标结构或代表随后的部分查询结果的这些目标作出定义,可以利用动态类,即当继续时对其作出定义然后对其进行说明以形成目标的类。动态类本身并不是新的,并且在Smalltalk语言中已知,但是这些动态类并不能在现有的只有一个静态或编译时间的类的语言如C++或Java中得到。SRS支持动态类,尽管早先的应用并不使用它。
根据本发明的重要方面,在初始查询的评价期间所形成的所有查询都是当运行时动态形成的。在其它实施例中,可以事先确定并优化沿着在集线器和列表之间的某些部分曲线图的部分查询,这些部分查询是经常被要求的。还可以期望事先确定引至表的“簇”的某些部分路线,其中动态确定(匆忙地)至要求列表的路线的最后的部分。进一步的优化技术可以忽视数据库曲线图中的某些连接。
上述两步过程可以被看成是在第一步中解决查询条件,在第二步中检索与其结果相关的信息。在本发明的一个实施例中,包括符合查询条件要求的条目的列表并不必然是在所述第二步中进行的部分查询的部分,例如如果从列表中提取的信息被限定成与查询条件相关的条目的值。还可以提出,已经提取并储存在第一步中的所有信息,这些信息与由在同一列表中的查询条件所指定的条目有关,使得后来不需要“再访问”该相关列表。
上述两步过程不是必须的。可以设想一个实施例,其中当该系统检索该集线器的唯一标识符时,检索另外的信息,从在查询条件中参考的列表开始。例如可以提出,在查询集线器的主码时,该系统还查询某一路径中的中间列表的码,该路径从由查询条件指定的条目开始到相关集线器结束,并且在随后的查询中,该系统检索与这些码有关的信息。
对于仅包括一个集线器或一个数据库或程序库的实例在之前已经进行了描述。
例如在一个单独的数据库中的多个数据库、多个程序库或多个集线器的实例中所包括多个集线器,具有这样的多个集线器的实例被以将初始查询分成几个部分查询的方式处理,其对应于曲线图的部分具有作为末端的集线器,其剩余部分仅包含一个集线器。
在两个集线器的实例中,在第一步中,如上所述检索与具有符合查询条件的条目的列表相关的集线器列表的唯一标识符的值,与所述列表的所述关系并不包括另一集线器。随后在第二步中,确定包括部分曲线图(与部分查询相对应)和一个或多个部分曲线图(与一个或更多个部分查询相对应)的最优化曲线图,其中独有部分曲线图(与部分查询相对应)与一个单独的集线器相关,并且不包括任何其它集线器,一个或多个部分曲线图(与一个或更多个部分查询相对应)与集线器相互连接。然后将评价每个集线器惟独与这个集线器相关的部分曲线图并存储各自的结果。然后将评价该查询或对应于该部分曲线图或这些集线器之间的曲线图的查询。然后综合这些部分曲线图的结果以生成整个查询的结果。
可选择的,可以应用接续的概念来评价两个集线器之间的链接,并且在部分曲线图中连接两个接续的每个集线器之后以及根据给定的事实在这些曲线图的进一步的位置上引入接续。评价这些连接集线器的部分曲线图,启动一个集线器的唯一标识符的值并评价对其它集线器的唯一标识符的相关值的查询,这些可以以相同方式进行,尤其是使用接续,正如之前对包括集线器和相关列表的查询的实例中所描述的那样。结果,将得到其它集线器的唯一标识符的一组值,然后检查这组值与查询条件的相容性。如果查询条件仅和与一个集线器相关的列表有关,那么这种做法就特别具有优势。在这种情况下,将在第一步中仅检索这个集线器的主码,另一个集线器象曲线图中分支点那样处理,引入接续代替曲线图上的连接第二集线器的最后的链接。
依据集线器的本质特性以及依据该集线器是否是在系统设置中预先定义的或由用户选择的,可以期望在一个单独数据库中存储多个集线器的主码之间的预定的关系。这从概念上意味着在节点曲线图中引入两个集线器之间的直接链接,该直接连接将代替上述动态连接使用。
另一个期望的可能性是在该过程的第一步中检索包括所有查询条件的一个查询中的所有集线器的主码,由此得到主码的相应综合。这可以是一种明智的方式,尤其是在集线器之间存在直接连接特别是1∶1的连接的情况下。
包括多于一个数据库的实例可以以与包括多个集线器的实例相同的方式处理。为了简化起见,假设每个数据库仅包括一个集线器,并且数据库通过连接列表相互连接,每个数据库有一个连接列表,那么能将两个数据库之间通过连接列表的连接看成是节点曲线图中的正常边。以这种方式代表两个数据库,从概念上并尽可能考虑到本发明评价查询的方法,与在单独数据库中的两个集线器的实例存在微小差别。即,如之前所述的,在查询条件的基础上检索集线器的相关的唯一标识符,将通过包括两个数据库的集线器和在查询中所参考的任何其它列表的两个数据库来确定曲线图。该曲线图将包括只和一个数据库中的集线器相关的部分曲线图、只和另一数据库的集线器相关的第二曲线图、以及使第一数据库的集线器和第二数据库的集线器相连接并通过所述两个链接列表延伸的部分曲线图。应当注意该这些链接列表并不必须是集线器列表。
此外,该查询评价与之前所述的查询评价类似。将评价与第一和第二集线器相关的部分查询,输入在三个部分曲线图之间的接续,并以上述方式评价在两个集线器之间的路线。应当注意,在评价两个集线器之间的曲线图时,如果在两个集线器之间不存在直接链接,将会再一次使用接续的概念。在两个集线器的实例中,通过从一个集线器到另一个集线器的节点曲线图来确定最优路径,并且在某些节点之间输入接续,由此定义单独评价的部分查询,该部分查询的结果最终彼此综合以得到连接两个集线器的部分曲线图的部分结果,然后该部分结果与剩下的与各自的集线器有关的两个部分曲线图汇合在一起。
如果该查询仅与一个数据库有关,并且得到与符合所述查询条件的条目相关的信息仅需要第二数据库,象之前对于在一个单独的数据库中的两个集线器的实例所描述的那样,可以进行检索与查询条件的条目相关的第一数据库的集线器的主码,然后评价与另一个数据库中的集线器的动态链接,根据通过这个链接的评价所检索的第二数据库的集线器的主码值,评价源自所述第二数据库的集线器的部分曲线图。
将查询分成几个部分查询并且每个部分查询包括集线器的上述概念还可以应用在评价查询中,其中查询包括关系数据库和另外的可搜索实体,可搜索实体包括用来识别子实体并从所述子实体中提取数据的标识符,尤其是指平面文件。如果关系数据库和平面文件包括在同一个查询中,可以将初始查询分成三个部分,即一个部分包括集线器和在关系数据库中与其相关的列表,一个部分包括从平面文件中提取信息,一个部分关于该平面文件和该关系数据库之间的链接。这样,可以在节点曲线图中在本发明的概念内处理平面文件,节点曲线图象没有与其相关的进一步的列表的集线器。
为了进一步解释本发明的原理,参考图1所示的结构给出略微简单的实例。图1表示关系数据库,其包括列表RESEARCHERS(调查者)、DEPARTMENTS(部门)、ARTICLE(文章)、AUTHORS(作者)以及TITLE/ABSTRACT(题目/摘要)。可以有进一步的列表,其通过图1中虚线来表示。列表调查者具有列RNAME(调查者姓名)和RI(调查者标识符),后者定义了这个列表的主码。RI形成与列表DEPARTMENTS的连接(link)码,RNAME形成与列表AUTHORS的列RNAME的连接(link),其还包括列ANAME(作者姓名)和ARTID。ARTID依次形成与列表ARTICLE的连接。列表ARTICLE包括列ARTID、JOURNAL YEAR(期刊年份)和PAGE(页)。ARTID还形成从列表ARTICLE至列表TITLE/ABSTRACT的连接,其中列表TITLE/ABSTRACT具有列TITLE和ABSTRACT。在这个实例中,将列表RESEARCHERS预定为集线器列表,例如这是因为数据库的用户是希望由雇员进行监控该调查的R&D(研究开发)机构。
让我们现在假定提交了一份查询,该查询是关于在摘要中出现“insulin”的所有文章,同时要求检索关于该文章、该题目和该姓名以及各自的作者的部门的书目数据。该系统将首先在列表ABSTRACT/TITLE的列ABSTRACT中寻找包括单词“insulin”的实体。接着,该系统将检查在列表ABSTRACT/TITLE和集线器列表RESEARCHERS之间是否存在关系。当二者之间有关系时,通过列表链AB STRACT/TITLE-ARTICLE-ANAME-RESEARCHERS,该系统继续检索与包含有单词“insulin”的列表ABSTRACT/TITLE中的列ABSTRACT中的条目有关的码RI。经证实有两个RI值符合这个条件,即值1和值2(对应于调查者Smith和Jones)。
该系统现在从要求信息的那些列表开始检查。这些是列表RESEARCHERS(调查者)、DEPARTMENTS(部门)、ARTICLE(文章)以及ABSTRACT/TITLE(摘要/题目)。由此,该系统现在将确定将这些列表和集线器列表RESEARCHERS相连的曲线图,正如图1中的实线所表示的。在第一步中,该系统接着将评价列表AUTHOR中具有姓名Smith和Jones(对应于RI1和2;为了简单起见,假定这些名字是调查者的唯一标识符)的所有条目,并且检索ARTID的相关值。这个结果作为第一部分结果集被存储。应当注意,并没有在这一步中查询随后的列表ARTICLE和ABSTRACT/TITLE,意味着形成了列表AUTHORS和ARTICLE之间的接续。在第一步中检索的码ARTID现在用作随后的检索书目数据、题目和摘要的查询的输入。观察这个查询的结果,应当注意,该结果含有文章3和4,这是因为Smith和Jones作为这些文章的作者被列出。可是这些文章并不符合查询条件。因此该系统检查这个用于相容性的第二部分查询的部分结果,并除去结果集的那些不与查询条件(摘要含有单词“insulin”)相容的部分。这剩下了如以下所示的具有文章ID1和2的结果集。RI RNAME ARTID JOURNAL YEAR PAGE TITLE ABSTRACT1 Smith 1 Journal X 2000 193 Title1“…胰岛素…”1 Smith 2 Journal Y 1999 295 Title2“…胰岛素…”2 Jones l Journal X 2000 193 Title1“…胰岛素…” 将要注意的是文章ID1出现了两次,这是因为Smith和Jones是文章1的共同作者。
现在已经对该曲线图的第一支路进行了评价,其结果在上述结果集表示出来,该系统现在转向评价包括集线器RESEARCHERS和列表DEPARTMENTS。当在这个支路内仅包括两个列表时,该系统不需要进一步的接续,检索RI1和2对应于Smith和Jones以及Smith在部门A工作、Jones在部门B工作的信息。这个结果现在和在先的结果集综合在一起,使得整个结果集如下所示。RI RNAME DEPID ARTID JOURNAL YEAR PAGE TITLE ABSTRACT1 Smith Department A 1 Journal X 2000 193 Title1“…胰岛素…”1 Smith Department A 2 Journal Y 1999 295 Title2“…胰岛素…”2 Jones Department B 1 Journal X 2000 193 Title1“…胰岛素…” 该查询现在实质上已经完成。为了简单起见,这个结果被表示成结果表。根据优选实施例,使三个部分查询的结果转化成目标,接着目标被综合以生成整个查询的结果。
让我们假定,在数据库的不同设置中,列表RESEARCHERS和ARTICLE已经被选作集线器。在这种情况下,为了评价该相同查询,该系统将在第一步中确立ARTID1和2与查询条件(摘要含有单词“insulin”)相符合。然后该系统在第一步中评价包括列表ARTICLE和ABSTRACT/TITLE的部分曲线图,并检索对应于文章1和2的书目数据、题目和摘要。在第二步中,该系统将从ARTID的值1和2开始,通过列表链ARTICLE-AUTHORS-RESEARCHERS来确定列表RESEARCHERS的有关的RI。这可以在一个单独的查询中进行。还可以期望在AUTHORS和RESEARCHERS之间引入接续,即首先评价用于AUTHORS的码的部分查询,然后其被用作RI值的进一步查询的输入。在包括集线器列表RESEARCHERS和列表DEPARTMENTS的第三部分查询中,对集线器列表RESEARCHERS和列表DEPARTMENTS进行检索。这些部分查询的结果集被综合,其与上述初始查询的结果集相同。
如果将列表链ARTICLE-AUTHORS-RESEARCHERS看成在两个集线器之间的链接,我们知道,如果该列表RESEARCHERS和ARTICLE属于不同的数据库或不同的程序库,并且通过列表AUTHORS和RESEARCHERS之间的链接而连接,那么可以应用相同的程序。应该理解,在这些数据库之间的链接不需要属于数据库或程序库其中一个的集线器列表。
在一个数据库中有两个集线器的上述实例的改进中,还可以在第一步中确定符合查询条件的两个集线器的主码的值。这将返回RI1和2以及ARTID1和2,然后这些将用来评价包括各自的集线器列表以及其依据的列表的曲线图的两个支路。作为进一步的选择,可以在ARTICLE和RESEARCHERS之间的选择实现直接的静态链接。
在进一步的实例中,将参照表3所示的数据库来表示包括接续的优点。这个数据库包括以下示出的三个列表,列表“文章列表”被定义成集线器列表,ArticleID被限定成所述集线器列表的唯一标识符。
文章列表ArticleID Title 12 Title12 88 Title88 754 Title754 参考列表ArticleID Ref 88 Ref1 34 Ref467 88 Ref2 88 Ref3 作者列表ArticleID Auth 88 Smith 12 Klein 88 Jones 34 French 考虑到对于有关文章序号88的所有信息的搜索,阐述了两种情况,即一种情况是在集线器列表(文章)和每个相关列表(参考和作者)之间没有任何接续,一种情况是二者之间有接续。
情况1没有接续 构建并提交单一的查询。该结果集将具有3乘以2等于6行。ArticleID Title Ref Auth 88 Title88 RefP1 Smith 88 Title88 RefP1 Jones 88 Title88 RefP2 Smith 88 Title88 RefP2 Jones 88 Title88 RefP3 Smith 88 Title88 RefP3 Jones 返回的单一结果集 该冗余数据将在过滤处理和从唯一数据构建的对象期间被忽略。在该种情况下,例如数据“88”和“题目88”尽管出现了6次,但其将只被读取一次。同样适用于RefP1、RefP2、RefP3以及Smith和Jones冗余。由于过滤和对象生成算法,每个唯一字段只被读取一次。将搜索结果表示成对象或对象的结构,可以避免结果中的冗余。这样,当然优选在第一位置处避免冗余。这可以通过接续的概念进行。
情况2两个链节都是接续 以串行或并行的方式构建并提交两个查询。如下所示的两个结果集被返回。
ArticleID Title Ref 88 Title88 RefP1 88 Title88 RefP2 88 Title88 RefP3 结果集1 ArticleID Title Ref 88 Title88 Smith 88 Title88 Jones 结果集2 忽略冗余数据(这种情况中仅“88”和“题目88”)。从这两个结果集构建对象。该对象等同于情况1中构建的对象。
应当注意通过该单一查询,结果集更大并且包括更多的冗余信息。返回的行数将随着列表数的增加(不同于1-1的关系)而显著地增加。在大多数真实世界数据库中复杂关系是通常的情况。
应当理解上述的实例仅仅是为了描述,并且本发明决不局限于这些实例。
本发明的说明书、权利要求以及附图中公开的特征两者单一地、也可以任意组合地,可以是实现不同实施例中发明的素材。
权利要求
1、评估包括有至少一个关系数据库的查询的方法,该关系数据库包括关系数据库管理系统(RDBMS),所述的查询涉及所述的关系数据库的至少一个列表,所述的方法包括
确定所述的关系数据库的列表作为评价所述查询的网关列表,
检索所述的网关列表的一个或多个唯一标识符,其中网关列表涉及将被查询的列表中的一个或多个条目,
从将被查询的一个或多个列表检索与所述的网关列表的所述的被检索的唯一标识符有关的信息,
向所述的查询提供结果。
2、根据权利要求1的方法,其中所述的关系数据库包括一个或多个预定的集线器列表,所述查询与所述关系数据库的至少一个列表有关,其中所述方法包括
检索与将要查询的列表中的一个或多个条目有关的集线器列表的一个或多个唯一标识符,
从将要查询的列表中检索与所述集线器列表的所述被检索的唯一标识符有关的信息,
向所述的查询提供结果。
3、根据权利要求1或2其中之一的方法,其中至少一个程序库是依据一个或多个所述的数据库定义的,所述的程序库包括相互链接的列表并且正好将一个列表确定为集线器列表。
4、根据权利要求1至3中的一个权利要求的方法,其中所述的查询是用于所述的关系数据库的或程序库的相关条目的完整集合或用于相关条目的这样完整集合的部分,并且所述的查询包括涉及所述数据库或程序库的一个或多个查询条件,其中所述的方法包括
—识别涉及查询条件中指定条目的网关列表,
—识别涉及符合查询条件的所述的条目的所述网关列表的一个或多个唯一的标识符,
—检索相关条目的完整集合或部分集合,其与所述的网关列表的所述的唯一的标识符有关。
5、根据权利要求2至4中的一个权利要求的方法,其中所述的查询包括至少一个位于所述的数据库外部或位于包括在所述查询中的程序库外部的第二可搜索实体,所述的第二实体包括子实体,每个子实体具有至少一个标识符,用于唯一识别所述的子实体,并且其中所述的方法包括
—检索所述第二可搜索实体的子实体的一个或多个标识符,其中所述的第二可搜索实体与所述的查询相关,
—检索所述关系数据库或程序库的集线器列表的一个或多个唯一标识符,所述程序库与所述子实体的所述被检索的标识符相关,
—检索相关条目的集合,或者其预先确定的部分,该部分涉及所述的集线器列表的所述的被检索的唯一标识符,
—从所述的子实体检索由所述的第二实体中的被检索的标识符识别的信息,
—将来自于所述的第二可搜索实体和所述的数据库或程序库的检索信息合并为结果。
6、根据权利要求2至5中的一个权利要求的方法,其中所述的查询包括至少一个位于所述的数据库外部或位于包括在所述查询中的程序库外的第二可搜索实体,并且包括子实体,每个子实体具有至少一个标识符,用于唯一指定所述的子实体,并且其中所述的方法包括
—检索所述的数据库或程序库的集线器列表的一个或多个唯一标识符,其中程序库涉及与所述查询有关的条目,
—检索所述第二可搜索实体的子实体的标识符,所述的第二可搜索实体与所述的集线器列表的所述的被检索唯一标识符相关,
—检索相关条目的集合,或者其预先确定的部分,该部分涉及所述的集线器列表的所述的被检索的唯一标识符,
—从所述的子实体检索由在所述的第二可搜索实体中被检索的标识符识别的信息,
—将来自于所述的第二实体和所述的数据库或程序库的检索信息合并为结果。
7、根据权利要求5或6中的一个权利要求的方法,其中所述的第二可搜索实体是关系数据库或程序库,所述的标识符是所述的关系数据库或程序库中的集线器列表的唯一标识符。
8、根据权利要求5或6中的一个权利要求的方法,其中所述的第二可搜索实体是平面文件的汇集,在该汇集中子实体作为平面文件。
9、根据权利要求4至8中的一个权利要求的方法,其中所述的检索所述的第二可搜索实体的标识符和所述的数据库或程序库的集线器的唯一标识符之间关系的步骤包括解除集线器的唯一标识符与所述的第二可搜索实体的标识符的结合的步骤,其中第二可搜索实体的标识符与查询条件不一致,以及只检索与标识符有关的附加信息的步骤,该标识符包括在与选定参数一致的标识符的结合中。
10、根据权利要求2至9中的一个权利要求的方法,其中该查询涉及列表,该列表与至少两个集线器列表有关,其中所述的方法包括
—检索一个或多个集线器列表的一个或唯一标识符,所述标识符在涉及各自集线器的列表中涉及满足查询条件的条目,
—检索其它各自的集线器的唯一标识符,其涉及所述的关于满足查询条件的条目的检索唯一标识符,
—检索相关条目的集合或依照该查询其与所述集线器的所述检索唯一标识符相关的部分,
—将涉及所述集线器的检索信息合并为结果。
11、根据权利要求10的方法,其中所述的检索集线器列表的唯一标识符之间关系的所述步骤包括解除集线器列表的与查询条件不一致的唯一标识符的结合的步骤,以及只检索涉及唯一标识符的这种附加信息的步骤,该唯一标识符包括在与搜索参数一致的唯一标识符的结合中。
12、根据权利要求10或11中的一个权利要求的方法,其中至少一个所述集线器是程序库的集线器,并且该查询涉及所述的程序库。
13、根据权利要求12的方法,其中该查询涉及两个程序库,并且所述的集线器是两个程序库的集线器。
14、根据权利要求10至13中的一个权利要求的方法,其中所述的两个集线器是在相同关系数据库中的集线器。
15、根据权利要求4至14中的一个权利要求的方法,其中检索集线器列表的唯一标识符和/或可搜索实体的标识符的步骤是基于所述实体的标识符之间预先设定的关系而执行的,其中所述可搜索实体的标识符与集线器列表的另一唯一标识符和/或可搜索实体的标识符有关。
16、根据权利要求4至14中的一个权利要求的方法,其中检索集线器列表的唯一标识符和/或可搜索实体的标识符的步骤是在执行查询期间而动态执行的,其中所述的可搜索实体的标识符与集线器列表的另一唯一标识符和/或可搜索实体的标识符有关。
17、根据权利要求1至16中的一个权利要求的方法,其中在执行所述的检索涉及所述的网关列表的唯一标识符的信息的步骤中,查询选定的列表,该列表形成将网关列表连接到初始查询中所引用的列表的链接图表,其中在图表表示的数据库中,将列表描述为节点,列表之间的链节描述为节点之间的连线。
18、根据权利要求17的方法,其中所述查询关于所述图表的列表的步骤包括执行串行的部分查询,其中前一个查询结果被用作后一个查询的输入,第一部分的所述部分查询包括网关列表,并且不同于首次查询的查询涉及初始查询中所引用的列表。
19、根据权利要求18的方法,其中所述前一个查询的所述结果包括包含在所述后一个查询中的列表的外码的值,并且其中所述外码的所述值用作所述后一个查询的输入。
20、根据权利要求18或19的方法,其中将所述部分查询的结果存储为一个或多个对象。
21、根据权利要求18至20中的一个权利要求的方法,其中在每个部分查询之后,根据分别的结果执行冗余检查和/或一致性检查,并且将清除了冗余和/或不一致性的结果存储。
22、根据权利要求21的方法,其中所述的冗余检查是在创建所述对象的过程中或直接基于创建对象后的所述对象而执行的,所述对象包括所述部分查询的结果。
23、根据权利要求18至22中的一个权利要求的方法,其中每个部分查询包括一个列表或相互链接的多个列表,并且其中不同于第一个的每个部分查询将以前建立的链接码的值作为输入,所述的链接码将所述的列表或一个或更多所述的多个列表链接到另一个不包括在所述部分查询中的列表。
24、根据权利要求18至23中的一个权利要求的方法,其中所述图表包括至少一个具有与至少两个其它节点链接的分节点,并且其中在初始查询中引用的列表与从所述的分节点衍生的独立分支有关,其中包括与所述分节点(分列表)相对应的部分查询被执行,并且其中至少一个对包含在每个分支中的一个或多个列表的部分查询被执行,每个分支将包括分支列表的部分查询的结果作为输入。
25、根据权利要求18至24中的一个权利要求的方法,包括步骤
—识别涉及初始查询中引用的列表的单个或多个集线器列表,
—在所述数据库的图表表示中,确定至少用于一个集线器列表的、优选将所述集线器连接到所有列表的最佳图表,其中所述的列表与所述的集线器相关,并且其在初始查询中被引用,
—执行串行的部分查询,该查询包括关于所述最佳图表相互串行的列表。
26、根据权利要求1至25中的一个权利要求的方法,其中所述检索所述网关列表的唯一标识符的步骤包括
—确定初始查询中引用的列表,
—在所述数据库的图解表示中,确定连接所述列表的网关列表,其中列表被描绘成节点,列表之间的链节描绘成节点之间的连线,
—查询所述数据库中的网关列表的涉及所述列表的一个或多个索引。
27、根据权利要求26的方法,其中所述的列表的一个或多个特定的条目由查询条件包含,并且查询所述的数据库中的网关列表的涉及所述条目的一个或多个索引。
28、根据权利要求26或27的方法,其中在所述图表表示中,建立从所述列表到所述网关列表的路径,以及对所述索引的所述查询的执行是通过查询与所述图表中的节点相对应的所有列表,来寻找所述的图表中列表之间的链接码的值,该查询是从查询中所引用的列表和在此情况下其某些条目开始的。
29、根据权利要求28的方法,其中依照预先确定的度规,所述的路径是作为所述列表和所述网关列表之间最短的路径而选定的。
30、根据权利要求28或29的方法,其中所述的路径是一部分或是等于该用于确定部分查询的图表,所述的部分查询用于从涉及所述的网关列表的列表中检索附加信息。
31、根据权利要求26至30中的一个权利要求的方法,包括步骤
—如果涉及网关列表的同一行的并且是由所述的查询数据库步骤确定的索引或一组的索引没有唯一识别所述的网关列表的行,确定网关列表的一行或多行与所述的索引相关的唯一标识符。
32、根据权利要求1至31中的一个权利要求的方法,其中用于评估初始查询的部分查询至少部分地在所述的评估进程中动态生成。
33、根据权利要求1至32中的一个权利要求的方法,其中所述结果是由面向对象的表示方法来表示。
34、根据权利要求33的方法,其中所述初始查询的结果表达为通过对象关系映射的方法得来的对象。
35、根据权利要求1至34中的一个权利要求的方法,其中对所述查询的所述评估是在对象管理器的控制下执行的,所述对象管理器包括一组由计算机系统执行的命令。
36、根据权利要求35的方法,其中所述的对象管理器处理对象,该对象代表将被查询的一个或多个数据库的概要或部分概要。
37、根据权利要求35或36的方法,其中所述的对象管理器确定动态生成并例示的类。
38、用于控制对包含有关系数据库的查询进行评估的数据处理系统,其中所述关系数据库包括关系数据库管理系统(RDBMS),所述的查询涉及所述关系数据库的至少一个列表,该数据处理系统包括
—用于确定列表作为评价所述查询的网关列表的装置,
—用于在将被查询的一个或多个列表和网关列表之间建立关系的装置,
—用于使RDBMS检索所述的网关列表的一个或多个唯一标识符的装置,其中所述的唯一标识符涉及将被查询的列表中的一个或多个条目,
—用于使RDBMS从将被查询的列表中检索涉及所述条目的所述被检索唯一标识符的信息的装置,
—用于向所述查询提供或使其将要提供结果的装置。
39、根据权利要求38的数据处理系统,包括用于将所述的关系数据库中的某些列表设定为预先确定的网关列表的装置,网关列表用于将被评估的查询。
40、根据权利要求38或39的数据处理系统,包括用于通过一个或多个数据处理系统控制权利要求1至37中的一个权利要求的方法的执行的装置。
41、计算机程序,使得当其在计算机或计算机系统上执行时,计算机或计算机系统来执行权利要求1至37中的一个权利要求的方法的步骤。
42、计算机可读取的存储介质,包括根据权利要求41所述的程序。
全文摘要
本发明提供了一种评估包括有关系数据库的查询的方法,该关系数据库包括关系数据库管理系统(RDBMS),所述查询涉及所述关系数据库的至少一个列表,所述方法包括确定列表作为评价所述查询的网关列表、检索所述网关列表的一个或多个唯一标识符,其中网关列表涉及将被查询的列表中的一个或多个条目、从将被查询的列表检索涉及所述网关列表的所述被检索的唯一标识符的信息以及提供包括网关列表的检索到的主码的结果集,结果集是关于所述的检索到的信息。本发明进一步提供了一种相关的数据处理系统和程序。
文档编号G06F17/30GK1647075SQ03807700
公开日2005年7月27日 申请日期2003年3月28日 优先权日2002年3月28日
发明者T·埃佐尔德, C·克莱因, J·罗, J·西尔斯 申请人:莱恩生物科学有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1