本发明实施例涉及数据处理技术领域,特别涉及一种图数据的处理方法、装置及存储介质。
背景技术:
目前,一些具有一定关联关系的数据可以被结构化为图,以通过图数据进行存储。其中,图数据的图信息包括节点信息和边信息,即图数据一般由多个节点和多条边构成,每相邻两个节点之间的边可以用于表征该相邻两个节点之间的路径关系。举例来说,在网络中,以ip(internetprotocol,网络协议)地址为节点,ip地址与ip地址之间的通信关系为边,可以得到该网络对应的图数据。
在一些应用场景中,通常有确定图数据中各个节点的多阶关系路径的需求。目前,一般需要反复读取图数据的节点信息和边信息,以确定节点的多阶关系路径。譬如,在确定节点s的二阶关系路径时,可以根据节点s的边信息查询到与节点s相邻的节点b,再根据节点b的边信息查询到与节点b相邻的节点c,如此,可以确定节点s的二阶关系路径为s->b->c。再如,在确定节点q的二阶关系路径时,可以根据节点q的边信息查询到与节点q相邻的节点b,再根据节点b的边信息查询到与节点b相邻的节点c,如此,可以确定节点q的二阶关系路径为q->b->c。
然而,在上述实现方式中,由于节点s和节点q均与节点b和节点c具有关联关系,因此,在确定节点s和节点q的多阶关系路径过程中,均需读取节点b和节点c以及相关的边信息。如此,当数据量较大且需要确定的关系路径较多时,对于类似于节点b和节点c的节点来说,需要反复多次读取,增大了图数据库的压力。
技术实现要素:
本发明实施例提供了一种图数据的处理方法、装置及存储介质,可以解决相关技术中需要反复多次读取数据,增大了图数据库的压力问题。所述技术方案如下:
第一方面,提供了一种图数据的处理方法,所述方法包括:
扫描图数据的图信息,得到所述图数据中每个节点的邻节点信息集合,所述每个节点的邻节点信息集合包括所述每个节点的所有邻节点的信息;
根据所述每个节点的邻节点信息集合,确定所述每个节点的一阶关系路径和二阶关系路径中至少一项;
基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径,包括:
根据待确定的目标阶数,通过公式
根据所述目标阶数、所述第一数值,以及所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述根据所述目标阶数、所述第一数值,以及所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径,包括:
根据所述第一数值,通过公式r=2^m,确定第二数值,所述r为所述第二数值;
当所述目标阶数与所述第二数值相等时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的多阶关系路径;
当所述目标阶数与所述第二数值不相等时,基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的多阶关系路径,包括:
令i=2,获取目标节点的i阶关系路径,所述目标节点为所述每个节点的i阶关系路径的终点,将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接,得到所述每个节点的2i阶关系路径;
确定所述2i是否等于所述目标阶数;
当所述2i不等于所述目标阶数时,令i=2i,并返回所述获取目标节点的i阶关系路径,所述目标节点为所述每个节点的i阶关系路径的终点,将所述每个节点的i阶关系路径与确定的i阶关系路径进行拼接,得到所述每个节点的2i阶关系路径的步骤;
当所述2i等于所述目标阶数时,将得到的2i阶关系路径确定为所述每个节点的多阶关系路径。
可选地,所述基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径,包括:
根据所述第一数值,通过公式k=2^(m-1),确定第三数值,所述k为所述第三数值;
确定所述目标阶数与所述第二数值之间的差值;
当所述差值大于所述第三数值时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的2r阶关系路径;将所述每个节点的2r阶关系路径中末尾的(2r-n)阶关系路径删除,得到所述每个节点的多阶关系路径;
当所述差值小于所述第三数值时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的r阶关系路径,基于所述每个节点的一阶关系路径和二阶关系路径,通过迭代拼接算法,确定所述每个节点的r阶关系路径中终点的(n-r)阶关系路径,将所述每个节点的r阶关系路径与确定的终点的(n-r)阶关系路径进行拼接,得到所述每个节点的多阶关系路径。
可选地,当所述图数据为无向图数据时,所述将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接之前,还包括:
检测所述目标节点的i阶关系路径中邻节点与所述每个节点的i阶关系路径中第i个节点是否相同;
当所述目标节点的i阶关系路径中邻节点与所述每个节点的i阶关系路径中第i个节点不相同时,执行所述将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接的步骤。
可选地,所述基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径之后,还包括:
以所述每个节点的节点信息为行健,将所述每个节点的至少一条多阶关系路径中路径阶数相同的存储至数据库的同一行。
第二方面,提供了一种图数据的处理装置,所述装置包括:
扫描模块,用于扫描图数据的图信息,得到所述图数据中每个节点的邻节点信息集合,所述每个节点的邻节点信息集合包括所述每个节点的所有邻节点的信息;
第一确定模块,用于根据所述每个节点的邻节点信息集合,确定所述每个节点的一阶关系路径和二阶关系路径中至少一项;
第二确定模块,用于基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述第二确定模块用于:
根据待确定的目标阶数,通过公式
根据所述目标阶数、所述第一数值,以及所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述第二确定模块用于:
根据所述第一数值,通过公式r=2^m,确定第二数值,所述r为所述第二数值;
当所述目标阶数与所述第二数值相等时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的多阶关系路径;
当所述目标阶数与所述第二数值不相等时,基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述第二确定模块用于:
令i=2,获取目标节点的i阶关系路径,所述目标节点为所述每个节点的i阶关系路径的终点,将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接,得到所述每个节点的2i阶关系路径;
确定所述2i是否等于所述目标阶数;
当所述2i不等于所述目标阶数时,令i=2i,并返回所述获取目标节点的i阶关系路径,所述目标节点为所述每个节点的i阶关系路径的终点,将所述每个节点的i阶关系路径与确定的i阶关系路径进行拼接,得到所述每个节点的2i阶关系路径的步骤;
当所述2i等于所述目标阶数时,将得到的2i阶关系路径确定为所述每个节点的多阶关系路径。
可选地,所述第二确定模块用于:
根据所述第一数值,通过公式k=2^(m-1),确定第三数值,所述k为所述第三数值;
确定所述目标阶数与所述第二数值之间的差值;
当所述差值大于所述第三数值时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的2r阶关系路径;将所述每个节点的2r阶关系路径中末尾的(2r-n)阶关系路径删除,得到所述每个节点的多阶关系路径;
当所述差值小于所述第三数值时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的r阶关系路径,基于所述每个节点的一阶关系路径和二阶关系路径,通过迭代拼接算法,确定所述每个节点的r阶关系路径中终点的(n-r)阶关系路径,将所述每个节点的r阶关系路径与确定的终点的(n-r)阶关系路径进行拼接,得到所述每个节点的多阶关系路径。
可选地,所述装置还包括:
检测模块,用于当所述图数据为无向图数据时,检测所述目标节点的i阶关系路径中邻节点与所述每个节点的i阶关系路径中第i个节点是否相同;
所述第二确定模块,用于当所述目标节点的i阶关系路径中邻节点与所述每个节点的i阶关系路径中第i个节点不相同时,将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接。
可选地,所述装置还包括:
存储模块,用于以所述每个节点的节点信息为行健,将所述每个节点的至少一条多阶关系路径中路径阶数相同的存储至数据库的同一行。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面所述的图数据的处理方法。
第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的图数据的处理方法。
本发明实施例提供的技术方案带来的有益效果是:
扫描图数据的图信息,得到该图数据中每个节点的邻节点信息集合,根据每个节点的邻节点信息集合,可以确定每个节点的一阶关系路径和二阶关系路径中的至少一项。之后,可以基于所述确定的一阶关系路径和二阶关系路径中的至少一项,通过迭代拼接算法来确定每个节点的多阶关系路径。由于只扫描了一遍图数据库中的图信息即可确定每个节点的多阶关系路径,因此,减小了图数据库的压力。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种图数据的处理方法流程图;
图2是根据一示例性实施例示出的一种有向图数据的示意图;
图3是根据一示例性实施例示出的一种节点的二阶关系路径的示意图;
图4是根据一示例性实施例示出的一种节点的关系路径示意图;
图5是根据一示例性实施例示出的一种节点的关系路径示意图;
图6是根据另一示例性实施例示出的一种图数据的处理方法流程图;
图7是根据一示例性实施例示出的一种无向图数据的示意图;
图8是根据一示例性实施例示出的一种节点的关系路径示意图;
图9是根据一示例性实施例示出的一种节点的关系路径示意图;
图10是根据一示例性实施例示出的一种节点的关系路径示意图;
图11是根据一示例性实施例示出的一种节点的关系路径示意图;
图12是根据一示例性实施例示出的一种图数据的处理装置的结构示意图;
图13是另根据一示例性实施例示出的一种图数据的处理装置的结构示意图;
图14是另根据一示例性实施例示出的一种图数据的处理装置的结构示意图;
图15是根据一示例性实施例示出的一种计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例提供的图数据的处理方法进行详细介绍之前,先对本发明实施例涉及的名词、应用场景和实施环境进行简单介绍。
首先,对本发明实施例涉及的名词进行简单介绍。
图数据:由多个节点和多条边构成。在图数据库中,通常以图信息的方式进行存储,该图信息一般包括节点信息和边信息。
spark:一种专为大规模数据处理而设计的快速通用的计算引擎,可以用来构建大型的、低延迟的数据分析应用程序。spark中数据组织结构可以抽象为rdd(resilientdistributeddataset,弹性分布式数据集),rdd是spark特有的数据模型,表示只读且已分区的数据集。
janusgraph:一种分布式图数据库。通常情况下,对于图数据的存储一般采用janusgraph进行存储,janusgraph存储端采用hbase进行存储,索引基于elasticsearch来实现。在实施中,存储的编码格式和elasticsearch索引均可以根据实际需求进行优化。
阶:图数据中任意两个节点之间的关系路径。
度:一个节点的度是指与该节点相关联的边的条数。进一步地,对于有向图来说,一个节点的度可以细分为入度(in-degree)和出度(out-degree)。一个节点的入度是指与其关联的各边之中以该节点为终点的边数;出度则是指与其关联的各边之中以该节点为起点的边数。
其次,对本发明实施例涉及的应用场景进行简单介绍。
在对图数据的全体分析处理过程中,确定图数据中每个节点的多阶关系路径具有重要意义。目前,在对图数据进行处理时,需要反复多次获取图数据库中的数据,加大了图数据库的压力。为此,本发明实施例提供了一种图数据的处理方法,可以从图数据库中只读取一次数据,并基于所读取的数据确定每个节点的多阶关系路径,减小了图数据库的压力。其具体实现请参见如下图所示的实施例。
最后,对本发明实施例涉及的实施环境进行简单介绍。
本发明实施例提供的图数据的处理方法可以由计算机设备来执行,进一步地,该计算机设备可以包括有janusgraph、hbase等,用于存储数据。在一些实施例中,该计算机设备可以包括平板电脑、台式计算机、便携式计算机、笔记本电脑等等,本发明实施例对此不做限定。
在介绍完本发明实施例涉及的名词、应用场景和实施环境后,接下来将结合附图对本发明实施例提供的图数据的处理方法进行详细介绍。由于图数据包括有向图和无向图,因此,这里将分别通过如下图1和图6所示的实施例分别针对有向图和无向图对图数据的处理方法进行介绍。
图1是根据一示例性实施例示出的一种图数据的处理方法流程图,这里以该图数据的处理方法应用于上述实施环境中为例进行说明,该图数据的处理方法可以包括如下几个实现步骤:
步骤101:扫描图数据的图信息,得到该图数据中每个节点的邻节点信息集合,该每个节点的邻节点信息集合包括该每个节点的所有邻节点的信息。
在图数据库中,在对节点进行存储时,还会存储与节点相关联的所有边的信息。如此,对图数据库中图数据的图信息进行扫描后,可以确定每个节点的所有邻节点的信息,从而得到每个节点的邻节点信息集合。进一步地,在一种可能的实现方式中,这里可以采用spark进行扫描处理。
需要说明的是,在本发明实施例中,由于每个节点均包括至少一个邻节点,因此,针对每个节点均可以扫描到至少一个邻节点信息,从而得到每个节点的邻节点信息集合。
其中,每个节点的节点信息可以用于唯一标识一个节点,譬如,该节点信息可以为节点的id等。
在本发明实施例中,当该图数据为有向图时,每个节点的邻节点信息集合包括入边点信息集合和出边点信息集合。其中,每个节点的入边点集合包括与该每个节点相邻且路径指向该每个节点的所有节点的节点信息,每个节点的出边点集合包括该每个节点的路径所指向的且与该每个节点相邻的所有节点的节点信息。
譬如,请参考图2,该图2是根据一示例性实施例示出的一种有向图数据的示意图。该节点a的邻节点信息集合包括入边点信息集合和出边点信息集合,该入边点信息集合包括{b、c},该出边点信息集合包括{d、e}。
进一步地,若采用spark进行扫描,则扫描处理后,rdd的格式为(vertexid,inlist,outlist),其中,vertexid代表某个节点的节点信息,inlist表示入边点信息集合,可以以列表的形式表示,outlist表示出边点信息集合,也可以以列表的形式表示。
步骤102:根据该每个节点的邻节点信息集合,确定每个节点的一阶关系路径和二阶关系路径中的至少一项。
不难理解,在获知每个节点的邻节点信息集合后,就可以确定每个节点的一阶关系路径和二阶关系路径。譬如,针对节点a,其对应的rdd格式为(a,{b},{c}),则可以获知,节点a的一阶关系路径为a->c,通常情况下,可以称该节点a的一阶关系路径为出度一阶关系路径。
其中,对于有向图数据中每个节点的二阶关系路径,可以基于每个节点的入度一阶关系路径和出度一阶关系路径来确定得到,如上文的例子,根据节点a的邻节点信息集合可以确定该节点a的入度一阶关系路径为b->a,出度一阶关系路径为a->c,从而可以得到节点b的二阶关系路径为b->a->c。
由于已经获知了每个节点的邻节点信息集合,基于此,可以确定每个节点的一阶关系路径和二阶关系路径中至少一项。譬如,请参考图3,该图3是根据一示例性实施例示出的一种节点的二阶关系路径的示意图。
得到每个节点的一阶关系路径和二阶关系路径中至少一项后,即可基于该一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定每个节点的任意多阶关系路径。譬如,确定节点的三阶关系路径,可以根据节点的入度一阶关系路径,然后以入度一阶关系路径进行反向生成来确定,譬如,请参考图4,节点b的入度边有f和g,根据节点b的二阶关系路径,可以分别生成节点f和节点g的三阶关系路径。也就是说,对于每个节点的n阶关系路径的计算,可以由p阶和(n-p)阶组合进行计算,需要p阶最后一个节点与(n-p)阶的起始节点相同即可,譬如,请参考图5所示。
在实施中,具体是需要确定节点的一阶关系路径,还是需要确定节点的二阶关系路径,又或是需要确定节点的一阶关系路径和二阶关系路径,可以根据实际需要确定的多阶关系路径的阶数来确定,具体实现策略请参见下文步骤103至步骤104。
步骤103:根据待确定的目标阶数,确定第一数值。
进一步地,根据待确定的目标阶数,通过公式(1)确定第一数值,其中,公式(1)为:
需要说明的是,这里仅是以2为底数进行运算为例进行说明,在另外一些实施例中,还可以以其它数值为底数,本发明实施例对此不做限定。
步骤104:根据该目标阶数、该第一数值,以及该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径。
在一种可能的实现方式中,上述根据该目标阶数、该第一数值,以及该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径的具体实现可以包括如下1041-1043几个实现步骤:
1041:根据该第一数值,通过公式(2),确定第二数值。
其中,公式(2)为:r=2^m,该r为第二数值。
进一步地,确定该第二数值后,可以将该第二数值与目标阶数相比较,以确定该第二数值与目标阶数是否相等。当比较结果不同时,对应的具体实现过程也不同,譬如,根据比较结果不同,可以分别采用如下步骤1042和步骤1043。
1042:当该目标阶数与该第二数值相等时,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的多阶关系路径。
譬如,当该目标阶数为8,m为3时,经过上述运算后可以确定第二数值r与该目标阶数相等,此时,可以基于每个节点的二阶关系路径,通过迭代拼接的方式,确定每个节点的多阶关系路径。
进一步地,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的多阶关系路径的具体实现可以包括:令i=2,获取目标节点的i阶关系路径,该目标节点为该每个节点的i阶关系路径的终点,将该每个节点的i阶关系路径与该目标节点的i阶关系路径进行拼接,得到该每个节点的2i阶关系路径。确定该2i是否等于该目标阶数,当该2i不等于该目标阶数时,令i=2i,并返回该获取目标节点的i阶关系路径,该目标节点为该每个节点的i阶关系路径的终点,将该每个节点的i阶关系路径与确定的i阶关系路径进行拼接,得到该每个节点的2i阶关系路径的步骤;当该2i等于该目标阶数时,将得到的2i阶关系路径确定为该每个节点的多阶关系路径。
这里需要说明的是,在上述实现过程中,在确定目标节点的i阶关系路径时,若i大于2,则需要基于该目标节点的二阶关系路径,通过迭代拼接算法来确定该目标节点的i阶关系路径。也就是说,将目标节点的二阶关系路径与该目标节点的二阶关系路径中终点的二阶关系路径进行拼接,得到目标节点的四阶关系路径。之后,再按照二阶关系路径与二阶关系路径进行拼接的方式,确定目标节点的四阶关系路径中终点的四阶关系路径,以此类推,可以确定该目标节点的i阶关系路径。
譬如,当目标阶数为8时,假设要确定节点a的8阶关系路径,节点a的二阶关系路径为a->b->c,此时目标节点为节点c,则获取节点c的二阶关系路径,假设节点c的二阶关系路径为c->d->e,此时,将该节点a的二阶关系路径与节点c的二阶关系路径进行拼接,可以得到节点a的四阶关系路径为a->b->c->d->e。由于此时所确定的阶数不等于目标阶数,因此,需要继续迭代拼接,即需要获取节点e的四阶关系路径。在获取节点e的四阶关系路径时,同样是基于该节点e的二阶关系路径进行迭代拼接,得到该节点e的四阶关系路径。譬如,节点e的二阶关系路径为e->f->g,则获取节点g的二阶关系路径,假设该节点g的二阶关系路径为g->h->i,将该节点e的二阶关系路径与该节点g的二阶关系路径进行拼接,得到该节点e的四阶关系路径为e->f->g->h->i。之后,将该节点a的四阶关系路径与该节点c的四阶关系路径进行拼接,得到节点a的八阶关系路径为a->b->c->d->e->f->g->h->i。此时,由于所得到的阶数与目标阶数相等,因此,结束迭代拼接操作,从而得到该节点a的8阶关系路径。
1043:当该目标阶数与该第二数值不相等时,基于该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径。
具体地,该步骤1043可以包括:根据该第一数值,通过公式k=2^(m-1),确定第三数值,该k为该第三数值,确定该目标阶数与该第二数值之间的差值。当该差值大于该第三数值时,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的2r阶关系路径,将该每个节点的2r阶关系路径中末尾的(2r-n)阶关系路径删除,得到该每个节点的多阶关系路径。当该差值小于该第三数值时,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的r阶关系路径,基于该每个节点的一阶关系路径和二阶关系路径,通过迭代拼接算法,确定该每个节点的r阶关系路径中终点的(n-r)阶关系路径,将该每个节点的r阶关系路径与确定的终点的(n-r)阶关系路径进行拼接,得到该每个节点的多阶关系路径。
譬如,假设该目标阶数为7,若确定节点a的多阶关系路径,则经过上述计算可得m等于2,r等于4,此时,对于四阶的关系路径可以通过二阶关系路径与二阶关系路径进行拼接得到。此外,由于n与r之间的差值3大于第三数值,因此,对于节点a的七阶关系路径可以由两个四阶关系路径进行拼接,得到八阶关系路径,假设该八阶关系路径为a->b->c->d->e->f->g->h->i,然后,删除该八阶关系路径中末尾的(2r-n)阶关系路径,即删除该八阶关系路径中的最后一阶关系路径,从而可以得到该节点a的七阶关系路径为a->b->c->d->e->f->g->h。
再如,假设该目标阶数为9,则若确定节点a的多阶关系路径,则经过上述计算可得m等于3,r等于8。由于n与r之间的差值小于第三数值,因此,基于节点a的二阶关系路径,通过迭代拼接算法,得到节点a的8阶关系路径,假设该节点a的8阶关系路径为a->b->c->d->e->f->g->h->i。此外,还需要确定该节点a的8阶关系路径中终点的(9-8)阶关系路径,在这里,即确定节点i的一阶关系路径,假设节点i的一阶关系路径为i->j。之后,将该节点a的8阶关系路径与节点i的一阶关系路径进行拼接,得到该节点a的9阶关系路径为a->b->c->d->e->f->g->h->i->j。
需要说明的是,上述步骤103和步骤104用于实现基于该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径的操作。
进一步地,在对高阶进行计算时,由于高阶的路径较多,因此在spark内部做聚合时,非常耗时且消耗内存,譬如,800万边的环境上三阶关系路径输出到hdfs约170g,因此对于数据存储的最后一步聚合处理可以采用hbase,可以将对所确定的每个节点的至少一条关系路径进行区分存储。
具体地,以该每个节点的节点信息为行健,将该每个节点的至少一条多阶关系路径中路径阶数相同的存储至数据库的同一行。也就是说,对于每个节点,将路径阶数相同的写在hbase的同一行,如此,达到快速聚合,提高聚合效率。
在本发明实施例中,扫描图数据的图信息,得到该图数据中每个节点的邻节点信息集合,根据每个节点的邻节点信息集合,可以确定每个节点的一阶关系路径和二阶关系路径中的至少一项。之后,可以基于所述确定的一阶关系路径和二阶关系路径中的至少一项,通过迭代拼接算法来确定每个节点的多阶关系路径。由于只扫描了一遍图数据库中的图信息即可确定每个节点的多阶关系路径,因此,减小了图数据库的压力。
图6是根据另一示例性实施例示出的一种图数据的处理方法流程图,这里以该图数据的处理方法应用于上述实施环境中为例进行说明,该图数据的处理方法可以包括如下几个实现步骤:
步骤601:扫描图数据的图信息,得到该图数据中每个节点的邻节点信息集合,该每个节点的邻节点信息集合包括该每个节点的所有邻节点的信息。
在图数据库中,在对节点进行存储时,还会存储与节点相关联的所有边的信息。如此,对图数据库中图数据的图信息进行扫描后,可以确定每个节点的所有邻节点的信息,从而得到每个节点的邻节点信息集合,即得到所有点的一阶信息。进一步地,在一种可能的实现方式中,这里可以采用spark进行扫描处理。
需要说明的是,在本发明实施例中,由于每个节点均包括至少一个邻节点,因此,针对每个节点均可以扫描到至少一个邻节点信息,从而得到每个节点的邻节点信息集合。
其中,每个节点的节点信息可以用于唯一标识一个节点,譬如,该节点信息可以为节点的id等。
进一步地,若采用spark进行扫描,则扫描处理后,rdd的格式为(vertexid,vertexlist),其中,vertexid代表某个节点的节点信息,vertexlist表示邻节点信息集合,可以以列表的形式表示。譬如,请参考图7,该图7是根据一示例性实施例示出的一种无向图数据的示意图。该节点a的邻节点信息集合包括{b、c、d、e}。
步骤602:根据该每个节点的邻节点信息集合,确定每个节点的一阶关系路径和二阶关系路径中的至少一项。
不难理解,在获知每个节点的邻节点信息集合后,就可以确定每个节点的一阶关系路径和二阶关系路径。譬如,针对节点a,其对应的rdd格式为(a,{b、c、d、e}),则可以获知,节点a的一阶关系路径包括a->b,a->c,a->d,a->e。
其中,对于无向图数据中每个节点的二阶关系路径,可以基于每个节点的一阶关系路径确定得到,如上文的例子,根据节点a的邻节点信息集合可以确定二阶关系路径如图8所示。
得到每个节点的一阶关系路径和二阶关系路径中至少一项后,即可基于该一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定每个节点的任意多阶关系路径。譬如,确定节点的三阶关系路径,可以根据节点的一阶关系路径,然后以一阶关系路径进行反向生成来确定,譬如,请参考图9和图10,节点b的入度边有f、g、h,根据节点b的二阶关系路径,可以生成三阶关系路径包括:f->b->a->e、g->b->a->e、h->b->a->e、f->b->a->d、g->b->a->d、h->b->a->d、f->b->a->c、g->b->a->c、h->b->a->c。
也就是说,对于每个节点的n阶关系路径的计算,可以由p阶和(n-p)阶组合进行计算,需要p阶最后一个节点与(n-p)阶的起始节点相同即可。在实施中,具体是需要确定节点的一阶关系路径,还是需要确定节点的二阶关系路径,又或是需要确定节点的一阶关系路径和二阶关系路径,可以根据实际需要确定的多阶关系路径的阶数来确定,具体实现策略请参见下文步骤603至步骤604。
步骤603:根据待确定的目标阶数,确定第一数值。
进一步地,根据待确定的目标阶数,通过公式(1)确定第一数值,其中,公式(1)为
需要说明的是,这里仅是以2为底数进行运算为例进行说明,在另外一些实施例中,还可以以其它数值为底数,本发明实施例对此不做限定。
步骤604:根据该目标阶数、该第一数值,以及该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径。
在一种可能的实现方式中,上述根据该目标阶数、该第一数值,以及该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径的具体实现可以包括如下1041-1043几个实现步骤:
6041:根据该第一数值,通过公式(2),确定第二数值。
其中,公式(2)为r=2^m,该r为第二数值。
进一步地,确定该第二数值后,可以将该第二数值与目标阶数相比较,以确定该第二数值与目标阶数是否相等。当比较结果不同时,对应的具体实现过程也不同,譬如,根据比较结果不同,可以分别采用如下步骤1042和步骤1043。
6042:当该目标阶数与该第二数值相等时,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的多阶关系路径。
譬如,当该目标阶数为8,m为3时,经过上述运算后可以确定第二数值r与该目标阶数相等,此时,可以基于每个节点的二阶关系路径,通过迭代拼接的方式,确定每个节点的多阶关系路径。
进一步地,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的多阶关系路径的具体实现可以包括:令i=2,获取目标节点的i阶关系路径,该目标节点为该每个节点的i阶关系路径的终点,将该每个节点的i阶关系路径与该目标节点的i阶关系路径进行拼接,得到该每个节点的2i阶关系路径。确定该2i是否等于该目标阶数,当该2i不等于该目标阶数时,令i=2i,并返回该获取目标节点的i阶关系路径,该目标节点为该每个节点的i阶关系路径的终点,将该每个节点的i阶关系路径与确定的i阶关系路径进行拼接,得到该每个节点的2i阶关系路径的步骤;当该2i等于该目标阶数时,将得到的2i阶关系路径确定为该每个节点的多阶关系路径。
这里需要说明的是,在上述实现过程中,在确定目标节点的i阶关系路径时,若i大于2,则需要基于该目标节点的二阶关系路径,通过迭代拼接算法来确定该目标节点的i阶关系路径。也就是说,将目标节点的二阶关系路径与该目标节点的二阶关系路径中终点的二阶关系路径进行拼接,得到目标节点的四阶关系路径。之后,再按照二阶关系路径与二阶关系路径进行拼接的方式,确定目标节点的四阶关系路径中终点的四阶关系路径,以此类推,可以确定该目标节点的i阶关系路径。
譬如,当目标阶数为8时,假设要确定节点a的8阶关系路径,节点a的二阶关系路径为a->b->c,此时目标节点为节点c,则获取节点c的二阶关系路径,假设节点c的二阶关系路径为c->d->e,此时,将该节点a的二阶关系路径与节点c的二阶关系路径进行拼接,可以得到节点a的四阶关系路径为a->b->c->d->e。由于此时所确定的阶数不等于目标阶数,因此,需要继续迭代拼接,即需要获取节点e的四阶关系路径。在获取节点e的四阶关系路径时,同样是基于该节点e的二阶关系路径进行迭代拼接,得到该节点e的四阶关系路径。譬如,节点e的二阶关系路径为e->f->g,则获取节点g的二阶关系路径,假设该节点g的二阶关系路径为g->h->i,将该节点e的二阶关系路径与该节点g的二阶关系路径进行拼接,得到该节点e的四阶关系路径为e->f->g->h->i。之后,将该节点a的四阶关系路径与该节点c的四阶关系路径进行拼接,得到节点a的八阶关系路径为a->b->c->d->e->f->g->h->i。此时,由于所得到的阶数与目标阶数相等,因此,结束迭代拼接操作,从而得到该节点a的8阶关系路径。
这里需要说明的是,由于无向图没有方向区分,因此,在拼接过程中,需要考虑重复路径的处理。在实施例中,将每个节点的i阶关系路径与目标节点的i阶关系路径进行拼接之前,检测目标节点的i阶关系路径中邻节点与每个节点的i阶关系路径中第i个节点是否相同,当目标节点的i阶关系路径中邻节点与每个节点的i阶关系路径中第i个节点不相同时,将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接。反之,当目标节点的i阶关系路径中邻节点与每个节点的i阶关系路径中第i个节点相同时,不做拼接操作。
譬如,请参考图11,由于节点c的二阶关系路径中邻节点为节点a,而节点m的四阶关系路径中的终点为c,且第四个节点为a,与节点c的二阶关系路径中的邻节点相同,因此,可以确定该节点c的二阶关系路径为重复路径,此时不将节点m的四阶关系路径与节点c的二阶关系路径进行拼接处理,从而避免出现重复路径。
另外,在下文所涉及的拼接过程中,同样需要按照上述实现方式进行重复路径处理。
6043:当该目标阶数与该第二数值不相等时,基于该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径。
具体地,该步骤1043可以包括:根据该第一数值,通过公式k=2^(m-1),确定第三数值,该k为该第三数值,确定该目标阶数与该第二数值之间的差值。当该差值大于该第三数值时,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的2r阶关系路径,将该每个节点的2r阶关系路径中末尾的(2r-n)阶关系路径删除,得到该每个节点的多阶关系路径。当该差值小于该第三数值时,基于该每个节点的二阶关系路径,通过迭代拼接算法,确定该每个节点的r阶关系路径,基于该每个节点的一阶关系路径和二阶关系路径,通过迭代拼接算法,确定该每个节点的r阶关系路径中终点的(n-r)阶关系路径,将该每个节点的r阶关系路径与确定的终点的(n-r)阶关系路径进行拼接,得到该每个节点的多阶关系路径。
譬如,假设该目标阶数为7,若确定节点a的多阶关系路径,则经过上述计算可得m等于2,r等于4,此时,对于四阶的关系路径可以通过二阶关系路径与二阶关系路径进行拼接得到。此外,由于n与r之间的差值3大于第三数值,因此,对于节点a的七阶关系路径可以由两个四阶关系路径进行拼接,得到八阶关系路径,假设该八阶关系路径为a->b->c->d->e->f->g->h->i,然后,删除该八阶关系路径中末尾的(2r-n)阶关系路径,即删除该八阶关系路径中的最后一阶关系路径,从而可以得到该节点a的七阶关系路径为a->b->c->d->e->f->g->h。
再如,假设该目标阶数为9,则若确定节点a的多阶关系路径,则经过上述计算可得m等于3,r等于8。由于n与r之间的差值小于第三数值,因此,基于节点a的二阶关系路径,通过迭代拼接算法,得到节点a的8阶关系路径,假设该节点a的8阶关系路径为a->b->c->d->e->f->g->h->i。此外,还需要确定该节点a的8阶关系路径中终点的(9-8)阶关系路径,在这里,即确定节点i的一阶关系路径,假设节点i的一阶关系路径为i->j。之后,将该节点a的8阶关系路径与节点i的一阶关系路径进行拼接,得到该节点a的9阶关系路径为a->b->c->d->e->f->g->h->i->j。
需要说明的是,上述步骤603和步骤604用于实现基于该每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定该每个节点的多阶关系路径的操作。
进一步地,在对高阶进行计算时,由于高阶的路径较多,因此在spark内部做聚合时,非常耗时且消耗内存,譬如,800万边的环境上三阶关系路径输出到hdfs约170g,因此对于数据存储的最后一步聚合处理可以采用hbase,可以将对所确定的每个节点的至少一条关系路径进行区分存储。
具体地,以该每个节点的节点信息为行健,将该每个节点的至少一条多阶关系路径中路径阶数相同的存储至数据库的同一行。也就是说,对于每个节点,将路径阶数相同的写在hbase的同一行,如此,达到快速聚合,提高聚合效率。
在本发明实施例中,扫描图数据的图信息,得到该图数据中每个节点的邻节点信息集合,根据每个节点的邻节点信息集合,可以确定每个节点的一阶关系路径和二阶关系路径中的至少一项。之后,可以基于所述确定的一阶关系路径和二阶关系路径中的至少一项,通过迭代拼接算法来确定每个节点的多阶关系路径。由于只扫描了一遍图数据库中的图信息即可确定每个节点的多阶关系路径,在图数据中,大部分点会在多个路径中出现,对于这些在多个路径中出现的点信息,本发明只获取一次,而不进行重复获取。因此,减小了图数据库的压力。
图12是根据一示例性实施例示出的一种图数据的处理装置的结构示意图,该图数据的处理装置可以由软件、硬件或者两者的结合实现。该装置可以包括:
扫描模块1201,用于扫描图数据的图信息,得到所述图数据中每个节点的邻节点信息集合,所述每个节点的邻节点信息集合包括所述每个节点的所有邻节点的信息;
第一确定模块1202,用于根据所述每个节点的邻节点信息集合,确定所述每个节点的一阶关系路径和二阶关系路径中至少一项;
第二确定模块1203,用于基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述第二确定模块1203用于:
根据待确定的目标阶数,通过公式
根据所述目标阶数、所述第一数值,以及所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述第二确定模块1203用于:
根据所述第一数值,通过公式r=2^m,确定第二数值,所述r为所述第二数值;
当所述目标阶数与所述第二数值相等时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的多阶关系路径;
当所述目标阶数与所述第二数值不相等时,基于所述每个节点的一阶关系路径和二阶关系路径中至少一项,通过迭代拼接算法,确定所述每个节点的多阶关系路径。
可选地,所述第二确定模块1203用于:
令i=2,获取目标节点的i阶关系路径,所述目标节点为所述每个节点的i阶关系路径的终点,将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接,得到所述每个节点的2i阶关系路径;
确定所述2i是否等于所述目标阶数;
当所述2i不等于所述目标阶数时,令i=2i,并返回所述获取目标节点的i阶关系路径,所述目标节点为所述每个节点的i阶关系路径的终点,将所述每个节点的i阶关系路径与确定的i阶关系路径进行拼接,得到所述每个节点的2i阶关系路径的步骤;
当所述2i等于所述目标阶数时,将得到的2i阶关系路径确定为所述每个节点的多阶关系路径。
可选地,所述第二确定模块1203用于:
根据所述第一数值,通过公式k=2^(m-1),确定第三数值,所述k为所述第三数值;
确定所述目标阶数与所述第二数值之间的差值;
当所述差值大于所述第三数值时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的2r阶关系路径;将所述每个节点的2r阶关系路径中末尾的(2r-n)阶关系路径删除,得到所述每个节点的多阶关系路径;
当所述差值小于所述第三数值时,基于所述每个节点的二阶关系路径,通过迭代拼接算法,确定所述每个节点的r阶关系路径,基于所述每个节点的一阶关系路径和二阶关系路径,通过迭代拼接算法,确定所述每个节点的r阶关系路径中终点的(n-r)阶关系路径,将所述每个节点的r阶关系路径与确定的终点的(n-r)阶关系路径进行拼接,得到所述每个节点的多阶关系路径。
可选地,请参考图13,所述装置还包括:
检测模块1204,用于当所述图数据为无向图数据时,检测所述目标节点的i阶关系路径中邻节点与所述每个节点的i阶关系路径中第i个节点是否相同;
所述第二确定模块1203,用于当所述目标节点的i阶关系路径中邻节点与所述每个节点的i阶关系路径中第i个节点不相同时,将所述每个节点的i阶关系路径与所述目标节点的i阶关系路径进行拼接。
可选地,请参考图14,所述装置还包括:
存储模块1205,用于以所述每个节点的节点信息为行健,将所述每个节点的至少一条多阶关系路径中路径阶数相同的存储至数据库的同一行。
在本发明实施例中,扫描图数据的图信息,得到该图数据中每个节点的邻节点信息集合,根据每个节点的邻节点信息集合,可以确定每个节点的一阶关系路径和二阶关系路径中的至少一项。之后,可以基于所述确定的一阶关系路径和二阶关系路径中的至少一项,通过迭代拼接算法来确定每个节点的多阶关系路径。由于只扫描了一遍图数据库中的图信息即可确定每个节点的多阶关系路径,因此,减小了图数据库的压力。
需要说明的是:上述实施例提供的图数据的处理装置在实现图数据的处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图数据的处理装置与图数据的处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图15示出了本发明一个示例性实施例提供的计算机设备1500的结构框图。该计算机设备1500可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备1500还可能被称为用户设备、便携式计算机设备、膝上型计算机设备、台式计算机设备等其他名称。
通常,计算机设备1500包括有:处理器1501和存储器1502。
处理器1501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1501可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1501可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1501还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
存储器1502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1501所执行以实现本申请中方法实施例提供的图数据处理方法。
在一些实施例中,计算机设备1500还可选包括有:外围设备接口1503和至少一个外围设备。处理器1501、存储器1502和外围设备接口1503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1503相连。具体地,外围设备包括:射频电路1504、触摸显示屏1505、摄像头1506、音频电路1507、定位组件1508和电源1509中的至少一种。
外围设备接口1503可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1501和存储器1502。在一些实施例中,处理器1501、存储器1502和外围设备接口1503被集成在同一芯片或电路板上;在一些其他实施例中,处理器1501、存储器1502和外围设备接口1503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1504用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1504包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1504可以通过至少一种无线通信协议来与其它计算机设备进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和wifi(wirelessfidelity,无线保真)网络中至少一项。在一些实施例中,射频电路1504还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1505用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1505是触摸显示屏时,显示屏1505还具有采集在显示屏1505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1501进行处理。此时,显示屏1505还可以用于提供虚拟按钮和虚拟键盘中至少一项,也称软按钮和软键盘中至少一项。在一些实施例中,显示屏1505可以为一个,设置计算机设备1500的前面板;在另一些实施例中,显示屏1505可以为至少两个,分别设置在计算机设备1500的不同表面或呈折叠设计;在再一些实施例中,显示屏1505可以是柔性显示屏,设置在计算机设备1500的弯曲表面上或折叠面上。甚至,显示屏1505还可以设置成非矩形的不规则图形,也即异形屏。显示屏1505可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。
摄像头组件1506用于采集图像或视频。可选地,摄像头组件1506包括前置摄像头和后置摄像头。通常,前置摄像头设置在计算机设备的前面板,后置摄像头设置在计算机设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1501进行处理,或者输入至射频电路1504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备1500的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1501或射频电路1504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1507还可以包括耳机插孔。
定位组件1508用于定位计算机设备1500的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1508可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1509用于为计算机设备1500中的各个组件进行供电。电源1509可以是交流电、直流电、一次性电池或可充电电池。当电源1509包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,计算机设备1500还包括有一个或多个传感器1510。该一个或多个传感器1510包括但不限于:加速度传感器1511、陀螺仪传感器1512、压力传感器1513、指纹传感器1514、光学传感器1515以及接近传感器1516。
加速度传感器1511可以检测以计算机设备1500建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1511可以用于检测重力加速度在三个坐标轴上的分量。处理器1501可以根据加速度传感器1511采集的重力加速度信号,控制触摸显示屏1505以横向视图或纵向视图进行用户界面的显示。加速度传感器1511还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1512可以检测计算机设备1500的机体方向及转动角度,陀螺仪传感器1512可以与加速度传感器1511协同采集用户对计算机设备1500的3d动作。处理器1501根据陀螺仪传感器1512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1513可以设置在计算机设备1500的侧边框和/或触摸显示屏1505的下层。当压力传感器1513设置在计算机设备1500的侧边框时,可以检测用户对计算机设备1500的握持信号,由处理器1501根据压力传感器1513采集的握持信号进行左右手识别或快捷操作。当压力传感器1513设置在触摸显示屏1505的下层时,由处理器1501根据用户对触摸显示屏1505的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1514用于采集用户的指纹,由处理器1501根据指纹传感器1514采集到的指纹识别用户的身份,或者,由指纹传感器1514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1514可以被设置计算机设备1500的正面、背面或侧面。当计算机设备1500上设置有物理按键或厂商logo时,指纹传感器1514可以与物理按键或厂商logo集成在一起。
光学传感器1515用于采集环境光强度。在一个实施例中,处理器1501可以根据光学传感器1515采集的环境光强度,控制触摸显示屏1505的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1505的显示亮度;当环境光强度较低时,调低触摸显示屏1505的显示亮度。在另一个实施例中,处理器1501还可以根据光学传感器1515采集的环境光强度,动态调整摄像头组件1506的拍摄参数。
接近传感器1516,也称距离传感器,通常设置在计算机设备1500的前面板。接近传感器1516用于采集用户与计算机设备1500的正面之间的距离。在一个实施例中,当接近传感器1516检测到用户与计算机设备1500的正面之间的距离逐渐变小时,由处理器1501控制触摸显示屏1505从亮屏状态切换为息屏状态;当接近传感器1516检测到用户与计算机设备1500的正面之间的距离逐渐变大时,由处理器1501控制触摸显示屏1505从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图15中示出的结构并不构成对计算机设备1500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动计算机设备的处理器执行时,使得移动计算机设备能够执行上述所示实施例提供的图数据的处理方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机能够执行上述所示实施例提供的图数据的处理方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。