一种图数据查询方法及装置与流程

文档序号:15992196发布日期:2018-11-20 18:07阅读:153来源:国知局
一种图数据查询方法及装置与流程

本发明涉及数据处理技术领域中的图数据查询技术领域,尤其涉及一种图数据查询方法及装置。



背景技术:

随着社交网络、万维网、电信网等的快速发展,出现了基于图数据的组织和查询的技术,当数据量较大时,也可以称作大图数据。

图数据组成的集合可以称作图数据全集,图数据全集一般包括多个顶点,以及存在连接关系的每两个顶点之间的边。根据实际应用场景,顶点可以表示相应的物理含义,例如,在社交网络中,顶点可以表示用户,一个顶点的图数据,可以包括该顶点表示的用户的各种属性数据,如姓名、性别、年龄和好友列表等,对于存在连接关系的两个顶点,在该两个顶点之间建立有边,边可以表示该两个顶点表示的两个用户之间具有好友关系。又如,在地图中,顶点可以表示地理位置,一个顶点的图数据,可以包括该顶点表示的地理位置的各种属性数据,如位置名称、位置坐标值等,对于存在连接关系的两个顶点,在该两个顶点之间建立有边,边可以表示该两个顶点表示的两个地理位置之间存在路径直接到达,即不需要经过另一个顶点即可到达。

在图数据的实际应用中,经常需要对图数据进行查询,获取期望获知的图数据,例如,在社交网络中,可以查询某一个指定用户的相关图数据,也可以按照查询条件查询与某一个指定用户具有好友关系的用户;又如,在地图中,可以查询两个地理位置之间的最短路径。

然而,随着图数据全集所包括的数据量越来越大,对于每次图数据查询,均基于图数据全集包括的所有图数据进行查询,将导致查询效率较低。

为了提高查询效率,现有技术中出现了一些图数据组织的方案,这些方案一般都采用分区算法组织图数据,将图数据全集中的所有图数据划分成多个分区,分别进行存储和计算。

然而,即使对图数据进行分区,对于一些查询要求,例如包括和距离有关的查询要求,还是需要基于图数据全集进行查询,以便保证查询结果的准确性,而此时仍然存在查询效率较低的问题。



技术实现要素:

本发明实施例提供一种图数据查询方法及装置,用以解决现有技术中存在的对图数据进行查询的效率较低的问题。

第一方面,提供一种图数据查询方法,应用于对图数据全集中的图数据的查询,所述图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,所述方法,包括:

获取查询条件以及所述查询条件表示的查询顶点的分区号和分层号;

基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,所述候选顶点为按照所述查询条件需要查询的顶点;

将分区号和分层号满足候选分区号和候选分层号的顶点组成候选集;

按照所述查询条件,从所述候选集中进行图数据查询。

结合第一方面,在第一种可能的实施方式中,无法到达所在分区的分区边界的顶点的分层号为默认分层号,且所述默认分层号与能够到达所在分区的分区边界的顶点的分层号不同;

在确定所述查询条件所表示的候选顶点的分区号和分层号之前,还包括:

确定所述查询顶点的分层号是否是所述默认分层号,且当确定结果为不是所述默认分层号时,触发执行确定所述查询条件所表示的候选顶点的分区号和分层号这一步骤;

所述方法,还包括:

当所述查询顶点的分层号是所述默认分层号时,将分区号为所述查询顶点的分区号且分层号为所述默认分层号的顶点组成候选集;

按照所述查询条件,从所述候选集中进行图数据查询。

结合第一方面,在第二种可能的实施方式中,当存在连接关系的每两个顶点之间的边的权重均相同时,或者,当存在连接关系的每两个顶点之间的边均没有权重时,顶点到所在分区的分区边界的最短距离为顶点到达所在分区的分区边界的最少跳数,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的跳数;

当存在连接关系的每两个顶点之间的边的权重不均相同时,将顶点到所在分区的分区边界的各条路径长度中的最小长度,作为该顶点到所在分区的分区边界的最短距离,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的路径的长度,其中,一条路径的长度为该路径包括的边的权重和。

结合第一方面,在第三种可能的实施方式中,基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,具体包括:

基于所述查询顶点的分区号和分层号,按照查询条件所表示的候选顶点到所述查询顶点的距离,确定所述候选顶点的分区号和分层号。

结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,预先对图数据全集中的多个顶点进行按边分区,分区边界上不包括顶点,且具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零;

当所述查询条件表示候选顶点到所述查询顶点的最大距离时,确定所述候选顶点的分区号和分层号,具体包括:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号再减去1的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

结合第一方面的第三种可能的实施方式,在第五种可能的实施方式中,预先对图数据全集中的多个顶点进行按顶点分区,分区边界上包括顶点,且分区边界上的顶点到所在分区的分区边界的最短距离为零;

当所述查询条件表示候选顶点到所述查询顶点的最大距离时,确定所述候选顶点的分区号和分层号,具体包括:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

结合第一方面,在第六种可能的实施方式中,获取查询条件以及所述查询条件表示的查询顶点的分区号和分层号,具体包括:

获取查询条件,且当所述查询条件表示需要查询第一查询顶点和第二查询顶点之间的最短路径时,获取所述第一查询顶点的分区号和分层号,以及所述第二查询顶点的分区号和分层号;

基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,具体包括:

当所述第一查询顶点和所述第二查询顶点位于同一个分区时,确定所述候选顶点的分区号为所述第一查询顶点和所述第二查询顶点的分区号;并将所述第一查询顶点的分层号到所述第二查询顶点的分层号的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述第一查询顶点和所述第二查询顶点位于不同分区时,确定所述候选顶点的分区号为所述第一查询顶点的分区号和所述第二查询顶点的分区号;针对所述第一查询顶点所在分区,将零到所述第一查询顶点的分层号的闭区间内的分层号,确定为与所述第一查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述第二查询顶点所在分区,将零到所述第二查询顶点的分层号的闭区间内的分层号,确定为与所述第二查询顶点的分区号属于同一组的所述候选顶点的分层号。

结合第一方面的第六种可能的实施方式,在第七种可能的实施方式中,还包括:

