CN110941741A - 图数据的路径检索处理方法、装置、服务器及存储介质 - Google Patents
图数据的路径检索处理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110941741A CN110941741A CN201811109810.5A CN201811109810A CN110941741A CN 110941741 A CN110941741 A CN 110941741A CN 201811109810 A CN201811109810 A CN 201811109810A CN 110941741 A CN110941741 A CN 110941741A
- Authority
- CN
- China
- Prior art keywords
- node
- ith
- level node
- path
- task group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种图数据的路径检索处理方法、装置、服务器及存储介质,该方法包括:接收终端发送的路径查询请求;根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;将所述路径查询结果发送给所述终端。通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。
Description
技术领域
本申请涉及关系数据技术领域,尤其涉及一种图数据的路径检索处理方法、装置、服务器及存储介质。
背景技术
在大规模关系数据场景下,对于关系数据的路径检索成为重要的技术,已有的基于关系的路径检索包括基于KEYVALUE数据库的关系构建,多种关系对应多张表格,路径的一步对应一次两表的join操作,但是多度路径查询代价大,需要多个表依次做全量拼接,导致计算量大,实时查询需要大量的分布式计算资源。
为了解决这一问题,现有技术中采用传统的基于图数据库的关系查询(即路径检索),将关系查询转变为图的遍历问题。但是随着图数据规模的增长以及图上面各种应用需求的增加,传统的基于图数据库的关系查询方法是对自身图的顺序遍历,已经不能有效对大规模的图数据进行查询。因此,如何有效对大规模的图数据进行查询成为亟需解决的技术问题。
发明内容
本申请提供一种图数据的路径检索处理方法、装置、服务器及存储介质,以解决现有技术检索速度慢效率低等缺陷。
本申请第一个方面提供一种图数据的路径检索处理方法,包括:
接收终端发送的路径查询请求;
根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;
将所述路径查询结果发送给所述终端。
本申请第二个方面提供一种图数据的路径检索处理装置,包括:
接收模块,用于接收终端发送的路径查询请求;
处理模块,用于根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;
发送模型,用于将所述路径查询结果发送给所述终端。
本申请第三个方面提供一种服务器,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现第一个方面提供的方法。
本申请第四个方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现第一个方面提供的方法。
本申请提供的图数据的路径检索处理方法、装置、服务器及存储介质,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例适用的图数据的路径检索处理系统的结构示意图;
图2为本申请另一实施例提供的图数据的路径检索处理方法的流程示意图;
图3为本申请再一实施例提供的宽度优先搜索示意图;
图4为本申请一实施例提供的超大节点的查询任务示意图;
图5为本申请一实施例提供的深度优先搜索示意图;
图6为本申请一实施例提供的图数据的路径检索处理装置的结构示意图;
图7为本申请一实施例提供的图数据查询模块架构示意图;
图8为本申请一实施例提供的服务器的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
图数据:即图形数据,用图来表达关系数据。用图形数据库进行存储。
深度优先搜索:Depth First Search,简称DFS。深度优先搜索属于图算法的一种,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。顶点也称节点。深度优先搜索可以用栈(stack)来实现,整个过程可以想象成一个倒立的树形:1、把根节点(即起始节点)压入栈中。2、每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中。并把这个元素记为它下一级元素的前驱。3、找到所要找的元素时结束程序。4、如果遍历整个树还没有找到,结束程序。
宽度优先搜索:Breadth First Search,简称BFS,又称广度优先搜索,通过已找到和未找到顶点之间的边界向外扩展,就是说,算法首先搜索和s距离为k的所有顶点,然后再去搜索和S距离为k+l的其他顶点。广度优先搜索可以使用队列(queue)来实现,整个过程也可以看做一个倒立的树形:1、把根节点放到队列的末尾。2、每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾。并把这个元素记为它下一级元素的前驱。3、找到所要找的元素时结束程序。4、如果遍历整个树还没有找到,结束程序。
本申请实施例提供的图数据的路径检索处理方法,适用于如下图数据的路径检索处理系统。如图1所示,为本申请实施例适用的图数据的路径检索处理系统的结构示意图。该图数据的路径检索处理系统可以包括搜索服务器、图数据库服务器及至少一个用户终端,N为正整数。搜索服务器接收用户终端发送的路径查询请求,并根据路径查询请求查询图数据库服务器,获得路径查询结果返回给用户终端。该系统还可以包括缓存服务器,用于缓存超大节点的邻接边的索引值,该索引值可以是边的标识,比如边的ID,也可以是边的哈希值或者其他标识性信息,具体可以根据实际需求设置。可选地,图数据库可以配置在搜索服务器中,则系统中可以不包括图数据库服务器。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
本实施例提供一种图数据的路径检索处理方法,用于检索关系数据。本实施例的执行主体为图数据的路径检索处理装置,该装置可以设置在服务器等计算机设备中。
如图2所示,为本实施例提供的图数据的路径检索处理方法的流程示意图,该方法包括:
步骤101,接收终端发送的路径查询请求。
步骤102,根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;
步骤103,将路径查询结果发送给终端。
具体的,可以在图形数据库存储有大规模的关系数据,当用户需要了解其中两个关联数据的具体关系时,可以通过该用户的终端向搜索服务器发送路径查询请求,比如两个人的关系,用户可以在终端界面选择两个人的姓名或者其他展示的信息(具体的展示方式可以根据实际需求设置,本实施例不做限定),进行查询,终端则可以获取这两个姓名对应的图数据的节点标识,生成路径查询请求发送给搜索服务器。
路径查询请求中可以包括待查询的起点标识和终点标识,起点标识对应起始节点,终点标识对应终节点。
搜索服务器在获取到路径查询请求后,控制至少两个任务组进行路径查询,以获得路径查询结果。这些任务组中至少有一个任务组包括至少两个线程。具体每个任务组包括线程的数量可以根据实际需求设置。多个线程可以并行执行任务。从而加快路径检索效率。具体的路径查询可以采用现有技术中任意可实施的路径搜索算法,比如宽度优先搜索算法、深度优先搜索算法等等。
示例性的,以宽度优先搜索算法为例,第1任务组可以只包括一个线程,负责查询起始节点,获得起始节点的各邻接边及各邻接边另一端连接的节点,比如起始节点连接了4个节点,则将4个节点的标识输入到第2任务组,第2任务组则可以包括至少两个线程,每个线程负责两个节点的查询,优选地可以包括4个线程,每个线程负责一个节点的查询,即查询该节点的各邻接边及各邻接边连接的其他节点。依此类推,根据宽度优先搜索机制,可以以起始节点为根节点,与根节点距离相同的节点为同一级节点,每一级节点的查询由一个任务组执行,将查询的下一级节点(包括多个节点,可以称为节点集合)作为下一个任务组的起始点集合,即形成了有序的任务组。每个任务组可以通过多个线程并行执行查询任务。
可选地,若采用深度优先搜索算法,则第1任务组仍然负责查询起始节点的邻接边及各邻接边连接的第一节点(有多个第一节点),第2任务组则可以对至少两个第一节点进行并行查询,获得第一节点邻接的第二节点,那么第3任务组可以对至少两个第二节点进行并行查询,如此进行深度遍历,并记录被查询的节点信息。当一次深度遍历完后,退回到尚未被查询的节点,按照上述方式再次进行深度遍历。如此,采用深度优先搜索算法,需要的任务组的数量不确定。
在获得路径查询结果后,将路径查询结果发送给终端。
可选地,路径查询结果可以是起始节点与终节点的最短路径,或者也可以是多条路径,供用户查看了解。也可以根据实际需求设置需要返回的信息内容,比如包括起始节点与终节点路径上各节点的具体信息。比如用户查询的是张三和李四,返回终端的信息可以包括张三的相关数据、通过中间节点某电影的相关数据、以及李四的相关数据。比如张三是该电影的主演,李四是该电影的导演,返回终端的信息可以包括电影名称、导演名称李四、主演张三等等。再比如,刑侦场景下,可以获得两个人共同到过什么场所、有哪些相同的朋友等等。这里只是示例性说明,具体的展示方式可以根据实际需求进行设置,本实施例不做限定。
本实施例提供的图数据的路径检索处理方法,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。
实施例二
本实施例对实施例一提供的方法做进一步补充说明。
作为一种可实施的方式,在上述实施例一的基础上,可选地,路径查询请求至少包括待查询的起点标识及终点标识。步骤102具体可以包括:
控制第i任务组查询第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点,其中,第1级节点为起点标识对应的起始节点,i为正整数。
迭代执行上述步骤,直至满足预设迭代控制条件,获得路径查询结果。
具体的,搜索服务器控制第1任务组查询第1级节点,获得第1级节点的各邻接边及各邻接边连接的第2级节点,第1级节点为起点标识对应的起始节点,比如第1级节点由4条邻接边连接有4个第2级节点,则将4个第2级节点输入到第2任务组,第2任务组可以包括4个线程,每个线程执行一个第2级节点的查询任务,分别获得各第2级节点的邻接边及各邻接边连接的第3级节点。以此类推,执行宽度优先的遍历,直至满足预设迭代控制条件。预设迭代控制条件可以根据实际需求进行设置,比如可以设置预设路径距离阈值、预设路径数量阈值等等。其中,预设路径距离阈值即与起始节点的距离阈值,比如上述第2级节点为起始节点的邻接节点,与起始节点的距离为1,上述第3级节点与起始节点的距离为2,以此类推,在此不再赘述。在查询过程中,若查询的距离超过了预设路径距离阈值,则停止查询,或者若查询到的路径数量超过了预设路径数量阈值,则停止查询。
可选地,采用宽度优先搜索算法进行路径查询;第i任务组包括的线程数量可以与第i级节点的个数相同;控制第i任务组查询第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点,包括:
控制第i任务组的各线程并行查询各第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点。
即对于每个任务组,每个线程执行一个节点的查询任务,获得该节点的邻接边及连接的节点。
示例性的,如图3所示,为本实施例提供的宽度优先搜索示意图。
可选地,在控制第i任务组的各线程并行查询各第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点之后,方法还包括:
控制第i任务组对获得的第i级节点的各邻接边及各邻接边连接的第i+1级节点进行合并及过滤处理,以合并相同的节点及去除已查询过的节点,获得处理后的第i+1级节点;将处理后的第i+1级节点输入到第i+1任务组。
具体的,每个任务组在查询过程中可以记录已查询的节点信息,不同任务组可能会查询到相同的节点,那么下个任务组在查询时,可以不再查询已经查询过的节点,因此每个任务组在完成查询后,需要对查询结果进行过滤,去除已经被查询过的节点,并且,由于各线程并行查询,也可能会在查询结果中包括多个相同的节点,该任务组还需要将这些相同的节点合并,将过滤及合并后的节点再输入给下一个任务组。以避免对节点的重复查询。
可选地,在控制第i任务组的各线程并行查询各第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点之后,方法还包括:
控制第i任务组判断第i+1级节点中是否包括终节点;若第i+1级节点中均不包括终节点,则进入第i+1任务组的执行过程;若第i+1级节点中包括终节点,则记录起始节点到终节点的路径信息。
具体的,在每个任务组完成查询任务后,需要进行判断,是否找到了终节点。若未找到则进入一下各任务组的查询,若找到终节点,则可以记录起始节点到终节点的路径信息。
可选地,每个任务组完成查询任务后,还需要判断是否已满足预设迭代控制条件,若满足则需要结束查询。
可选地,控制第i任务组的各线程并行查询各第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点,具体可以包括:
对于每个第i级节点,判断其是否为超大节点;若是超大节点,则根据该第i级节点的各邻接边索引值,采用至少两个线程获得该第i级节点的各邻接边及各邻接边连接的第i+1级节点。
可选地,对于每个第i级节点,判断其是否为超大节点,包括:
获取预先存储的该第i级节点对应的邻接边索引值数量;若该第i级节点对应的邻接边索引值数量超过预设邻接边阈值,则确定该第i级节点为超大节点。
具体的,在查询过程中可能会有超大节点,会遍历到非常多的邻接边及连接的节点,这样一方面会导致这个节点相关的关系数据查询非常慢,拖慢整体查询速度,另一方面该任务组会一次查询出超大查询结果,可能会导致内存上的压力,对此,可以预先灌库超大节点的邻接边索引,在线程对超大节点进行查询时,可以先判断是否是超大节点,若是超大节点,则可以查询该节点的邻接边索引集合,将超大节点的查询转换成多个子任务进行查询,即将原本一个线程执行的查询任务拆分成多个线程并行查询。
其中,灌库超大节点的邻接边索引具体为:对于超大节点的邻接边,将各邻接边的索引值灌入缓存服务器,即在缓存服务器对应存储节点标识与邻接边索引值的对应关系。后续控制线程查询到该节点时,可以从缓存服务器查询该节点的邻接边索引值集合,若邻接边索引值数量超过预设邻接边阈值,则判断为超大节点。可以将该线程的任务拆分成多个线程的任务,并行查询该节点。具体可以根据邻接边索引值进行拆分。比如一个超大节点的邻接边索引值包括1500个,则可以由3个线程,每个线程查询获得500个邻接边索引值对应的邻接边及各邻接边连接的各节点。示例性的,如图4所示,为本实施例提供的超大节点的查询任务示意图。其中,原本需要线程1查询该节点,该节点包括8个邻接边,需要线程1遍历这8个邻接边,获得各邻接边的信息及各邻接边连接的节点信息,比如索引值就是1-8,那么根据索引值拆分,采用3个线程一起来查询这个节点的8个邻接边,线程2负责1-3,线程3负责4-5,线程4负责6-8,这3个线程可以并行查询,从而有效提高了对这个节点的查询速度,可以更快地获得对这个节点的查询结果,即这个节点的8个邻接边及各邻接边连接的节点信息。
在图数据中,每个节点可以表示任意的数据,比如一个人的相关信息、一个电影的相关信息、地点的信息等等。每个边表示两个节点之间的某种关系,比如一个节点为“张三”、一个节点为“电影A”,“张三”与“电影A”的连接边表示,张三为电影A的导演。两个节点之间可能具有一种或多种关系,即可能具有多条边,每条边可能是有方向的。具体的图数据为现有技术,在此不再赘述。
通过将超大节点的查询任务拆分成多个子任务由多个线程并行执行,进一步提高了路径检索的效率。
可选地,路径查询结果为起点标识对应的起始节点与终点标识对应的终节点的最短路径。具体的获得最短路径的方式可以为:在迭代查询过程中记录查询到的每一条路径信息,当查询结束后,在查询到的所有路径中选出最短路径作为路径查询结果。
可选地,预设迭代控制条件包括预设路径距离阈值、预设路径数量阈值中的至少一种。
作为另一种可实施的方式,在上述实施例的基础上,可选地,采用深度优先搜索算法进行路径查询,路径查询请求至少包括待查询的起点标识及终点标识;
根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,包括:
控制第1任务组查询起点标识对应的起始节点的邻接边及各邻接边连接的第一节点;
控制第2任务组,并行查询至少两个第一节点的各邻接边及各邻接边连接的第二节点,并记录被查询的第一节点信息;
控制第3任务组,并行查询至少两个第二节点的各邻接边及各邻接边连接的第三节点,并记录被查询的第二节点信息;
依此类推,当到达预设深度后,退回到未被查询的第j节点,控制任务组并行查询至少两个第j节点;
依此进行深度遍历,直至满足预设迭代控制条件,获得路径查询结果。
具体的,第1任务组仍然负责查询起始节点的邻接边及各邻接边连接的第一节点(有多个第一节点),第2任务组则可以对至少两个第一节点进行并行查询,获得第一节点邻接的第二节点,那么第3任务组可以对至少两个第二节点进行并行查询,如此进行深度遍历,并记录被查询的节点信息。当一次深度遍历完后,退回到尚未被查询的节点,按照上述方式再次进行深度遍历。
示例性的,如图5所示,为本实施例提供的深度优先搜索示意图。
可选地,对于具体采用哪种搜索算法,可以由用户指定,即用户可以在终端界面选择使用的搜索算法,将指定的搜索算法标识携带在路径查询请求中发送给服务器,服务器接收到路径查询请求后,调用相应的搜索算法进行路径查询。也可以由服务器随机选择,或者按照预定规则选择,比如轮流采用等等。具体设置方式可以根据实际需求设置,本申请实施例不做限定。
对于预设迭代控制条件,也可以是用户在用户终端设置,即路径查询请求中包括迭代控制参数,或者直接配置在服务器中,具体可以根据实际需求设置,本申请实施例不做限定。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
本实施例提供的图数据的路径检索处理方法,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。并且,可以将对超大节点的查询任务拆分成多个子任务并行查询,进一步提高了路径检索的效率。
实施例三
本实施例提供一种图数据的路径检索处理装置,用于执行上述实施例一的方法。
如图6所示,为本实施例提供的图数据的路径检索处理装置的结构示意图。该图数据的路径检索处理装置30包括接收模块31、处理模块32和发送模块33。
其中,接收模块31用于接收终端发送的路径查询请求;处理模块32用于根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;发送模型33用于将路径查询结果发送给终端。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本实施例提供的图数据的路径检索处理装置,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。
实施例四
本实施例对上述实施例三提供的装置做进一步补充说明。
作为一种可实施的方式,在上述实施例三的基础上,可选地,路径查询请求至少包括待查询的起点标识及终点标识;处理模块,具体用于:
控制第i任务组查询第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点,其中,第1级节点为起点标识对应的起始节点,i为正整数;
迭代执行上述步骤,直至满足预设迭代控制条件,获得路径查询结果。
可选地,采用宽度优先搜索算法进行路径查询;第i任务组包括的线程数量与第i级节点的个数相同;
处理模块,具体用于:
控制第i任务组的各线程并行查询各第i级节点,获得第i级节点的各邻接边及各邻接边连接的第i+1级节点。
可选地,处理模块,还用于:
控制第i任务组对获得的第i级节点的各邻接边及各邻接边连接的第i+1级节点进行合并及过滤处理,以合并相同的节点及去除已查询过的节点,获得处理后的第i+1级节点;将处理后的第i+1级节点输入到第i+1任务组。
可选地,处理模块,还用于:
控制第i任务组判断第i+1级节点中是否包括终点标识对应的终节点;
若第i+1级节点中均不包括终节点,则进入第i+1任务组的执行过程;
若第i+1级节点中包括终节点,则记录起始节点到终节点的路径信息。
可选地,处理模块,具体用于:
对于每个第i级节点,判断其是否为超大节点;若是超大节点,则根据该第i级节点的各邻接边索引值,采用至少两个线程获得该第i级节点的各邻接边及各邻接边连接的第i+1级节点。
可选地,处理模块,具体用于:
获取预先存储的该第i级节点对应的邻接边索引值数量;
若该第i级节点对应的邻接边索引值数量超过预设邻接边阈值,则确定该第i级节点为超大节点。
作为另一种可实施的方式,在上述实施例三的基础上,可选地,采用深度优先搜索算法进行路径查询,路径查询请求至少包括待查询的起点标识及终点标识;
处理模块,具体用于:
控制第1任务组查询起点标识对应的起始节点的邻接边及各邻接边连接的第一节点;
控制第2任务组,并行查询至少两个第一节点的各邻接边及各邻接边连接的第二节点,并记录被查询的第一节点信息;
控制第3任务组,并行查询至少两个第二节点的各邻接边及各邻接边连接的第三节点,并记录被查询的第二节点信息;
依此类推,当到达预设深度后,退回到未被查询的第j节点,控制任务组并行查询至少两个第j节点;
依此进行深度遍历,直至满足预设迭代控制条件,获得路径查询结果。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
根据本实施例的图数据的路径检索处理装置,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。并且,可以将对超大节点的查询任务拆分成多个子任务并行查询,进一步提高了路径检索的效率。
在一些实施例中,还可以将搜索服务器划分为路径算法控制器、算法计划执行器及任务组等模块,如图7所示,为本实施例提供的图数据查询模块架构示意图。其中,路径算法控制器提供多种定制化的遍历图的方式,主要可以分为宽度优先搜索和深度优先搜索。路径算法控制器主要根据服务器接收到的路径查询请求调用对应的遍历图的算法来查找图中的多度关系路径。算法计划执行器负责将具体的遍历搜索过程拆分为多个有序的任务组的执行过程,每个任务组会查询图数据库,获取到一批节点的邻接边及这些邻接边的另一端连接的节点,以及对这些邻接边及节点进行过滤与合并后,输入给下个任务组。每个任务组可以包括一个或多个线程,即执行一个或多个子任务,实现并行查询。缓存服务器提供索引服务,为搜索服务器判断节点是否为超大节点提供依据。图数据库服务器用于提供图数据的支持,即存储有图数据,供搜索服务器进行查询。
实施例五
本实施例提供一种服务器,即搜索服务器,用于执行上述任一实施例提供的方法。
如图8所示,为本实施例提供的服务器的结构示意图。该服务器50包括:至少一个处理器51和存储器52;
存储器存储计算机程序;至少一个处理器执行存储器存储的计算机程序,以实现上述实施例提供的付费处理方法。
根据本实施例的服务器,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。并且,可以将对超大节点的查询任务拆分成多个子任务并行查询,进一步提高了路径检索的效率。
实施例六
本实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,计算机程序被执行时实现上述任一实施例提供的方法。
根据本实施例的计算机可读存储介质,通过根据路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程,实现并行查询,提高了路径检索效率。并且,可以将对超大节点的查询任务拆分成多个子任务并行查询,进一步提高了路径检索的效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (20)
1.一种图数据的路径检索处理方法,其特征在于,包括:
接收终端发送的路径查询请求;
根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;
将所述路径查询结果发送给所述终端。
2.根据权利要求1所述的方法,其特征在于,所述路径查询请求至少包括待查询的起点标识及终点标识;
所述根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,包括:
控制第i任务组查询第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点,其中,第1级节点为所述起点标识对应的起始节点,i为正整数;
迭代执行上述步骤,直至满足预设迭代控制条件,获得所述路径查询结果。
3.根据权利要求2所述的方法,其特征在于,采用宽度优先搜索算法进行路径查询;第i任务组包括的线程数量与第i级节点的个数相同;
所述控制第i任务组查询第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点,包括:
控制第i任务组的各线程并行查询各第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点。
4.根据权利要求3所述的方法,其特征在于,在控制第i任务组的各线程并行查询各第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点之后,所述方法还包括:
控制第i任务组对获得的第i级节点的各邻接边及各邻接边连接的第i+1级节点进行合并及过滤处理,以合并相同的节点及去除已查询过的节点,获得处理后的第i+1级节点;
将处理后的第i+1级节点输入到第i+1任务组。
5.根据权利要求3所述的方法,其特征在于,在控制第i任务组的各线程并行查询各第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点之后,所述方法还包括:
控制第i任务组判断第i+1级节点中是否包括所述终点标识对应的终节点;
若第i+1级节点中均不包括所述终节点,则进入第i+1任务组的执行过程;
若第i+1级节点中包括所述终节点,则记录所述起始节点到所述终节点的路径信息。
6.根据权利要求3所述的方法,其特征在于,控制第i任务组的各线程并行查询各第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点,包括:
对于每个第i级节点,判断其是否为超大节点;若是超大节点,则根据该第i级节点的各邻接边索引值,采用至少两个线程获得该第i级节点的各邻接边及各邻接边连接的第i+1级节点。
7.根据权利要求6所述的方法,其特征在于,对于每个第i级节点,判断其是否为超大节点,包括:
获取预先存储的该第i级节点对应的邻接边索引值数量;
若该第i级节点对应的邻接边索引值数量超过预设邻接边阈值,则确定该第i级节点为超大节点。
8.根据权利要求2-7任一项所述的方法,其特征在于,所述路径查询结果为所述起点标识对应的起始节点与所述终点标识对应的终节点的最短路径。
9.根据权利要求2所述的方法,其特征在于,所述预设迭代控制条件包括预设路径距离阈值、预设路径数量阈值中的至少一种。
10.根据权利要求1所述的方法,其特征在于,采用深度优先搜索算法进行路径查询,所述路径查询请求至少包括待查询的起点标识及终点标识;
所述根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,包括:
控制第1任务组查询所述起点标识对应的起始节点的邻接边及各邻接边连接的第一节点;
控制第2任务组,并行查询至少两个第一节点的各邻接边及各邻接边连接的第二节点,并记录被查询的第一节点信息;
控制第3任务组,并行查询至少两个第二节点的各邻接边及各邻接边连接的第三节点,并记录被查询的第二节点信息;
依此类推,当到达预设深度后,退回到未被查询的第j节点,控制任务组并行查询至少两个第j节点;
依此进行深度遍历,直至满足预设迭代控制条件,获得所述路径查询结果。
11.一种图数据的路径检索处理装置,其特征在于,包括:
接收模块,用于接收终端发送的路径查询请求;
处理模块,用于根据所述路径查询请求,控制至少两个任务组进行路径查询,获得路径查询结果,其中,至少有一个任务组包括至少两个线程;
发送模型,用于将所述路径查询结果发送给所述终端。
12.根据权利要求11所述的装置,其特征在于,所述路径查询请求至少包括待查询的起点标识及终点标识;所述处理模块,具体用于:
控制第i任务组查询第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点,其中,第1级节点为所述起点标识对应的起始节点,i为正整数;
迭代执行上述步骤,直至满足预设迭代控制条件,获得所述路径查询结果。
13.根据权利要求12所述的装置,其特征在于,采用宽度优先搜索算法进行路径查询;第i任务组包括的线程数量与第i级节点的个数相同;
所述处理模块,具体用于:
控制第i任务组的各线程并行查询各第i级节点,获得所述第i级节点的各邻接边及各邻接边连接的第i+1级节点。
14.根据权利要求13所述的装置,其特征在于,所述处理模块,还用于:
控制第i任务组对获得的第i级节点的各邻接边及各邻接边连接的第i+1级节点进行合并及过滤处理,以合并相同的节点及去除已查询过的节点,获得处理后的第i+1级节点;
将处理后的第i+1级节点输入到第i+1任务组。
15.根据权利要求13所述的装置,其特征在于,所述处理模块,还用于:
控制第i任务组判断第i+1级节点中是否包括所述终点标识对应的终节点;
若第i+1级节点中均不包括所述终节点,则进入第i+1任务组的执行过程;
若第i+1级节点中包括所述终节点,则记录所述起始节点到所述终节点的路径信息。
16.根据权利要求13所述的装置,其特征在于,所述处理模块,具体用于:
对于每个第i级节点,判断其是否为超大节点;若是超大节点,则根据该第i级节点的各邻接边索引值,采用至少两个线程获得该第i级节点的各邻接边及各邻接边连接的第i+1级节点。
17.根据权利要求16所述的装置,其特征在于,所述处理模块,具体用于:
获取预先存储的该第i级节点对应的邻接边索引值数量;
若该第i级节点对应的邻接边索引值数量超过预设邻接边阈值,则确定该第i级节点为超大节点。
18.根据权利要求11所述的装置,其特征在于,采用深度优先搜索算法进行路径查询,所述路径查询请求至少包括待查询的起点标识及终点标识;
所述处理模块,具体用于:
控制第1任务组查询所述起点标识对应的起始节点的邻接边及各邻接边连接的第一节点;
控制第2任务组,并行查询至少两个第一节点的各邻接边及各邻接边连接的第二节点,并记录被查询的第一节点信息;
控制第3任务组,并行查询至少两个第二节点的各邻接边及各邻接边连接的第三节点,并记录被查询的第二节点信息;
依此类推,当到达预设深度后,退回到未被查询的第j节点,控制任务组并行查询至少两个第j节点;
依此进行深度遍历,直至满足预设迭代控制条件,获得所述路径查询结果。
19.一种服务器,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求1-10中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811109810.5A CN110941741A (zh) | 2018-09-21 | 2018-09-21 | 图数据的路径检索处理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811109810.5A CN110941741A (zh) | 2018-09-21 | 2018-09-21 | 图数据的路径检索处理方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110941741A true CN110941741A (zh) | 2020-03-31 |
Family
ID=69905156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811109810.5A Pending CN110941741A (zh) | 2018-09-21 | 2018-09-21 | 图数据的路径检索处理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941741A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488492A (zh) * | 2020-04-08 | 2020-08-04 | 北京百度网讯科技有限公司 | 用于检索图数据库的方法和装置 |
CN111966843A (zh) * | 2020-08-14 | 2020-11-20 | 北京同心尚科技发展有限公司 | 图数据库构建方法、路径搜索方法、装置和电子设备 |
CN112000695A (zh) * | 2020-06-07 | 2020-11-27 | 中国建设银行股份有限公司 | 路径查询方法、装置、电子设备及计算机可读存储介质 |
CN113254763A (zh) * | 2021-04-30 | 2021-08-13 | 青岛以萨数据技术有限公司 | 基于开源arangodb的数据分析方法、装置及存储介质 |
CN114020781A (zh) * | 2021-11-08 | 2022-02-08 | 北京邮电大学 | 基于科技咨询大规模图数据的查询任务优化方法 |
CN114969165A (zh) * | 2022-07-27 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 数据查询请求的处理方法、装置、设备及存储介质 |
CN114020781B (zh) * | 2021-11-08 | 2024-05-31 | 北京邮电大学 | 基于科技咨询大规模图数据的查询任务优化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852107A (zh) * | 2005-11-09 | 2006-10-25 | 华为技术有限公司 | 关系信息的公开、获取方法及系统 |
CN103336808A (zh) * | 2013-06-25 | 2013-10-02 | 中国科学院信息工程研究所 | 一种基于bsp模型的实时图数据处理系统及方法 |
CN104123369A (zh) * | 2014-07-24 | 2014-10-29 | 中国移动通信集团广东有限公司 | 一种基于图形数据库的配置管理数据库系统及实现方法 |
CN106033442A (zh) * | 2015-03-16 | 2016-10-19 | 北京大学 | 一种基于共享内存体系结构的并行广度优先搜索方法 |
CN107341215A (zh) * | 2017-06-07 | 2017-11-10 | 北京航空航天大学 | 一种基于分布式计算平台的多源垂直知识图谱分类集成查询方法 |
-
2018
- 2018-09-21 CN CN201811109810.5A patent/CN110941741A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852107A (zh) * | 2005-11-09 | 2006-10-25 | 华为技术有限公司 | 关系信息的公开、获取方法及系统 |
CN103336808A (zh) * | 2013-06-25 | 2013-10-02 | 中国科学院信息工程研究所 | 一种基于bsp模型的实时图数据处理系统及方法 |
CN104123369A (zh) * | 2014-07-24 | 2014-10-29 | 中国移动通信集团广东有限公司 | 一种基于图形数据库的配置管理数据库系统及实现方法 |
CN106033442A (zh) * | 2015-03-16 | 2016-10-19 | 北京大学 | 一种基于共享内存体系结构的并行广度优先搜索方法 |
CN107341215A (zh) * | 2017-06-07 | 2017-11-10 | 北京航空航天大学 | 一种基于分布式计算平台的多源垂直知识图谱分类集成查询方法 |
Non-Patent Citations (1)
Title |
---|
MYC2764: ""八"数码题目标宽度优先搜刮与深度优先搜刮", 《HTTPS://WWW.DOCIN.COM/P-1565884629.HTML》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488492A (zh) * | 2020-04-08 | 2020-08-04 | 北京百度网讯科技有限公司 | 用于检索图数据库的方法和装置 |
CN111488492B (zh) * | 2020-04-08 | 2023-11-17 | 北京百度网讯科技有限公司 | 用于检索图数据库的方法和装置 |
CN112000695A (zh) * | 2020-06-07 | 2020-11-27 | 中国建设银行股份有限公司 | 路径查询方法、装置、电子设备及计算机可读存储介质 |
CN112000695B (zh) * | 2020-06-07 | 2023-06-09 | 建信金融科技有限责任公司 | 路径查询方法、装置、电子设备及计算机可读存储介质 |
CN111966843A (zh) * | 2020-08-14 | 2020-11-20 | 北京同心尚科技发展有限公司 | 图数据库构建方法、路径搜索方法、装置和电子设备 |
CN113254763A (zh) * | 2021-04-30 | 2021-08-13 | 青岛以萨数据技术有限公司 | 基于开源arangodb的数据分析方法、装置及存储介质 |
CN114020781A (zh) * | 2021-11-08 | 2022-02-08 | 北京邮电大学 | 基于科技咨询大规模图数据的查询任务优化方法 |
CN114020781B (zh) * | 2021-11-08 | 2024-05-31 | 北京邮电大学 | 基于科技咨询大规模图数据的查询任务优化方法 |
CN114969165A (zh) * | 2022-07-27 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 数据查询请求的处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110941741A (zh) | 图数据的路径检索处理方法、装置、服务器及存储介质 | |
US10769147B2 (en) | Batch data query method and apparatus | |
US8468146B2 (en) | System and method for creating search index on cloud database | |
CN110471923B (zh) | 一种区块链交易记录的处理方法及装置 | |
US20180218041A1 (en) | Validation of query plan | |
CN102957622B (zh) | 一种数据处理的方法、装置及系统 | |
CN107480260B (zh) | 大数据实时分析方法、装置、计算设备及计算机存储介质 | |
CN107784030B (zh) | 一种处理连接查询的方法及装置 | |
CN105426375A (zh) | 一种关系网络的计算方法及装置 | |
TWI652586B (zh) | 基於社交網路的群組查找方法和裝置 | |
US10394788B2 (en) | Schema-free in-graph indexing | |
CN112565095A (zh) | 一种互联网专线自动发现分析方法及装置 | |
CN109408689A (zh) | 数据获取方法、装置、系统及电子设备 | |
CN107704568B (zh) | 一种测试数据添加的方法及装置 | |
CN108197187B (zh) | 查询语句的优化方法、装置、存储介质和计算机设备 | |
CN109981569A (zh) | 网络系统访问方法、装置、计算机设备及可读存储介质 | |
CN111026709B (zh) | 基于集群访问的数据处理方法及装置 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN110019444A (zh) | 一种操作请求处理方法、装置、设备及系统 | |
CN115470236A (zh) | 一种多子图匹配方法、装置及设备 | |
CN106294700A (zh) | 一种日志的存储与读取方法及装置 | |
CN109960695B (zh) | 云计算系统中数据库的管理方法和装置 | |
CN111984850A (zh) | 一种资源搜索方法及相关装置 | |
CN106878414B (zh) | 数据写请求处理方法、装置及分布式数据存储系统 | |
CN108628941A (zh) | 关联对象获取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |