一种关系网络的计算方法及装置的制造方法

文档序号:9667324阅读:261来源:国知局
一种关系网络的计算方法及装置的制造方法
【技术领域】
[0001] 本申请涉及计算机领域,特别是涉及一种关系网络的计算方法及装置。
【背景技术】
[0002] 在用户操作平台中,用户及用户相关的介质可以通过用户的操作而关联起来构成 关系网络。关系网络在用户操作平台中有很多用处,例如可以利用关系网络来推荐好友,检 测用户之间的关联度,进行相关内容的推荐等。此外,通过关联网络还可以对用户的风险性 进行扫描,判断特定设备是否可信,或检测某个设备是否专门进行扫号。
[0003] 现有技术下,将用户、用户介质和用户虚拟介质当作关系网络中的一个个节点,把 用户的操作当作节点之间的边,那么关系网络就包含了节点和边,从数学角度抽象,它就是 一种图,如图1所示。进一步地,所有关系网络图的集合就叫做森林,如图2所示。
[0004] 目前,在内存或者存储介质中存储关系网络图时,常用的图表示方法是矩阵表示 法(适合密集型图)和邻接表表示法(适合稀疏型图),其中邻接表表示法是一种比较灵活 的表示方法,因此比较常用。进一步地,利用关系网络图可以进行图计算,比如,检测第一用 户和第二用户在关系网络图中是几度关联的,通常采用的方法是性能较高的广度优先搜索 (BreadthFirstSearch,BFS)或深度优先搜索(DepthFirstSearch,DFS)。
[0005] 现有技术中,已有一些图数据库,可以用来存储关系网络的节点和边信息,并利用 图数据库提供的图计算功能进行关系网络计算,例如:ne〇4j,凯莱(cayley)等。
[0006] 其中,neo4j是现在相对成熟的图数据库。它主要有两大特征:
[0007] 其一,将关系网络图中的节点、关系和它们的属性利用双向链表结构保存到三个 不同的文件当中;
[0008] 其二,每次图计算都将计算参数发送到图数据库,图数据库计算结束后返回计算 结果。
[0009] 例如,在一次图计算的过程,如果图计算请求计算100个目标值,那么就需要向 ne〇4j数据库服务器发送100次网络请求,这样较频繁读取磁盘带来大量的网络延时使得 效率较低,因此可能无法满足真实的应用环境的需要。
[0010] 又例如,某平台的关系网络如图1所示(需要指出的是,实际生产中可能会更复 杂),假设"用户1"使用"设备1"进行操作,那么这个时候需要对用户1进行风险扫描,此 时接收到的扫描请求中包含有多个待确定的目标值,具体为:
[0011]目标值1:用户1和设备1是否有过关联(即,两个节点是否连通);
[0012] 目标值2 :设备1和用户1是几层关联(S卩,设备1节点需要通过几条边才可以到 用户1节点);
[0013]目标值3:用户1在3层内关联了几个用户;
[0014] ......
[0015] 因此,在实际操作过程中,需要按照目标值的数目多次向图数据库请求进行图计 算,每次图计算都需要将计算参数发送到图数据库,而且每次计算均需要从请求的起始节 点开始进行全图范围的搜索和分析,频繁的读取过程需要大量的网络延时,效率很低。
[0016] 由此可见,在实际的图计算过程中,主要存在以下两点缺陷:
[0017] 第一,图计算不灵活。
[0018] 由于具体的图计算算法是由图数据库已配置好的算法,因此如果对业务有特殊需 求时,难以满足实际的需要。
[0019] 第二,每次图计算都需要较大的网络延时。
[0020] 第三,由于图计算是由图数据库提供的,因此业务请求图计算时只能发送到图数 据库进行计算,而当一次业务操作中需要多次图计算时,每次图计算都需要将计算参数发 送到图数据库,较频繁的读取将占用大量网络宽带,代价很高。
[0021] 此外,现有技术中还提供了另外一种关系网络图的计算方法,即利用图的邻接表 表示方法来进行图计算。邻接表是图结构的一种常用表示方法,通过图中的边来存储图的 结构。在这种图计算方法中,将关系网络图中节点之间的邻接关系保存在传统关系型数据 库、键值(Key-Value,KV)型数据库、文件系统等存储介质中,计算的时候从存储介质中获 取图节点间关联关系,进而进行图计算。它也主要有两大特征:
[0022] 其一,图结构以邻接表的形式存储在存储系统中;
[0023] 其二,计算时每次只能去查询一层的相邻的节点,然后通过计算后的相邻一层节 点的结果再去读取下一层相邻的节点。
[0024] 例如,以图3为例,可以采用MySQL数据库的表来存储关系网络图的邻接表,具体 如表1所示。
[0025]表1
[0026]
[0027] -次计算过程,由于每次只能去查询一层的相邻的节点,因此如果某起始节点与 多个节点存在关系,且与结束节点之间是多层关联,那么则需要多次的查询数据,带来大量 的网络和磁盘读写负载,造成工作效率低下,不能完全满足应用环境中对图计算的需要。
[0028] 因此,这种方法也存在两点主要缺陷:
[0029] 第一、图计算过程中需要多次读取数据。
[0030] 在进行图计算时,由于保存的是邻接表的数据,因此只能根据起始节点加载与它 直接相邻的节点数据,计算完与起始节点直接相邻的节点后,如果需要往下计算,那么需要 通过与起始节点直接相邻的节点再去存储介质中读取下一层节点的数据。所以,一次网络 计算可能会涉及到多次网络消耗和持久化存储介质读取消耗。
[0031] 第二、业务处理时间过长。
[0032] 由于一次网络计算可能涉及多次持久化介质(如硬盘)的读取操作,而通常情况 下常用的持久化存储介质,比如磁盘、网络,相对较慢,所以涉及越多次的持久化介质读取, 就会消耗更多的时间。
[0033] 现如今,互联网对关系网络图的计算需求越来越大,但是在现有技术下,图计算需 要多次通过磁盘和/或网络读取数据,效率较低。而在正常的业务场景中,一次业务请求中 常包含多个网络图计算,这就导致现在的图数据库或者邻接表存储方式所支持的图计算方 法难以满足实际应用环境的需求。

