使用多个引擎来进行图查询处理的制作方法_5

文档序号:9457675阅读:来源:国知局
join运算符的行为 的示例性实施例,除了图8K中的输出关系包括在每一输出节点对之间的连接边的elD的事 实以外,图8K均与图8J中示出的实施例类似。
[0111] 再次参考图7,pathjoin运算符是接收两个关系(S和D)的另一个二元联接运 算符,其中两个列sID和dID分别标识属性图中的节点S和D。对于属性图中的每一个节 点对,pathjoin运算符检查该对是否用属性图中的边序列连接(其中该序列可具有任何 长度)、过滤掉未经连接的节点对、并返回经连接的节点对的元组作为结果。基于图1中 示出的属性图的片段及在图4中示出的其相应关系表示,图8L以简化形式示出pathjoin 运算符在其接收两组节点,即(〃J〇hn〃,〃Alice〃,〃Smith〃)和(〃John〃,〃Alice〃,〃Smith〃) 并返回通过任何长度的关系序列连接的节点对时的行为的示例性实施例。pathjoin还 可接收将特定关系条件施加在每一节点对之间的连接路径的边上的可选参数eLabel。 图8N示出pathjoin运算符在其接收两组节点,即(〃John〃, 〃Alice〃, 〃Smith〃)和 ("John", "Alice", "Smith")并返回通过任何长度的"know(认识)"关系序列连接的节点对 时的示例性实施例。
[0112] 如图7中所例示的,pathjoin运算符还可任选地如下推测连接路径的数据。首 先,pathjoin运算符可用附加的列pID来扩展输入关系的模式,该附加的列pID表示为运 算符输入中指定的每一个节点对之间的连接路径分配的标识符。应注意,这些节点对中的 每一个均可以用多个不同的路径连接,并且由此,输入节点对中的每一个可具有描述所绑 定的路径的数据的多个不同的表示元组。第二,pathjoin运算符可返回描述得到的路径的 数据的另一个输出关系pRel,其中得到的路径中的每一个由表示按有序方式组成该路径的 节点和边的元素序列描述,并且该序列中的每一个元素可由包括但不限于以下的多个字段 表示:表示路径标识符的pID字段、表示元组描述节点还是边的type(类型)字段、表示参 加该路径的节点或边的次序的order(次序)字段、表示节点或边的标识符的ID字段以及 表示节点或边的标记数据的label(标记)字段。在本文中描述的图查询处理技术的示例 性实施例中,如果元组描述节点,则type字段具有值"N",而如果元组描述边,则type字段 具有值"E"。此外,这些路径中的每一个的次序以被定序为1的边开始,接着是被定序为2 的节点,并且随后路径的次序交替,直到到达路径的最后一条边。查询输出中的给定路径变 量的值由与该路径变量相关联的元组的标记数据的串行化表示,其中该标记数据按升序次 序来序列化。
[0113] 图8M和80以简化形式示出pathjoin运算符的刚才描述的推测特征的示例性实 施例。更具体地,图8M示出pathjoin运算符的行为的示例性实施例,除了图8M中例示的输 出关系推测得到的连接路径的数据的事实以外,图8M均与图8L中示出的实施例类似。类 似地,图80示出pathjoin运算符的行为的示例性实施例,除了图80中例示的输出关系推 测得到的连接路径的数据的事实以外,图80均与图8N中示出的实施例类似。
[0114] 再次参考图7,除了sPathJoin运算符返回表示表示属性图中的节点对中的每一 个之间的最短连接的路径(假设这样的连接存在)的事实以外,sPathJoin运算符均按与 pathjoin运算符相同的方式工作。
[0115] 如图7中所例示的,filterPath运算符是接收两个关系(R和pRel)的二元运算 符,其中关系R的pID列表示使其相关联的描述数据由关系pRel来表示的路径标识符。 filterPath运算符返回关系R,其中具有路径pID以及未满足条件cond的数据pRel的元 组被过滤掉。cond参数表示前述路径过滤条件之一。基于图1中示出的属性图的片段及在 图4中示出的其相应关系表示,图8P以简化形式示出filterPath运算符在其基于返回具 有大于1的长度的路径的Length(长度)(例如边数)条件对一组路径进行过滤并过滤掉 这些路径中的其余部分时的行为的示例性实施例。
[0116] 如图7所指示的,此后描述的代数运算符中的一些无法用常规的关系运算符来表 示。基于前述可由本文中描述的图查询处理技术实施例采用的属性图的混合关系表示, 图9示出针对可被转换成一种模式的常规关系表示的代数运算符的映射的示例性实施 例。作为示例而非限制并且如图9所例示的,NgetAttVal运算符可被映射成输入关系R的 nodelD(节点ID)列和该关系的表示指定节点属性(attName(属性名))的ID列之间的联 接操作。NgetAttVal运算符用指定属性(attName)的关系的value(值)列来扩展输入元 组(R.*)的模式。由于getEdgeNodes和edgejoin运算符的语义无法用指定关系(eLabel) 来限制,因此使用标准关系运算符来应用这些运算符需要将输入关系与每一个关系表单独 地联接,并随后执行所有结果的并。更简单地说,可创建表示所有关系表的并的实体化视图 (allEdges)〇
[0117] 图10A和10B示出了此前描述的每一个代数运算符的SQL(结构化查询语言)转 换模版的推断规则的示例性实施例。后面是图10A中示出的表示NgetAttVal运算符的转 换的TRANS-1推断规则的样本解释。在给定关系R表示对三元组模式t的SQL评估的情况 下,对NgetAttValMdeID, (attName) :valUf^算符的SQL转换可使用以下SQL代码来定义:
[0118] SELECTR.attName.ValueFROMR,attName
[0119] WHERER.nodeID=attName.ID;
[0120] 1.4.2前端编译器
[0121] 该节提供对前述示例性前端编译器的更详细描述。
[0122] 图11以简化形式示出用于使用前述基于三元组的代数方言来将G-SPARQL查询变 换成包括关系运算符和非关系运算符的代数查询计划的过程的示例性实施例。如图11中 所例示的,该过程在框1100开始,其中使用推断规则集合来将G-SPARQL查询的三元组模式 映射在前述代数运算符集合上。图12A-12D示出了这样的推断规则的示例性实施例。以下 是图12A中示出的0PMAP-1推断规则的样本解释。0PMAP-1将G-SPARQL查询q的三元组模 式(?var,OattName, ?var2)映射在NgetAttValID. 代数运算符上,其中在给 定?var(Map(?var))变量的映射作为输入关系R的一部分被绑定到列ID的情况下,变 量?var2被绑定到通过应用NgetAttVal运算符的输出关系的(Col(?var2)lvalue) 列值。在图12A-12D中所例示的推断规则中,Triple(q)指代G-SPARQL查询q的三元组模 式集合,PathFilter(q)指代G-SPARQL查询q的路径过滤集合,并且allEdges(例如,推断 规则0PMAP-8)直到表示所有关系表的并的实体化视图。
[0123] 再次参考图11,一旦已将G-SPARQL查询的三元组模式映射到代数运算符集合(框 1100)后,应用查询重写规则集合以便减少G-SPARQL查询评估的执行时间(框1102),其中 这些重写规则专用于本文中描述的G-SPARQL结构。此外,G-SPARQL查询的三元组模式是 根据其"限制性"来重新排序的,其中该重新排序是使用以下三元组优先规则集合来执行的 (框1104)。在给定tl,t2GTriple(q)表示给定G-SPARQL查询q的两个三元组模式的情 况下,每当三元组模式tl与三元组模式t2相比具有更多路径变量(??或? *)时,tl均 被定义成与t2相比更不具限制性(例如,tl>>t2)。每当三元组模式tl与三元组模式 t2相比具有更少路径变量(??or? *)时,tl均被定义成与t2相比更具限制性(例如, tl<<t2)。每当三元组模式tl与三元组模式t2具有相同数目的路径变量(??or? *) 并且tl的路径变量上的过滤表达式的数目大于t2的路径变量上的过滤表达式的数目时, tl也被定义成与t2相比更具限制性(例如,tl<<t2)。换言之,G-SPARQL查询的更具限 制性的三元组模式被给予更高的优先级,以便优化为G-SPARQL查询生成的SQL子查询的联 接次序。
[0124] 图13A和13B示出了刚才描述的查询重写规则集合的示例性实施例。以下是图 13A中示出的REWRITE-1 (重写1)查询重写规则的样本解释。在给定路径变量? *var不 是G-SPARQL查询q的输出变量列表(其被表示成outVarList(q))的一部分的情况下, REWRITE-1将给定G-SPARQL查询q(其三元组模式被表示成Triple(q))的给定三元组模式 (subject, ? *var,object)重写成三元组模式(subject, ??var,object)。
[0125] 图14以简化形式示出将以下示例性G-SPARQL查询前端编译成包括关系运算符和 非关系运算符的示例性查询计划的示例性实施例:
[0126]
[0127] 1.4.3后端编译器
[0128] 该节提供对前述示例性后端编译器的更详细描述。
[0129] 图15以简化形式示出将代数查询计划转换成表示G-SPARQL查询的查询分量的多 个子查询的过程的示例性实施例。。如图15所例示的,该过程在框1500开始,其中每当将 代数查询计划的代数运算符映射成其关系表示可适用时,均进行这样的映射。如此前所描 述的,图9示出这样的映射的示例性实施例。随后将代数查询计划的代数运算符转换成子 查询(框1502),其中该转换包括为与属性图中的关系运算相关联的代数运算符(例如,与 G-SPARQL查询的前述模式匹配分量相关联的代数运算符)生成SQL子查询(框1504),并 为与属性图中的遍历运算相关联的代数运算符(例如,与G-SPARQL查询的前述可达性分量 和最短路径分量相关联的代数运算符)生成非关系子查询(框1506)。
[0130] 如图14中所例示的,在本文中描述的图查询处理技术的示例性实施例中,由前端 编译器生成的代数查询计划可被形成为有向无环图。由此,后端编译器可通过使用常规的 基于经定义模式的转换规则的集合按自下而上(例如从"叶"开始并随后"爬"不同的路径 回到"根")的方式遍历该代数查询计划来将该代数查询计划转换成子查询。如果"爬"到 达了不具有对其语义的常规关系表示的代数运算符或者如果"爬"到达了 "根",则"爬"给 定路径将停止。作为示例而非限制,除pathjoin运算符以外,图14中示出的全部代数运算 符均可被转换成SQL子查询。更具体的并如由图14中的虚线框所指示的,两个SQL子查询 (即SQLJPSQL2)由后端编译器生成,其中这些SQL子查询的以下结果可随后使用pathjoin 运算符被发送至图引擎或混合引擎的基于存储器的组件:
[0131]
[0132]
[0133] 1.4.4查询执行管理器
[0134] 该节提供对查询执行管理器的前述特征中的若干个特征的更详细描述。
[0135] 如此前所描述的,查询执行管理器使用多个独立的查询执行引擎中的哪些当前可 用并且可用查询执行引擎中的每一个的特性以及一个或多个引擎选择规则的知识来标识 这些查询执行引擎中将用来处理每一个查询分量(例如,表示每一个查询分量的子查询) 的查询执行引擎。在本文中描述的图查询处理技术的一个实施例中,基于性能的引擎选择 规则可用于执行此标识,其中这些规则指定G-SPARQL查询的模式匹配分量(例如,表示此 分量的SQL子查询)将由关系数据库引擎或混合引擎的关系数据库组件来执行。基于性 能的引擎选择规则还指定G-SPARQL查询的可达性分量(例如,表示该分量的非关系子查 询)将由图引擎或混合引擎的基于存储器的组件来执行。基于性能的引擎选择规则还指定 G-SPARQL查询的最短路径分量(例如,表示该分量的非关系子查询)将由图引擎或混合引 擎的基于存储器的组件来执行。
[0136] 在本文中描述的图查询处理技术的另一实施例中,至少一个基于货币成本的引擎 选择规则可用于标识多个独立的查询执行引擎中将被用来处理这些查询分量中的每一个 的查询执行引擎,其中该规则指定这些查询分量中的每一个将由多个独立的查询执行引擎 中用起来最便宜的查询执行引擎来执行。在图查询处理技术的又一实施例中,基于性
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1