当按照所述查询条件,从所述候选集中未查询到需要的图数据时,扩大所述候选集包括的分层号区间,得到扩大后候选集;

按照所述查询条件,从所述扩大后候选集中进行图数据查询。

结合第一方面,在第八种可能的实施方式中,当所述图数据全集中的图数据存储在文件系统中时,所述多个顶点的分区号和分层号存储在一个文件中,分区号和分层号相同的顶点的图数据存储在一个文件中,不同分区号和分层号的顶点的图数据存储在不同的文件中。

结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式、第一方面的第三种可能的实施方式、第一方面的第四种可能的实施方式、第一方面的第五种可能的实施方式、第一方面的第六种可能的实施方式、第一方面的第七种可能的实施方式或者第一方面的第八种可能的实施方式,在第九种可能的实施方式中,按照所述查询条件,从所述候选集中进行图数据查询,具体包括:

将所述候选集包括的顶点的图数据加载到内存中;

按照所述查询条件,从内存中缓存的所述候选集包括的顶点的图数据中进行图数据查询。

第二方面,提供一种图数据查询装置,应用于对图数据全集中的图数据的查询,所述图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,其特征在于,预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,所述查询装置,包括:

获取单元,用于获取查询条件以及所述查询条件表示的查询顶点的分区号和分层号;

第一确定单元,用于基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,所述候选顶点为按照所述查询条件需要查询的顶点;

第二确定单元,用于将分区号和分层号满足候选分区号和候选分层号的顶点组成候选集;

查询单元,用于按照所述查询条件,从所述候选集中进行图数据查询。

结合第二方面,在第一种可能的实施方式中,无法到达所在分区的分区边界的顶点的分层号为默认分层号,且所述默认分层号与能够到达所在分区的分区边界的顶点的分层号不同;

所述第一确定单元,还用于在确定所述查询条件所表示的候选顶点的分区号和分层号之前,确定所述查询顶点的分层号是否是所述默认分层号,且当确定结果为不是所述默认分层号时,触发执行确定所述查询条件所表示的候选顶点的分区号和分层号这一步骤;

所述第二确定单元,还用于当所述查询顶点的分层号是所述默认分层号时,将分区号为所述查询顶点的分区号且分层号为所述默认分层号的顶点组成候选集。

结合第二方面,在第二种可能的实施方式中,当存在连接关系的每两个顶点之间的边的权重均相同时,或者,当存在连接关系的每两个顶点之间的边均没有权重时,顶点到所在分区的分区边界的最短距离为顶点到达所在分区的分区边界的最少跳数,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的跳数;

当存在连接关系的每两个顶点之间的边的权重不均相同时,将顶点到所在分区的分区边界的各条路径长度中的最小长度,作为该顶点到所在分区的分区边界的最短距离,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的路径的长度,其中,一条路径的长度为该路径包括的边的权重和。

结合第二方面,在第三种可能的实施方式中,所述第一确定单元,具体用于基于所述查询顶点的分区号和分层号,按照查询条件所表示的候选顶点到所述查询顶点的距离,确定所述候选顶点的分区号和分层号。

结合第二方面的第三种可能的实施方式,在第四种可能的实施方式中,预先对图数据全集中的多个顶点进行按边分区,分区边界上不包括顶点,且具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零;

所述第一确定单元,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号再减去1的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

结合第二方面的第三种可能的实施方式,在第五种可能的实施方式中,预先对图数据全集中的多个顶点进行按顶点分区,分区边界上包括顶点,且分区边界上的顶点到所在分区的分区边界的最短距离为零;

所述第一确定单元,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

结合第二方面,在第六种可能的实施方式中,所述获取单元,具体用于获取查询条件,且当所述查询条件表示需要查询第一查询顶点和第二查询顶点之间的最短路径时,获取所述第一查询顶点的分区号和分层号,以及所述第二查询顶点的分区号和分层号;

所述第一确定单元,具体用于当所述第一查询顶点和所述第二查询顶点位于同一个分区时,确定所述候选顶点的分区号为所述第一查询顶点和所述第二查询顶点的分区号;并将所述第一查询顶点的分层号到所述第二查询顶点的分层号的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述第一查询顶点和所述第二查询顶点位于不同分区时,确定所述候选顶点的分区号为所述第一查询顶点的分区号和所述第二查询顶点的分区号;针对所述第一查询顶点所在分区,将零到所述第一查询顶点的分层号的闭区间内的分层号,确定为与所述第一查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述第二查询顶点所在分区,将零到所述第二查询顶点的分层号的闭区间内的分层号,确定为与所述第二查询顶点的分区号属于同一组的所述候选顶点的分层号。

结合第二方面的第六种可能的实施方式,在第七种可能的实施方式中,所述第二确定单元,还用于当所述查询单元按照所述查询条件,从所述候选集中未查询到需要的图数据时,扩大所述候选集包括的分层号区间,得到扩大后候选集;

所述查询单元,还用于按照所述查询条件,从所述扩大后候选集中进行图数据查询。

结合第二方面,在第八种可能的实施方式中,当所述图数据全集中的图数据存储在文件系统中时,所述多个顶点的分区号和分层号存储在一个文件中,分区号和分层号相同的顶点的图数据存储在一个文件中,不同分区号和分层号的顶点的图数据存储在不同的文件中。

结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实施方式、第二方面的第三种可能的实施方式、第二方面的第四种可能的实施方式、第二方面的第五种可能的实施方式、第二方面的第六种可能的实施方式、第二方面的第七种可能的实施方式或者第二方面的第八种可能的实施方式,在第九种可能的实施方式中,所述查询单元,具体用于将所述候选集包括的顶点的图数据加载到内存中;并按照所述查询条件,从内存中缓存的所述候选集包括的顶点的图数据中进行图数据查询。

第三方面,提供一种查询服务器,应用于对图数据全集中的图数据的查询,所述图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,所述查询服务器,具体包括:

接口,用于接收查询条件;

处理器,用于获取所述查询条件以及所述查询条件表示的查询顶点的分区号和分层号;并基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,所述候选顶点为按照所述查询条件需要查询的顶点;并将分区号和分层号满足候选分区号和候选分层号的顶点组成候选集;以及按照所述查询条件,从所述候选集中进行图数据查询;

