图数据查询方法与流程

文档序号:12005702阅读:436来源:国知局
图数据查询方法与流程
本发明涉及海量图数据查询技术领域,尤其是涉及一种图数据查询方法。

背景技术:
现代社会中,图的应用越来越广泛,数据的管理技术已被广泛应用于各个领域。其中互联网、社交网络、生物信息学等领域,对海量图数据的高效管理有着很高的需求。如何有效的管理和应用这些大图数据成为当前本领域技术人员所面临的极大挑战。当今随着信息技术的发展和社交网络的兴起,图数据管理技术已成为数据管理领域的研究热点之一。图数据集上的高效查询处理技术,尤其是海量规模图数据上的查询处理,成为解决社交网络分析等大数据时代典型应用的重要基础。许多高效的图查询算法都直接或间接地依赖于两个节点之间特定模式路径的高效计算,例如,GraphGrep子图查询处理算法需要检索所有的长度不大于L的路径;化合物分类算法需要统计带有特定标签的路径;社交网络分析算法中,需要找出边的颜色符合给定正则表达式的路径。这类问题统称为路径模式查询处理,或路径模式匹配,是图数据管理和挖掘中的一项基本操作。正则表达式在文本模式匹配领域有很广泛的应用,其强大的表达能力使之同样适用于定义图的路径模式。它能够在纯文本表达式中表达各种约束和成员的重复模式。因此,本文使用正则表达式定义路径模式,称为图的正则路径模式。现有一些图查询语言虽然支持正则路径查询,但是都存在一定不足。例如,GraphQL只支持有限的正则表达式。SPARQL只支持语义网络数据,难以直接扩展到通用的图数据中。近些年也出现了一些原生图数据库管理系统,如Neo4j、ApacheGiraph,但它们仍然存在一些问题:Neo4j是一个具有强一致性的数据库系统,在大型的分布式环境中性能较差;Giraph不支持高级查询语言,并非一个成熟完整的图数据管理系统。因此,当下需要迫切解决的一个技术问题就是:如何能够提出一种有效的措施,已解决现有技术中存在的问题。

