与 Riak 一起链接行走 - 搜索“共同的朋友”;

发布于 2024-12-05 01:28:07 字数 319 浏览 1 评论 0原文

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

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

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

谢谢!

Can anyone familier with Riak explain how to do a link-walk to find common friends among two people (eg. just like Facebook's common friends)? Also, the computation requirement should ideally be minimal - ie. the server does not have to go through great length do do calculations.

I'm thinking of putting all 'persons' in a "people" bucket, and each 'person' will have a friends link (this is like a one-to-many relationship), then for each 'person' is reversed relationship-linked back to the other person (this is like a one-to-one relationship). I think it is possible to do this efficiently and calculation/result will be instantly available, but just can't figure it out.

(Alright, I have not exactly started real-coding with Riak, so a more thorough explanation on Riak's link walking feature would be appreciated.)

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清旖 2024-12-12 01:28:07

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

  1. MapReduce 作业大约具有以下场景:
    • 对 A 和 B 进行比较的两个输入
    • 链接阶段获取好友 ID
    • 将它们映射到元组 {FriendID, 1}
    • 减少 1 的总和
    • 减少总和 = 2 的过滤器
    • %% 如果需要,可以将最后几个步骤合并为一个
  2. 只需为每个人发出一个链接遍历查询,并在客户端上返回返回的集合相交 - 有点难看,但有效。

I see two possible solutions:

  1. MapReduce job with approximately this scenario:
    • Two inputs with people A and B being compared
    • Link phase fetching their friends IDs
    • Map them to tuples {FriendID, 1}
    • Reduce sum the 1s
    • Reduce filter where sum = 2
    • %% Last few steps can be combined into one if necessary
  2. Just issue a link-walking query for each person and intersect returned sets on client - a bit ugly, but works.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文