存储器,用于存储所述图数据全集的图数据,以及所述图数据全集的所述多个顶点的分区号和分层号。

结合第三方面,在第一种可能的实施方式中,无法到达所在分区的分区边界的顶点的分层号为默认分层号,且所述默认分层号与能够到达所在分区的分区边界的顶点的分层号不同;

所述处理器,还用于在确定所述查询条件所表示的候选顶点的分区号和分层号之前,确定所述查询顶点的分层号是否是所述默认分层号,且当确定结果为不是所述默认分层号时,触发执行确定所述查询条件所表示的候选顶点的分区号和分层号这一步骤;并当所述查询顶点的分层号是所述默认分层号时,将分区号为所述查询顶点的分区号且分层号为所述默认分层号的顶点组成候选集;以及按照所述查询条件,从所述候选集中进行图数据查询。

结合第三方面,在第二种可能的实施方式中,当存在连接关系的每两个顶点之间的边的权重均相同时,或者,当存在连接关系的每两个顶点之间的边均没有权重时,顶点到所在分区的分区边界的最短距离为顶点到达所在分区的分区边界的最少跳数,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的跳数;

当存在连接关系的每两个顶点之间的边的权重不均相同时,将顶点到所在分区的分区边界的各条路径长度中的最小长度,作为该顶点到所在分区的分区边界的最短距离,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的路径的长度,其中,一条路径的长度为该路径包括的边的权重和。

结合第三方面,在第三种可能的实施方式中,所述处理器,具体用于基于所述查询顶点的分区号和分层号,按照查询条件所表示的候选顶点到所述查询顶点的距离,确定所述候选顶点的分区号和分层号。

结合第三方面的第三种可能的实施方式,在第四种可能的实施方式中,预先对图数据全集中的多个顶点进行按边分区,分区边界上不包括顶点,且具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零;

所述处理器,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号再减去1的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

结合第三方面的第三种可能的实施方式,在第五种可能的实施方式中,预先对图数据全集中的多个顶点进行按顶点分区,分区边界上包括顶点,且分区边界上的顶点到所在分区的分区边界的最短距离为零;

所述处理器,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

结合第三方面,在第六种可能的实施方式中,处理器,具体用于获取查询条件,且当所述查询条件表示需要查询第一查询顶点和第二查询顶点之间的最短路径时,获取所述第一查询顶点的分区号和分层号,以及所述第二查询顶点的分区号和分层号;并当所述第一查询顶点和所述第二查询顶点位于同一个分区时,确定所述候选顶点的分区号为所述第一查询顶点和所述第二查询顶点的分区号;并将所述第一查询顶点的分层号到所述第二查询顶点的分层号的闭区间内的分层号,确定为所述候选顶点的分层号;以及当所述第一查询顶点和所述第二查询顶点位于不同分区时,确定所述候选顶点的分区号为所述第一查询顶点的分区号和所述第二查询顶点的分区号;针对所述第一查询顶点所在分区,将零到所述第一查询顶点的分层号的闭区间内的分层号,确定为与所述第一查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述第二查询顶点所在分区,将零到所述第二查询顶点的分层号的闭区间内的分层号,确定为与所述第二查询顶点的分区号属于同一组的所述候选顶点的分层号。

结合第三方面的第六种可能的实施方式,在第七种可能的实施方式中,所述处理器,还用于当按照所述查询条件,从所述候选集中未查询到需要的图数据时,扩大所述候选集包括的分层号区间,得到扩大后候选集;并按照所述查询条件,从所述扩大后候选集中进行图数据查询。

结合第三方面,在第八种可能的实施方式中,存储器,具体用于将所述图数据全集中的图数据存储在文件系统中,且所述多个顶点的分区号和分层号存储在一个文件中,分区号和分层号相同的顶点的图数据存储在一个文件中,不同分区号和分层号的顶点的图数据存储在不同的文件中。

结合第三方面、第三方面的第一种可能的实施方式、第三方面的第二种可能的实施方式、第三方面的第三种可能的实施方式、第三方面的第四种可能的实施方式、第三方面的第五种可能的实施方式、第三方面的第六种可能的实施方式、第三方面的第七种可能的实施方式或者第三方面的第八种可能的实施方式,在第九种可能的实施方式中,处理器,具体用于将所述候选集包括的顶点的图数据加载到内存中;并按照所述查询条件,从内存中缓存的所述候选集包括的顶点的图数据中进行图数据查询。

本发明有益效果包括:

本发明实施例提供的方案中,图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,并且预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,基于顶点的分区号和分层号,在进行图数据查询时,首先获取查询顶点的分区号和分层号,并基于查询顶点的分区号和分层号,确定查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,并将分区号和分层号满足任一组候选分区号和候选分层号的顶点组成候选集,以及按照查询条件,从候选集中进行图数据查询。由于基于预先对顶点划分的分区和分层,并根据查询条件,从图数据全集中筛选出了候选集,且候选集的数据量少于图数据全集的数据量,所以,从候选集中进行图数据查询,提高了图数据查询的效率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例提供的图数据查询方法的流程图;

图2为本发明实施例1中提供的对图数据全集中的图数据进行组织的流程图;

图3为本发明实施例1中按边分区的分区结果示意图;

图4为本发明实施例1中按顶点分区的分区结果示意图;

图5为本发明实施例1中为图3中的顶点在按边分区后又进行分层的结果示意图;

图6为本发明实施例1中为图4中的顶点在按顶点分区后又进行分层的结构示意图;

图7为本发明实施例1中对顶点进行重编号后的结构示意图;

图8为本发明实施例2中提供的图数据查询方法的流程图;

图9为本发明实施例3中提供的图数据查询方法的流程图;

图10为本发明实施例4中提供的从候选集中进行图数据查询的流程图;

图11为本发明实施例5中提供的图数据查询装置的结构示意图;

图12为本发明实施例6中提供的查询服务器的结构示意图。

具体实施方式

为了给出提高图数据查询效率的实现方案,本发明实施例提供了一种图数据查询方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本发明实施例提供一种图数据查询方法,应用于对图数据全集中的图数据的查询,图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,并且,预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,该方法如图1所示,包括:

步骤101、获取查询条件以及查询条件表示的查询顶点的分区号和分层号。

步骤102、基于查询顶点的分区号和分层号,确定查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,候选顶点为按照查询条件需要查询的顶点。

步骤103、将分区号和分层号满足候选分区号和候选分层号的顶点组成候选集。

步骤104、按照该查询条件,从候选集中进行图数据查询。

在实际应用中,图数据全集中可能出现一些离群点,也可以称作孤立点,即这些顶点无法到达所在分区的分区边界,当图数据全集中存在这些顶点时,还可以进一步的将这些顶点的分层号确定为默认分层号,且默认分层号与能够到达所在分区的分区边界的顶点的分层号不同。

相应的,在上述图1所示的方法中,在上述步骤102中确定查询条件所表示的候选顶点的分区号和分层号之前,还可以先确定查询顶点的分层号是否为默认分层号,如果不是默认分层号,则触发执行上述步骤102,否则,可以将分区号为查询顶点的分区号且分层号为默认分层号的顶点组成候选集,并按照查询条件,从该候选集中进行图数据查询,从而实现针对图数据全集中的离群点的图数据的查询。

本发明实施例中,提出了一种新的图数据组织方法,即预先对图数据全集中的多个顶点进行分区和分层,并确定每个顶点的分区号和分层号,从而基于执行该图数据组织方法的结果,进行图数据的查询。

下面结合附图,首先对本发明实施例中提出的图数据组织方法进行详细描述。

实施例1:

图2为本发明实施例1中对图数据全集中的图数据进行组织的流程图,具体包括如下处理步骤:

步骤201、对图数据全集包括的多个顶点进行分区。

分区算法可以采用按边分区(edge-cut),也可以采用按顶点分区 (vertex-cut),下面对这两种分区算法分别进行描述。

按边分区:如图3所示,针对顶点0-顶点9进行分区,顶点0-顶点9中各顶点之间的关系如图3中所示,两个顶点之间的连接线表示该两个顶点之间的边。

如图3所示可知,按边分区是指通过使用分区边界切分顶点之间的边进行切分,切分后,顶点0、顶点1、顶点2、顶点6和顶点7位于同一个分区,可以称作分区0,即分区号为0,顶点3、顶点4、顶点5、顶点8和顶点9位于另一个分区,可以称作分区1,即分区号为1。

按顶点分区,如图4所示,针对与图3中相同的顶点0-顶点9进行分区。

如图4所示可知,按顶点分区是指通过使用分区边界切分顶点进行切分,切分后,被切分的顶点可以属于切分边界两侧的任一分区,例如,顶点0、顶点1、顶点2、顶点6和顶点7位于同一个分区,可以称作分区0,即分区号为0,顶点3、顶点4、顶点5、顶点8和顶点9位于另一个分区,可以称作分区1,即分区号为1。

步骤202、在完成对图数据全集包括的多个顶点的分区后,即可以针对每个分区包括的顶点进行分层,将到所在分区的分区边界的最短距离相同的顶点划分到同一个分层,且该最短距离作为分层号。

本发明实施例中,当存在连接关系的每两个顶点之间的边的权重均相同时,或者,当存在连接关系的每两个顶点之间的边均没有权重时,顶点到所在分区的分区边界的最短距离可以为顶点到达所在分区的分区边界的最少跳数,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的跳数;

当存在连接关系的每两个顶点之间的边的权重不均相同时,可以将顶点到所在分区的分区边界的各条路径长度中的最小长度,作为该顶点到所在分区的分区边界的最短距离,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的路径的长度,其中,一条路径的长度为该路径包括的边的权重和。

由于在实际应用中,有些应用场景下,两个顶点之间的关系可以仅表示具有连接关系,则此时两个顶点之间的边可以不设置权重,也可以均设置相同的权重,例如,在社交网络中,边仅表示两个顶点表示的两个用户具有好友关系,则可以不设置权重;然而,有些应用场景下,两个顶点之间的关系除表示具有连接关系之外,还可以表示连接程度,则此时两个顶点之间的边可以设置权重,且权重不同,表示连接程度不同,例如,在地图中,边除表示两个顶点表示的两个地理位置之间存在路径直接到达外,边的权重越大,则表示路径越长,例如,按照路径长度范围确定对应的权重,路径长度所属范围相同的,对应的权重相同。

为描述方便和便于清楚的理解本申请方案,本步骤中,以存在连接关系的每两个顶点之间的边均没有权重为例,对分层结果进行描述。

如图5所示,为图3中的顶点0-顶点9在按边分区后又进行分层的结果示意图,其中,具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零,即顶点2、顶点7、顶点3和顶点8的分层号为0;顶点6和顶点9到分区边界的跳数为1,即分层号为1;顶点0、顶点1和顶点4到分区边界的跳数为2,即分层号为2;顶点5到分区边界的跳数为3,即分层号为3。

如图6所示,为图4中的顶点0-顶点9在按顶点分区后又进行分层的结构示意图,其中,分区边界上的顶点到所在分区的分区边界的最短距离为零,即顶点2和顶点8的分层号为0;顶点6、顶点7、顶点3和顶点9到分区边界的跳数为1,即分层号为1;顶点0、顶点1和顶点4到分区边界的跳数为2,即分层号为2;顶点5到分区边界的跳数为3,即分层号为3。

步骤203、在对图数据全集中的顶点进行分区和分层后,存储该图数据全集包括的顶点的分区分层信息,即每个顶点的分区号和分层号,以及还可以基于分区和分层结果对图数据全集中的图数据进行存储,即将不同分区和不同分层的顶点的图数据进行分开存储。

例如,当将图数据全集中的图数据存储在文件系统中时,如分布式文件系统(HDFS,Hadoop Distributed File System),可以将多个顶点的分区分层信息(分区号和分层号)存储在一个单独文件中,并将分区号和分层号相同的顶点的图数据存储在一个单独文件中,且不同分区号和分层号的顶点的图数据存储在不同的文件中。

又如,当将图数据存储在图数据库中时,可以将多个顶点的分区分层信息以表格的方式,存储在数据库中。