技术实现要素:
本发明所要解决的技术问题是提供一种图数据查询方法,极大地方便了用户查询海量图数据,且很大程度上提高海量图数据的查询执行计划。为了解决上述问题,本发明公开了一种图数据查询方法,包括以下步骤:S01:提交查询,向查询管理服务提交查询,提交后客户端得到一个新的会话ID,然后通过会话ID得到图数据查询的状态;S02:编译,查询管理服务将文本形式的查询编译成查询的内部表示形式,即一个自动机,这一步还包括对自动机进行优化;S03:任务分发,查询管理服务将这个自动机分发给各个并行计算服务;S04:任务执行,并行计算服务维护BSP并行框架,在此框架下使用查询处理算法对查询进行具体的计算;S05:结果收集,由于查询是分布式的,结果分布在并行计算服务集群中的各个机器上,各个机器向管理服务回发所有的查询结果;S06:结果输出,查询管理服务将查询结果传输给客户端;S07:提交更新,客户端向查询管理服务提交更新内容;S08:生成更新日志,查询管理服务根据修改的内容生成更新日志;S09:日志管理,查询管理服务维护着一个全局的更新日志,这一步将生成的更新日志合并到全局的更新日志中;S10:生成更新任务,在数据更新服务中,每次更新表现为一个更新任务,它会将全局更新日志合并到数据文件中,更新任务是重量级的,因此每次更新操作需要根据定期触发或根据修改的数据量触发,不是每次更新操作都会触发生成更新任务的操作;S11:提交更新任务,将更新任务提交给数据更新服务,此时数据更新服务合并更新日志,由于更新任务是重量级的,因此这个步骤不会立即完成,而是由数据更新服务完毕后,更新日志生成,才使用新的数据文件,在更新日志生成之前的时间内,仍然使用旧的数据文件;S12:使用新文件,更新任务完成后,更新日志生成,新的数据文件生成,此时通知数据存储服务开始使用新的文件。综上,本方案能够高效并行执行G-Path查询,与大多数现有图数据管理系统兼容,极大地方便了用户查询海量图数据,且很大程度上提高海量图数据的查询执行计划。附图说明图1是本发明的图数据查询方法的流程示意图;图2是本发明的海量图数据上的路径模式查询系统的结构图;图3是本发明具体实施方式中所述的表1中所示的查询自动机的例子示意图;图4是本发明具体实施方式中所述的数据集的一个模型图示意。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图与实例对本发明作进一步详细说明。但所举实例不作为对本发明的限定。针对以上问题,本文设计并实现了图数据上的一种正则路径查询语言——G-Path,支持传统正则表达式中的各类运算符,例如基本的克莱尼(Kleene)代数运算,和常见的PCRE(Perl-CompatibleRegularExpression,目前最常见的正则表达式语法)中的部分语法。基于整体同步并行(BSP)模型,我们实现了一个分布式算法来处理G-Path查询,并提出了若干优化策略来提高性能。由于整体同步并行模型在图数据处理领域有广泛的应用,G-Path也可以很容易移植到各种现有图数据管理与处理平台上(例如GooglePrege],ApacheGiraph)。同时,基于G-Path,本文开发了一个社交网络搜索应用。该应用可以接受用户搜索关键词,并在交互式用户界面上显示查询结果。它的数据集包含各种不同类型的顶点和边,可以显示G-Path查询的灵活性。本方案提出了G-Path,一个图数据查询方法。该系统基于Hadoop分布式框架和整体同步并行计算模型,可以在无预处理或索引的情况下,进行通用的路径模式查询。同时,为了演示该系统,我们还开发了一个图数据搜索应用,支持在DBLP数据集中搜索各类实体和关系。得益于G-Path的灵活性,该应用支持多种不同种类的查询。例如,某些用户需要搜索某人发表的文章,而另一些用户需要查找作者的合作关系。该应用使用一个图形界面交互式的接受用户输入查询和展示查询结果。参见图1,是本发明的图数据查询方法流程示意图,具体包括:S01:提交查询,向查询管理服务提交查询,提交后客户端得到一个新的会话ID,然后通过会话ID得到图数据查询的状态;S02:编译,查询管理服务将文本形式的查询编译成查询的内部表示形式,即一个自动机,这一步还包括对自动机进行优化;S03:任务分发,查询管理服务将这个自动机分发给各个并行计算服务;S04:任务执行,并行计算服务维护BSP并行框架,在此框架下使用查询处理算法对查询进行具体的计算;S05:结果收集,由于查询是分布式的,结果分布在并行计算服务集群中的各个机器上,各个机器向管理服务回发所有的查询结果;S06:结果输出,查询管理服务将查询结果传输给客户端;S07:提交更新,客户端向查询管理服务提交更新内容;S08:生成更新日志,查询管理服务根据修改的内容生成更新日志;S09:日志管理,查询管理服务维护着一个全局的更新日志,这一步将生成的更新日志合并到全局的更新日志中;S10:生成更新任务,在数据更新服务中,每次更新表现为一个更新任务,它会将全局更新日志合并到数据文件中。更新任务是重量级的,因此每次更新操作需要根据定期触发或根据修改的数据量触发,不是每次更新操作都会触发生成更新任务的操作;S11:提交更新任务,将更新任务提交给数据更新服务。此时数据更新服务合并更新日志,由于更新任务是重量级的,因此这个步骤不会立即完成,而是由数据更新服务完毕后,更新日志生成,才使用新的数据文件,在更新日志生成之前的时间内,仍然使用旧的数据文件;S12:使用新文件,更新任务完成后,更新日志生成,新的数据文件生成,此时通知数据存储服务开始使用新的文件。参见图2,本发明的海量图数据上的路径模式查询系统的结构图,包括数据存储服务模块101、数据更新服务模块102、协调服务模块103、查询管理服务模块104和并行计算服务模块105,其中,所述数据存储服务模块,用于将图数据存储在分布式集群上,并为其他模块提供数据读取功能;所述数据更新服务模块,将更新的日志合并到数据文件中;所述协调服务模块,用于在计算过程中,协调服务负责机器间状态的同步;所述查询管理服务模块,用于对内管理各个成员机器,并进行查询的预处理、查询任务的分发,查询结果的收集;所述并行计算服务模块,用于实际执行查询的服务。优选的,所述查询管理服务模块对外是一个集中式的查询接口,用于提供查询接口、数据更新接口以及会话管理的功能。优选的,所述数据存储服务模块使用HDFS分布式文件系统完成图数据的存储。优选的,所述数据更新服务模块是基于MapReduce构建将更新的日志合并到数据文件中的。按照本发明所述的方案其主要贡献包括:首先,提出了一个通用的路径模式查询语言,称为G-Path,具有简单、通用的特点。此次,提出了一个基于BSP模型的G-Path查询处理算法,可高效并行执行G-Path查询,并与大多数现有图数据管理系统兼容。再次,开发了一个基于G-Path的社交网络搜索应用,能在社交网络数据集上根据关键字或路径模式进行搜索。该应用使用交互式图形用户界面接受输入并展示搜索结果。以下对本方案做细化介绍,2G-Path查询语言与查询系统本节首先简要介绍G-Path查询语言的定义,接下来介绍该语言的查询处理系统。该查询处理系统支持在图数据集上搜索给定的G-Path路径模式。它由两个重要部分组成:(1)编译,将文本查询转换成一个执行计划并进一步优化该计划。在G-Path查询系统中,执行计划用一个有限状态自动机表示,称之为查询自动机。(2)执行,使用整体同步并行模型对查询自动机进行并行执行。2.1G-Path查询语言G-Path查询语言可用于定义正则路径模式。它有语法简单、通用性强等特点。该语言只有两种基本字符:“.”(点号),“-”(减号)。路径中的一个点号代表一个顶点,而一个减号表示一条有向边。例如,“.-.”表示一条有两个顶点的路径,其中有一条从第一个顶点指向第二个顶点的出边。G-Path语言支持常见的正则表达式运算符。如:(1)或操作符“|”可以任意匹配其左部或右部;(2)量词“*”,“+”和“?”分别代表“零次或多次”,“一次或多次”,“零次或一次”;(3)组操作符“()”,它将括号中的部分看作一个整体来匹配其他操作符。由于G-Path是属性图上的查询语言,我们额外定义了属性过滤器“[attrOPvalue]”。属性过滤器紧跟一个点号或减号,对这个顶点或边上的属性进行限定,其中OP可以是如“=”,“!=”,“>”,“>=”,“<”或“<=”这类二元关系运算符。可以将多个属性过滤器组合,表示逻辑合取关系。例如,“.[year=2013][name=World]”与一个“year”属性为2013、“name”属性为“World”的节点相匹配。一个合法的路径序列中顶点和边应该交替出现,且序列的第一个和最后一个元素应为顶点。我们称之为查询的完整性约束。然而,查询输入有时会违反此约束,例如,“..”表示两个顶点的连接。对于该查询,很容易推断出用户想要查询的是“.-.”。为了简化语法,G-Path语言支持省略无属性过滤器的顶点或边,但不允许同时省略两个相邻的实体。G-Path编译器可以从完整性约束推断出省略的部分。2.2查询自动机一个有效G-Path查询将被编译成一个查询自动机。与正常的确定有限自动机(DFA)相似,查询自动机包括不同的状态以及状态间的转换,但是查询自动机与常见的确定有限自动机相比还存在许多差异。查询自动机中的每个状态对应于路径中的一个节点。每次状态之间的转换都使得路径长度增加1。查询自动机和DFA的一个明显区别在于,查询自动机的一个状态中包含顶点和边上的谓词,所以查询自动机相比于正常的DFA更适合于图数据,而且可以很容易使用基于BSP模型的并行执行器执行。一个查询自动机可以表示为一个查询状态表。表1展示了查询“.[id=1]-.”的例子,“顶点匹配”下的“谓词”栏含有到达该状态的顶点应该符合的谓词(谓词“*”为无限制,即永真谓词),如果符合了这个谓词,则可以进入“状态转换”部分。状态转换部分有三种类型,In(Out)转换意味着自动机可以通过满足给定谓词的入边(出边)到达一个新状态。Accept意味着满足“顶点匹配”之后,已经匹配了完整路径,可以输出此路径。表1查询状态表2.3并行查询处理G-Path的一大优势在于支持以并行方式执行查询。我们基于整体同步并行(BSP)模型构建了查询引擎。BSP模型将算法分为迭代进行的超步(super-step),在每个超步中,每个节点将开启一个逻辑线程,进行特定的计算,节点之间通过收发消息来通信,当前超步中发送的所有消息在下一个超步中被统一接收并处理。在G-Path的查询算法中,每个BSP消息定义为有序对(State,Path),其中State是目前状态,Path是已匹配的路径片段。在一个超步中,每个节点收到的每条消息都可以视为一个查询自动机,其状态为State。沿着该顶点的每条边计算出当前节点的下一个状态。如果下一个状态是有效的,则会沿着边发送表示下一个状态的消息。每一个消息都可以视为一个查询自动机,因此新消息的产生就可以看作自动机执行过程的分支。由于发送消息相对于分支执行更加轻量化,同样的系统容量就可以容纳更大规模的并行。这是G-Path的一大优势。图3是执行表1中所示的查询自动机的例子。第一个超步中,顶点1向它的邻居发送状态2的消息。在第二个超步中,顶点2、3、4分别从顶点1接收到消息。因为状态2的“状态转换”一栏包括了Accept,所以这些顶点会分别输出一个路径。最终结果集是[1,2],[1,3],[1,4]。2.4优化优化是数据管理系统中一个重要的组成部分。我们开发了多种优化机制来加速G-Path查询。优化从两个方面进行:编译期优化和运行时优化。我们将从这两方面介绍一些优化方案。首先,查询自动机支持沿不同类型(In或Out)边的转换,我们可以构造出等价的查询自动机。例如对于查询“.-.[id=1]”,我们可以从所有顶点开始,沿出边找到ID为1的后继顶点;也可以先找到ID等于1的顶点,然后沿入边找到它的所有前驱顶点。第二种方式显然比第一种方式消息数更少。我们使用顶点属性的统计信息来选择最优的等价自动机。这是编译期优化的主要内容。其次,我们注意到如果一个顶点收到多条State相同的信息,则接下来的执行步骤几乎相同。如果我们将这些消息能聚合起来,就可以减少大量的信息传递。基于这一现象,我们提出了树压缩优化,将同样State的所有消息压缩起来,并将它们的Path结合成树。一个树压缩消息可以包含许多原始消息,减少了大量的消息传递。这是运行时优化的一个例子。3系统演示本节介绍基于G-Path查询系统建立的社交网络搜索应用。该演示应用采用DBLP数据集。数据集中的顶点有3种类型:Person,Article和Journal。边都是无向的,因此可以在两个方向上进行检索。Publish边连接Person和Article,Contains边连接Journal和Article。如果两个人合著了共同的文章,则由Co-author边相连。图4是该数据集的一个模型图。它表示出了不同类型的顶点和顶点之间的不同类型的边。数据集中顶点和边含有不同类型的优点在于可以表达多种类型的查询。该数据集包含1,617,172个顶点和6,323,177条边缘,有713,124个不同的人,902,746篇文章和1302种期刊。Co-author、Contains和Publish关系的数量分别是3,095,497,902,523和2,325,157。3.1用户界面该系统支持直接的G-Path查询,但这对终端用户不够友好。所以该应用程序还支持像其他搜索引擎一样输入关键词。关键词会被转化为人、文章或者期刊上的查询。在查询结果中,圆代表人,矩形表示文章,圆角矩形代表期刊。3.2典型查询在这一节中我们将给出我们系统处理的不同类型的典型查询。实体搜索可以通过在搜索框中输入关键词实现。系统将其转换成G-Path查询“.[name>>KEYWORD]”(此处与下文中用KEYWORD表示用户输入的查询关键词),默认情况下系统会从所有人、文章与期刊中查询含有关键词的实体。如果关键词拥有前缀@,表示寻找一个人。中括号中的关键词(<KEYWORD>)表示寻找一个期刊,引号中的关键词(“KEYWORD”)表示寻找一篇文章。协作者搜索旨在找到给定的人的所有协作者。对应的G-Path查询应为“.[name>>KEYWORD].[type=Person]”。在这个查询中,第一个点与给定人相匹配,第二个点与他的协作者匹配。搜索相似期刊是另一种类型的查询。用户不仅可以搜索人与人之间的关系,也可以搜索期刊之间的关系,这显示了系统的灵活性。如果一个人在不同的期刊上发表多篇论文,可以推断这些期刊之间也可能有着相似的兴趣。在实际操作中,假如有两个不同的期刊分别是“IBMResearchReport”和“IBMResearchReport,SanRose,California”。实际上它们是同一期刊,但因为我们仅使用期刊的全名文本来进行区分,所以这两个期刊被看作了不同的期刊。它们之间理应有很高的相似度。该系统还可以搜索相似的人,我们认为一个协作关系是一个强关系,但如果两个人在同一期刊上发表文章,他们之间可能存在一个弱关系(即有共同兴趣)。4总结本文提出了一个通用的路径查询语言G-Path及其查询处理算法。G-Path查询语言具有语法简单、功能强大的特点。并行查询处理算法可以在分布式计算集群高效处理海量图数据。基于整体同步并行模型,G-Path也可方便地集成到现有的图数据管理系统中以改善已有解决方案。以上对本发明所提供的图数据查询方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1