与Riak一起走路 - 寻找'共同的朋友'

时间:2011-09-16 04:17:39

标签: database graph riak

任何与Riak有关系的人都可以解释如何进行链接漫步以找到两个人之间的共同朋友(例如,就像Facebook的普通朋友一样)?此外,理想情况下计算要求应该是最小的 - 即。服务器不必经过很长的时间做计算。

我想把所有'人'放在一个“人”桶中,每个'人'都会有一个朋友链接(这就像一对多的关系),然后每个'人'都是扭转了与他人相关的关系(这就像是一对一的关系)。我认为可以有效地做到这一点,计算/结果将立即可用,但只是无法弄明白。

(好吧,我还没有完全开始使用Riak进行实际编码,因此对Riak的链接步行功能进行更全面的解释将不胜感激。)

谢谢!

1 个答案:

答案 0 :(得分:0)

我看到两种可能的解决方案:

  1. MapReduce作业大致有这种情况:
    • 比较人A和B的两个输入
    • 获取朋友ID的链接阶段
    • 将它们映射到元组{FriendID,1}
    • 减少1s的总和
    • 减少sum = 2
    • 的过滤器
    • %%必要时可以将最后几个步骤组合成一个
  2. 只需为每个人发出一个链接行走查询,并在客户端上交换返回的集合 - 有点难看,但有效。