又如,当采用矩阵来表示图数据的邻接关系时,如现有技术中的GBASE 数据库系统,即是一个可伸缩的通用图数据管理系统,该系统可以将图数据的查询或计算转化为对矩阵的运算。此时,如图3或图4所示为未进行处理的原图,其对应的矩阵表示如下:

其中,元素(m,n)为1表示第m个顶点和第n个顶点之间存在连接关系。

采用以上步骤对该多个顶点进行分区分层后,为了将同一层的顶点在矩阵中连续显示,可以对其进行重编号。重编号方式为:同一分层的顶点连续编号,相邻分区的顶点连续编号。重编号结果如图7所示,重编号后对应的矩阵表示如下:

通过本步骤,将不同分区和不同分层的顶点的图数据进行分开存储,使得在后续进行图数据查询的过程中,更方便获取候选集所包括的顶点的图数据,从而进一步提高图数据查询效率。

本发明实施例1中,以将图数据全集包括的顶点划分为两个分区为例,描述了对图数据全集中的图数据组织方案,在实际应用中,根据实际需要,也可以将图数据全集包括的顶点划分为更多个分区,同样适用于本发明实施例提供的图数据查询方法。

本发明实施例中,在通过上述实施例1中所示的流程对图数据全集中的图数据组织,即进行分区分层并存储后,即可以基于该结果进行图数据的查询。

在进行图数据查询时,按照查询条件的不同,可以采用相应的查询流程,例如,当查询条件能够表示候选顶点到查询顶点的距离时,可以采用如下实施例2中所示的流程进行查询。

实施例2:

本发明实施例2中,进行图数据查询时依据的查询条件能够表示查询顶点,以及候选顶点到查询顶点的距离,候选顶点即需要通过查询确定是否满足查询条件的顶点。

例如,查询某一个顶点的某一属性数据,该顶点即为查询顶点;又如,顶点表示用户,查询某一用户的朋友的朋友中是否有指定名称的人,此时,该用户对应的顶点为查询顶点,候选顶点为该顶点具有朋友关系的顶点,以及与该顶点的朋友具有朋友关系的顶点,即候选顶点到该查询顶点的距离包括1和2;又如,顶点表示地理位置,查询到该顶点的距离满足预设范围的顶点的属性数据,则候选顶点到该顶点的距离包括该预设范围所包含的距离。

图8为本发明实施例2中提供的图数据查询方法的流程图,具体可以包括如下处理步骤:

步骤801、获取查询顶点的分区号和分层号。

可以从查询条件中获取查询顶点的分区号和分层号。

步骤802、基于该查询顶点的分区号和分层号,按照查询条件所表示的候选顶点到该查询顶点的距离,确定候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,候选顶点为按照查询条件需要查询的顶点。

本步骤中,以查询条件能够表示候选顶点到该查询顶点的最大距离为例进行描述,此时,所确定出的候选顶点的分区号和分层号可能包括多组分区号和分层号,且在同一分区中,分层号可能为一个分层区间内所包括的分层号,具体按照按边分区和按顶点分区分别描述如下:

第一种方式:在本方式中,图数据全集的多个顶点是按边分区的,分区边界上不包括顶点,且具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零。

本方式中包括的步骤如下:

步骤a、当查询条件表示候选顶点到查询顶点的最大距离时,首先确定该最大距离K是否大于该查询顶点的分层号L,如果不大于,进入步骤b,如果大于,进入步骤e。

步骤b、当该最大距离K不大于该查询顶点的分层号L时,确定候选顶点的分区号为该查询顶点的分区号,然后进入步骤c。

步骤c、确定该查询顶点的分层号L加上最大距离K的和值与查询顶点所在分区的最大分层号Lmax之间的最小值,即min(L+K,Lmax),然后进入步骤d。

步骤d、将该查询顶点的分层号L减去最大距离K的差值到该最小值 min(L+K,Lmax)的闭区间内的分层号,确定为候选顶点的分层号,即区间 [L-K,min(L+K,Lmax)]内的分层号。

步骤e、当该最大距离K大于该查询顶点的分层号L时,确定候选顶点的分区号为该查询顶点的分区号,以及与该查询顶点所在分区的相邻分区的分区号,然后进入步骤f。

步骤f、针对该查询顶点所在分区,确定该查询顶点的分层号L加上最大距离K的和值与该查询顶点所在分区的最大分层号Lmax之间的最小值,即 min(L+K,Lmax),然后进入步骤g。

步骤g、将零到该最小值min(L+K,Lmax)的闭区间内的分层号,确定为与该查询顶点的分区号属于同一组的候选顶点的分层号,即区间[0,min(L+K,Lmax)] 内的分层号,然后进入步骤h。

步骤h、针对该查询顶点所在分区的每个相邻分区,确定最大距离K减去该查询顶点的分层号L再减去1的差值与该相邻分区的最大分层号Lmax之间的最小值,即min(K-L-1,Lmax),然后进入步骤i。

步骤i、将零到该最小值min(K-L-1,Lmax)的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的候选顶点的分层号,即区间 [0,min(K-L-1,Lmax)]内的分层号。

第二种方式:在本方式中,图数据全集的多个顶点是按顶点分区的,分区边界上包括顶点,且分区边界上的顶点到所在分区的分区边界的最短距离为零。

本方式中包括的步骤如下:

步骤a、当查询条件表示候选顶点到查询顶点的最大距离时,首先确定该最大距离K是否大于该查询顶点的分层号L,如果不大于,进入步骤b,如果大于,进入步骤e。

步骤b、当该最大距离K不大于该查询顶点的分层号L时,确定候选顶点的分区号为该查询顶点的分区号,然后进入步骤c。

步骤c、确定该查询顶点的分层号L加上最大距离K的和值与查询顶点所在分区的最大分层号Lmax之间的最小值,即min(L+K,Lmax),然后进入步骤d。

步骤d、将该查询顶点的分层号L减去最大距离K的差值到该最小值 min(L+K,Lmax)的闭区间内的分层号,确定为候选顶点的分层号,即区间 [L-K,min(L+K,Lmax)]内的分层号。

