2

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

我正在考虑将所有“人”放在“人”桶中,每个“人”都会有一个朋友链接(这就像一对多的关系),然后对于每个“人”都是反向关系-链接回另一个人(这就像一对一的关系)。我认为可以有效地做到这一点,并且计算/结果将立即可用,但无法弄清楚。

(好吧,我还没有完全开始使用 Riak 进行真正的编码,所以对 Riak 的链接遍历功能进行更全面的解释将不胜感激。)

谢谢!

4

1 回答 1

0

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

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