【发明内容】

[0034] 本申请实施例提供一种关系网络的计算方法,用以解决现有技术中图计算需要多 次通过磁盘和/或网络读取数据造成应用效率较低的问题。
[0035] 本申请实施例提供的具体技术方案如下:
[0036] 一种关系网络的计算方法,包括:
[0037] 接收用户的计算请求,并获取计算请求中包含的至少一个请求目标值;
[0038] 分别确定至少一个请求目标值所关联的节点,并获取对应每一个节点预设的子图 网络标识ID,以及根据获得的子图网络ID获取相应的子图网络关联信息,子图网络关联信 息用于描述归属于同一子图的节点及节点间的关联关系;
[0039] 根据获得的子图网络关联信息对至少一个请求目标值进行计算处理。
[0040] 这样,可以将网络图森林划分为连通的网络子图,然后将网络子图中的所有关联 信息保存在一起。在进行网络关系实时计算时,可以针对多个计算目标值,一次读取一个子 图网络数据进行多次图计算,也可以一次读取多个子图网络数据进行多次图计算,且读取 数据量控制在合理范围内,进而极大地提高了图计算的效率,提高了关系网络计算在传统 数据库支持下的计算性能。
[0041] 较佳的,分别确定至少一个请求目标值所关联的节点,并获取对应每一个节点预 设的子图网络标识ID,以及根据获得的子图网络ID获取相应的子图网络关联信息,子图网 络关联信息用于描述归属于同一子图的节点及节点间的关联关系,以及根据获得的子图网 络关联信息对至少一个请求目标值进行计算处理,包括:
[0042] 若同一请求目标值关联至少两个节点,且至少两个节点对应相同子图网络ID,则 直接获取对应子图网络ID预设的子图网络关联信息,并采用获得的子图网络关联信息对 同一请求目标值进行处理;
[0043] 若存在至少两个请求目标值关联的节点对应同一子图网络ID,则直接获取同一子 图网络ID对应的子图网络关联信息,并采用获得的子图网络关联信息对至少两个请求目 标值进行合并处理;
[0044] 采用这样的合并目标值处理方法,使得在图计算过程中能够实现一次读取一个子 图网络数据进行多次图计算。
[0045] 若存在至少两个请求目标值且至少两个请求目标值关联的节点分别对应不同的 子图网络ID,则分别获取对应每一个子图网络ID对应的子图网络关联信息,并采用获得的 每一个子图网络关联信息分别对相应的请求目标值进行处理。
[0046] 采用这样的目标值处理方法,使得在图计算过程中能够实现一次读取多个子图网 络数据进行多次图计算。
[0047] 较佳的,在预处理阶段,进一步包括:
[0048] 应用服务器根据保存的用户历
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1