步骤e、当该最大距离K大于该查询顶点的分层号L时,确定候选顶点的分区号为该查询顶点的分区号,以及与该查询顶点所在分区的相邻分区的分区号,然后进入步骤f。

步骤f、针对该查询顶点所在分区,确定该查询顶点的分层号L加上最大距离K的和值与该查询顶点所在分区的最大分层号Lmax之间的最小值,即 min(L+K,Lmax),然后进入步骤g。

步骤g、将零到该最小值min(L+K,Lmax)的闭区间内的分层号,确定为与该查询顶点的分区号属于同一组的候选顶点的分层号,即区间[0,min(L+K,Lmax)] 内的分层号,然后进入步骤h。

步骤h、针对该查询顶点所在分区的每个相邻分区,确定最大距离K减去该查询顶点的分层号L的差值与该相邻分区的最大分层号Lmax之间的最小值,即min(K-L,Lmax),然后进入步骤i。

步骤i、将零到该最小值min(K-L,Lmax)的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的候选顶点的分层号,即区间[0,min(K-L,Lmax)] 内的分层号。

步骤803、将分区号和分层号满足任一组候选分区号和候选分层号的顶点组成候选集。

即将上述步骤802中确定每组候选分区号和候选分层号包括的顶点组成候选集。

步骤804、按照该查询条件,从该候选集中进行图数据查询。

实施例3:

本发明实施例3中,进行图数据查询时依据的查询条件表示两个查询顶点,分别为第一查询顶点和第二查询顶点,且能够表示需要查询第一查询顶点和第二查询顶点之间的最短路径。

例如,查询两个地址位置之间的最短距离。

图9为本发明实施例3中提供的图数据查询方法的流程图,具体可以包括如下处理步骤:

步骤901、获取第一查询顶点的分区号和分层号,以及第二查询顶点的分区号和分层号。

可以从查询条件中获取第一查询顶点和第二查询顶点的分区号和分层号。

步骤902、确定第一查询顶点和第二查询顶点是否位于同一个分区,如果位于同一个分区中,进入步骤903,否则,进入步骤905。

步骤903、当第一查询顶点和第二查询顶点位于同一个分区时,确定候选顶点的分区号为第一查询顶点和第二查询顶点的分区号。

步骤904、将第一查询顶点的分层号L1到第二查询顶点的分层号L2的闭区间内的分层号,确定为候选顶点的分层号,假设L1小于L2,即区间[L1,L2]内的分层号。

步骤905、当第一查询顶点和第二查询顶点位于不同分区时,确定候选顶点的分区号为第一查询顶点的分区号和第二查询顶点的分区号。

步骤906、针对第一查询顶点所在分区,将零到第一查询顶点的分层号L1 的闭区间内的分层号,确定为与第一查询顶点的分区号属于同一组的候选顶点的分层号,即区间[0,L1]内的分层号。

步骤907、针对第二查询顶点所在分区,将零到第二查询顶点的分层号L2 的闭区间内的分层号,确定为与第二查询顶点的分区号属于同一组的候选顶点的分层号,即区间[0,L2]内的分层号。

步骤908、将分区号和分层号满足任一组候选分区号和候选分层号的顶点组成候选集。

即将采用上述步骤901-步骤907中确定每组候选分区号和候选分层号包括的顶点组成候选集。

步骤909、按照该查询条件,从当前的候选集中进行图数据查询。

本步骤中,当得到查询结果时,即结束本次查询。

然而,在一些实际应用场景中,从上述方式确定的候选集中进行图数据查询时,可能无法查询到期望的图数据,例如,可能无法查询到第一查询顶点和第二查询顶点之间的距离,此时,进一步的,还可以包括如下步骤:

步骤910、当按照查询条件,从当前候选集中未查询到需要的图数据时,扩大该候选集包括的分层号区间,得到扩大后候选集,作为最新的候选集,并返回上述步骤909,即按照该查询条件,从扩大后候选集中进行图数据查询。

本步骤中,扩大候选集包括的分层号区间,可以每次扩大预设数量的分层号,例如,每次扩大1个分层号。

当然,当分层号区间的某一边界值已经是所属分区的分层号边界值,则无需再扩大这一边界值,当分层号区间的两个边界值均无法再扩大时,可以将候选集的范围扩大到当前分区的相邻分区,并从相邻分区的分层号从小到大的顺序扩大。

实施例4:

本发明实施例4中,对上述方法中按照查询条件,从候选集中进行图数据查询进行详细描述,如图10所示,包括:

步骤1001、将候选集包括的顶点的图数据加载到内存中。

本步骤中,可以将候选集包括的顶点的图数据一次性加载到内存中,以便节省图数据加载时间,从而提高图数据查询的效率。

步骤1002、按照查询条件,从内存中缓存的候选集包括的顶点的图数据中进行图数据查询。

目前,现有技术中一种基于内存的图数据管理系统称作Trinity系统, Trinity系统中,图中的一个顶点或一条边表示为一个单元cell,其中cell可以具有两种形式,包括:运行形式(runtime form)和二进制形式(blob form)。 runtime form的cell表示为内存中的对象,即已经加载的图数据,用于计算和查询,且占用内存较大;blob form的cell表示为二进制格式的对象,占用内存小,可直接与磁盘交互(如果内存不足或一个cell长时间不被访问,则系统可以将该cell从内存转移到(swap)到磁盘,并且,一个cell,从runtime form转化为 blob form后才可以转移到磁盘,相当于进行序列化)。

现有技术中,基于Trinity系统进行图数据查询时,针对当前顶点,需要首选判断当前顶点的图数据是否已加载到内存中,如果未加载,则将当前顶点的图数据加载到内存中,如果加载,或者在本次加载后,判断当前顶点的图数据的形式是否为runtime form,如果不是,当前顶点的图数据的形式转化为 runtime form,基于runtime form形式的图数据进行查询。

当一次查询中,需要针对多个顶点的图数据进行查询时,每次确定出一个当前需要查询的顶点,均需要执行上述流程,所以,一次查询中,需要多次执行上述判断的步骤,且可能需要多次执行上述加载和转化的步骤,从而导致查询效率较低。

