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

文档序号:9667324阅读:来源:国知局
在关系网络的数据处理过程中,应用服 务器只需要筛选出特定类型的节点,而不需要对所有节点进行记录。因此,关系网络数据处 理过程中的一个操作就是从用户历史操作记录中筛选出所需的节点。
[0093]通过上述的方法可以将所有用户历史操作记录抽象成关系网络。在由关系网络构 成的图森林中,如图2所示,进一步地可以将其划分为一个个的子图。这里的子图是指图森 林中的一个连通图,而所谓连通图就是指图中任何两个节点都有路径可以连通,比如图森 林中的三个图都是连通图,但是森林就不是连通图,因为用户1和用户6之间不联通。于是, 就可以将图森林看做是由若干的子图构成。每个子图中的节点都是唯一的,即如果同一个 节点出现在不同子图中,那么,需要将这两个子图进行合并。
[0094]对于每一条用户历史操作记录,根据关系网络需要,获取特定类型的节点,并将它 们两两组合构建为关系网络边列表。这里获取的特定类型的节点内容包括节点类型和节点 值。构建关系网络边的每一行信息包括:起始节点(起始节点类型、起始节点值)、终止节 点(终止节点类型、终止节点值)和节点间关联关系。
[0095] 需要指出的是,关系网络边有两种选择,由业务系统自定义,可以设计为有向边, 也可以设计为无向边,
[0096]例如,对于一条用户历史操作记录,"用户1"在"设备1"上使用"信用卡1"进行 操作1。根据上述的方法,将节点两两组合,构建出关系网络边列表。表2为有向关系网络 边列表,表3为无向关系网络边列表。
[0097]表2
[0098]
[0101] 进一步地,在上述的关系网络边列表构建完成之后,将关系网络边的起始节点和 终止节点划分到同一个子图中,即对应起始节点和终止节点记录同一个子图网络ID,再把 这种对应关系保存在节点表中。这里的节点表的每一行记录包括节点(节点类型,节点值) 和该节点所在的子图网络ID。
[0102] 例如,根据上述的关系网络边列表,应用服务器可以将"用户1"、"设备1"、"信用 卡1"和相应子图网络ID之间的映射关系创建到下面的节点表中,具体如表4所示。
[0103]表 4
[0104]
[0105] 具体的,在建立节点表的过程中,需要将在关系网络边获取的起始节点和终止节 点保存到同一个子图中,即让它们拥有相同的子图网络ID,具体包括以下几种情况:
[0106] 如果起始节点和终止节点都没有子图网络ID,则创建一个新的子图网络ID,并将 起始节点和终止节点的子图网络ID保存到节点表中。
[0107] 如果起始节点有子图网络ID,而终止节点没有子图网络ID,则设定终止节点的子 图网络ID为起始节点的子图网络ID,并保存到节点表中。
[0108] 如果起始节点没有子图网络ID,而终止节点有子图网络ID,则设定起始节点的子 图网络ID为终止节点的子图网络ID,并保存到节点表中。
[0109] 如果起始节点和终止节点的子图网络ID不一样,则修改终止节点所在子图网络 中所有节点的子图网络ID为起始节点的子图网络ID,并保存至节点表中。
[0110] 例如,用户1和设备1同属一个子图1,子图网络ID为ID_1,用户2和用户3同属 一个子图2,子图网络ID为ID_2,现在用户2在设备1上进行了注册,以用户2为起始节点, 设备1为终止节点,则将设备1的子图网络ID修改为ID_2,同时也需将用户1的子图网络 ID修改为ID_2,修改后两个子图合并为一个子图,子图网络ID为ID_2。
[0111] 如果起始节点的子图网络ID和终止节点的子图网络ID相等,则重复上述的判断 直到关系网络边列表中的所有关系网络边都已经处理。
[0112] 又例如,使用MySQL(优选的用分布式存储系统(HadoopDatabase,HBase)等KV 数据库,这里用MySQL是为了便于描述)来存储图2中三个子图的节点到子图网络ID的映 射的节点表,如表5所示。
[0113]表 5
[0114]