而采用本发明实施例提供的方案,当基于Trinity系统进行图数据查询时,由于已经预先确定了候选集,所以可以通过上述步骤1001,将候选集包括的顶点的图数据一次性加载到内存中,并将候选集包括的顶点的图数据的形式一次性均转化为runtime form,即避免了图数据是否已加载以及是否需要转化的判断,并且减少了加载次数,从而节省了图数据加载时间,进而提高了图数据查询的效率。

目前,现有技术中的GBASE数据库系统是一个可伸缩的通用图数据管理系统,GBASE数据库系统中,采用矩阵来表示图数据的邻接关系,将图数据的查询或计算转化为对矩阵的运算,其包括两个阶段,第一个阶段(Index Stage 阶段)和第二个阶段(Query Stage阶段):

第一个阶段:首先,将图数据转化为矩阵表示;然后,对图数据进行聚类、重排序等;接着,进行分块、压缩;最后将块存储到文件系统中。

第二个阶段:首先,将查询请求转化为查询向量;然后,根据查询类型读取相关分块,创建候选矩阵;接着,用候选矩阵乘于向量得到结果向量;最后根据结果向量进行相应操作。

有关基于GBASE数据库系统进行图数据查询的现有技术方案,可参照现有技术,在此不再进行详细描述。

然而,现有技术中,基于GBASE数据库系统进行图数据查询时,在创建候选矩阵时,需要加载查询顶点所在的行或列的所有块,而有些块是明显不符合查询条件的,此时,由于加载的图数据的数据量较大,所以导致后续查询时的效率较低。

而采用本发明实施例提供的方案,当基于GBASE数据库系统进行图数据查询时,可以仅加载查询顶点所在的行或列中在候选集中存在的块,从而减少了加载的图数据的数据量,从而减少了数据加载处理的时间,且减少了后续查询时所基于的数据量,进而提高了图数据查询的效率。

实施例5:

基于同一发明构思,根据本发明上述实施例提供的图数据查询方法,相应地,本发明实施例5还提供了一种图数据查询装置,应用于对图数据全集中的图数据的查询,所述图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,所述查询装置,其结构示意图如图11所示,具体包括:

获取单元1101,用于获取查询条件以及所述查询条件表示的查询顶点的分区号和分层号;

第一确定单元1102,用于基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,所述候选顶点为按照所述查询条件需要查询的顶点;

第二确定单元1103,用于将分区号和分层号满足候选分区号和候选分层号的顶点组成候选集;

查询单元1104,用于按照所述查询条件,从所述候选集中进行图数据查询。

进一步的,无法到达所在分区的分区边界的顶点的分层号为默认分层号,且所述默认分层号与能够到达所在分区的分区边界的顶点的分层号不同;

第一确定单元1102,还用于在确定所述查询条件所表示的候选顶点的分区号和分层号之前,确定所述查询顶点的分层号是否是所述默认分层号,且当确定结果为不是所述默认分层号时,触发执行确定所述查询条件所表示的候选顶点的分区号和分层号这一步骤;

第二确定单元1103,还用于当所述查询顶点的分层号是所述默认分层号时,将分区号为所述查询顶点的分区号且分层号为所述默认分层号的顶点组成候选集。

进一步的,当存在连接关系的每两个顶点之间的边的权重均相同时,或者,当存在连接关系的每两个顶点之间的边均没有权重时,顶点到所在分区的分区边界的最短距离为顶点到达所在分区的分区边界的最少跳数,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的跳数;

当存在连接关系的每两个顶点之间的边的权重不均相同时,将顶点到所在分区的分区边界的各条路径长度中的最小长度,作为该顶点到所在分区的分区边界的最短距离,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的路径的长度,其中,一条路径的长度为该路径包括的边的权重和。

进一步的,第一确定单元1102,具体用于基于所述查询顶点的分区号和分层号,按照查询条件所表示的候选顶点到所述查询顶点的距离,确定所述候选顶点的分区号和分层号。

进一步的,预先对图数据全集中的多个顶点进行按边分区,分区边界上不包括顶点,且具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零;

第一确定单元1102,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号再减去1的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

进一步的,预先对图数据全集中的多个顶点进行按顶点分区,分区边界上包括顶点,且分区边界上的顶点到所在分区的分区边界的最短距离为零;

第一确定单元1102,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

进一步的,获取单元1101,具体用于获取查询条件,且当所述查询条件表示需要查询第一查询顶点和第二查询顶点之间的最短路径时,获取所述第一查询顶点的分区号和分层号,以及所述第二查询顶点的分区号和分层号;

第一确定单元1102,具体用于当所述第一查询顶点和所述第二查询顶点位于同一个分区时,确定所述候选顶点的分区号为所述第一查询顶点和所述第二查询顶点的分区号;并将所述第一查询顶点的分层号到所述第二查询顶点的分层号的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述第一查询顶点和所述第二查询顶点位于不同分区时,确定所述候选顶点的分区号为所述第一查询顶点的分区号和所述第二查询顶点的分区号;针对所述第一查询顶点所在分区,将零到所述第一查询顶点的分层号的闭区间内的分层号,确定为与所述第一查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述第二查询顶点所在分区,将零到所述第二查询顶点的分层号的闭区间内的分层号,确定为与所述第二查询顶点的分区号属于同一组的所述候选顶点的分层号。

进一步的,第二确定单元1103,还用于当所述查询单元按照所述查询条件,从所述候选集中未查询到需要的图数据时,扩大所述候选集包括的分层号区间,得到扩大后候选集;

查询单元1104,还用于按照所述查询条件,从所述扩大后候选集中进行图数据查询。

进一步的,当所述图数据全集中的图数据存储在文件系统中时,所述多个顶点的分区号和分层号存储在一个文件中,分区号和分层号相同的顶点的图数据存储在一个文件中,不同分区号和分层号的顶点的图数据存储在不同的文件中。

进一步的,查询单元1104,具体用于将所述候选集包括的顶点的图数据加载到内存中;并按照所述查询条件,从内存中缓存的所述候选集包括的顶点的图数据中进行图数据查询。

上述各单元的功能可对应于上述实施例所示流程中的相应处理步骤,在此不再赘述。

实施例6:

基于同一发明构思,根据本发明上述实施例提供的图数据查询方法,相应地,本发明实施例6还提供了一种查询服务器,应用于对图数据全集中的图数据的查询,所述图数据全集包括多个顶点,以及存在连接关系的每两个顶点之间的边,预先对图数据全集中的多个顶点进行分区和分层,将顶点所在分区的编号作为该顶点的分区号,将顶点到所在分区的分区边界的最短距离作为该顶点的分层号,所述查询服务器,其结构示意图如图12所示,具体包括:

接口1201,用于接收查询条件;

处理器1202,用于获取所述查询条件以及所述查询条件表示的查询顶点的分区号和分层号;并基于所述查询顶点的分区号和分层号,确定所述查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号,其中,所述候选顶点为按照所述查询条件需要查询的顶点;并将分区号和分层号满足候选分区号和候选分层号的顶点组成候选集;以及按照所述查询条件,从所述候选集中进行图数据查询;

存储器1203,用于存储所述图数据全集的图数据,以及所述图数据全集的所述多个顶点的分区号和分层号。

进一步的,无法到达所在分区的分区边界的顶点的分层号为默认分层号,且所述默认分层号与能够到达所在分区的分区边界的顶点的分层号不同;

所述处理器1202,还用于在确定所述查询条件所表示的候选顶点的分区号和分层号之前,确定所述查询顶点的分层号是否是所述默认分层号,且当确定结果为不是所述默认分层号时,触发执行确定所述查询条件所表示的候选顶点的分区号和分层号这一步骤;并当所述查询顶点的分层号是所述默认分层号时,将分区号为所述查询顶点的分区号且分层号为所述默认分层号的顶点组成候选集;以及按照所述查询条件,从所述候选集中进行图数据查询。

进一步的,当存在连接关系的每两个顶点之间的边的权重均相同时,或者,当存在连接关系的每两个顶点之间的边均没有权重时,顶点到所在分区的分区边界的最短距离为顶点到达所在分区的分区边界的最少跳数,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的跳数;

当存在连接关系的每两个顶点之间的边的权重不均相同时,将顶点到所在分区的分区边界的各条路径长度中的最小长度,作为该顶点到所在分区的分区边界的最短距离,两个顶点之间的距离为两个顶点中一个顶点到达另一个顶点的路径的长度,其中,一条路径的长度为该路径包括的边的权重和。

进一步的,所述处理器1202,具体用于基于所述查询顶点的分区号和分层号,按照查询条件所表示的候选顶点到所述查询顶点的距离,确定所述候选顶点的分区号和分层号。

进一步的,预先对图数据全集中的多个顶点进行按边分区,分区边界上不包括顶点,且具有跨到其他分区的边的顶点到所在分区的分区边界的最短距离为零;

所述处理器1202,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号再减去1的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

进一步的,预先对图数据全集中的多个顶点进行按顶点分区,分区边界上包括顶点,且分区边界上的顶点到所在分区的分区边界的最短距离为零;

所述处理器1202,具体用于当所述查询条件表示候选顶点到所述查询顶点的最大距离时,采用如下方式确定所述候选顶点的分区号和分层号:

当所述最大距离不大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号;并确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值;以及将所述查询顶点的分层号减去所述最大距离的差值到所述最小值的闭区间内的分层号,确定为所述候选顶点的分层号;

当所述最大距离大于所述查询顶点的分层号时,确定所述候选顶点的分区号为所述查询顶点的分区号,以及与所述查询顶点所在分区的相邻分区的分区号;针对所述查询顶点所在分区,确定所述查询顶点的分层号加上所述最大距离的和值与所述查询顶点所在分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与所述查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述查询顶点所在分区的每个相邻分区,确定所述最大距离减去所述查询顶点的分层号的差值与该相邻分区的最大分层号之间的最小值,以及将零到该最小值的闭区间内的分层号,确定为与该相邻分区的分区号属于同一组的所述候选顶点的分层号。

进一步的,处理器1202,具体用于获取查询条件,且当所述查询条件表示需要查询第一查询顶点和第二查询顶点之间的最短路径时,获取所述第一查询顶点的分区号和分层号,以及所述第二查询顶点的分区号和分层号;并当所述第一查询顶点和所述第二查询顶点位于同一个分区时,确定所述候选顶点的分区号为所述第一查询顶点和所述第二查询顶点的分区号;并将所述第一查询顶点的分层号到所述第二查询顶点的分层号的闭区间内的分层号,确定为所述候选顶点的分层号;以及当所述第一查询顶点和所述第二查询顶点位于不同分区时,确定所述候选顶点的分区号为所述第一查询顶点的分区号和所述第二查询顶点的分区号;针对所述第一查询顶点所在分区,将零到所述第一查询顶点的分层号的闭区间内的分层号,确定为与所述第一查询顶点的分区号属于同一组的所述候选顶点的分层号;针对所述第二查询顶点所在分区,将零到所述第二查询顶点的分层号的闭区间内的分层号,确定为与所述第二查询顶点的分区号属于同一组的所述候选顶点的分层号。

进一步的,所述处理器1202,还用于当按照所述查询条件,从所述候选集中未查询到需要的图数据时,扩大所述候选集包括的分层号区间,得到扩大后候选集;并按照所述查询条件,从所述扩大后候选集中进行图数据查询。

进一步的,存储器1203,具体用于将所述图数据全集中的图数据存储在文件系统中,且所述多个顶点的分区号和分层号存储在一个文件中,分区号和分层号相同的顶点的图数据存储在一个文件中,不同分区号和分层号的顶点的图数据存储在不同的文件中。

进一步的,处理器1202,具体用于将所述候选集包括的顶点的图数据加载到内存中;并按照所述查询条件,从内存中缓存的所述候选集包括的顶点的图数据中进行图数据查询。

综上所述,本发明实施例提供的方案,包括:获取查询顶点的分区号和分层号;并基于查询顶点的分区号和分层号,确定查询条件所表示的候选顶点的分区号和分层号,作为候选分区号和候选分层号;并将分区号和分层号满足任一组候选分区号和候选分层号的顶点组成候选集;以及按照该查询条件,从候选集中进行图数据查询。采用本发明实施例提供的方案,提高了图数据查询效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1