[0115] 更进一步地,还需要根据节点和子图网络ID的映射关系,将关系网络边依据子图 网络ID进行归并,生成子图网络关联信息,并对归并后的子图网络关联信息进行序列化, 在序列化完成之后将子图网络ID和序列化后的子图网络关联信息保存到子图网络表。这 里的子图网络表包括子图网络ID和子图网络关联信息集合序列化后的数据。
[0116] 例如,根据节点和子图网络ID的对应关系,将关系网络边依据子图网络ID进行归 并,假设使用MySQL(优选的用HBase等KV数据库,这里用MySQL是为了便于描述)来储存 数据,那么对图2所示的关系网络图森林进行上述的操作,则可以得到下面的结构如表6所 /_J、1〇
[0117] 表 6 [01181
[0119」
[0120] 上面的描述方法是双向关系,存储了子图网络ID和子图关联信息的映射关系。
[0121] 又例如,在节点表生成之后,如表4所示,用户历史操作记录中"用户1"、"设备1" 和"信用卡1"已经在一个子图网络中,具有相同的子图网络ID,现在由其所对应的表3中 的关系网络边进行归并并按要求进行序列化。在上文中,节点的类型使用中文,但是为了便 于描述,实际应用中,会将节点类型定义为4字节的int类型数值。下面的序列化格式只是 其中一种方式,这里的序列化格式完全由业务所需来决定,也可以采用通用的序列化方法, 如Java语言序列化,Json序列化等。
[0122] 每条边的序列化格式如表7所示:
[0123] 表 7
[0124]
[0125] 边之间的字节数据归并拼接在一起如表8所示:
[0126]表 8
[0127]
[0128] 通过上述的过程就完成了由用户历史操作记录生成的关系网络,并将关系网络划 分为子图的全过程。
[0129] 在上述的子图划分和相应的数据存储完成之后,进一步地,参阅图4所示,本申请 以如下的具体实施例为例,对关系网络计算的流程进行详细的说明。
[0130] 步骤400 :接收用户的计算请求,并获取计算请求中包含的至少一个请求目标值。
[0131] 步骤410:分别确定至少一个请求目标值所关联的节点,并获取对应每一个节点 预设的子图网络标识ID,以及根据获得的子图网络ID获取相应的子图网络关联信息,子图 网络关联信息用于描述归属于同一子图的节点及节点间的关联关系。
[0132] 若同一请求目标值关联至少两个节点,且至少两个节点对应相同子图网络ID,则 直接获取对应子图网络ID预设的子图网络关联信息,并采用获得的子图网络关联信息对 同一请求目标值进行处理;
[0133] 若存在至少两个请求目标值关联的节点对应同一子图网络ID,则直接获取同一子 图网络ID对应的子图网络关联信息,并采用获得的子图网络关联信息对至少两个请求目 标值进行合并处理;
[0134] 例如,一个关系网络计算请求里面包含了 3个关系网络计算的目标值:
[0135]目标值1:用户1在一层关联里关联了几个用户类型的节点;
[0136]目标值2 :用户5在两层关联里关联了几个设备类型的节点;
[0137]目标值3 :用户1和用户2在关系网络图中最短路径层数。
[0138] 若在节点表中,用户1的子图网络ID为ID1,用户5的子图网络ID为ID2,那么, 目标值1和3所对应的节点所属子图网络ID相同,于是可以将它们的目标值进行合并分为 一组,目标值2分为一组;
[0139] 若存在至少两个请求目标值且至少两个请求目标值关联的节点分别对应不同的 子图网络ID,则分别获取对应每一个子图网络ID对应的子图网络关联信息,并采用获得的 每一个子图网络关联信息分别对相应的请求目标值进行处理。
[0140] 此外,还有一种特殊情况,若同一请求目标值关联至少两个节点,且至少两个节点 对应不同子图网络ID,则获取对应其中一个子图网络ID预设的子图网络关联信息;或者, 分别获取对应其中每一子图网络ID预设的子图网络关联信息;或者不需要获取对应节点 的子图网络关联信息,直接根据子图网络ID即可以确定两个节点之间不存在关联关系。
[0141]例如,目标值为用户1和用户2在关系网络图中最短路径层数。如果用户1和用 户2所对应的子图网络ID不相同,那么这时可以选择用户1或用户2所对应的子图网络ID的子图网络关联信息中的一个进行计算,也可以对两个子图网络ID所对应的子图关联信 息都进行计算。因为用户1和用户2不在同一个子图中,因此即使任选其中一个子图进行 计算,也能够确定两者之间不存在关联关系,同理,将两个子图都计算一遍,也会发现两者 之间不存在关联关系。再者,两个节点所对应的子图网络标识ID不相同,说明两个节点不 连通,即不关联,因为不同的子图
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1