【问题标题】:Activity Feed with RiakRiak 的活动提要
【发布时间】:2013-01-29 00:54:29
【问题描述】:

这周我读到了一篇有趣的article,它解释了作者如何实施一项活动。基本上,他们使用两种方法来处理活动,我正在适应我的场景,所以假设我们有一个用户 foo,他有一定数量 (x) 的关注者:

if x<500, then the activity will be copyied to every follower feed
    this means slow writes, fast reads
if x>500, only a link will be made between foo and his followoers
    in theory, fast writes, but will slow reads

因此,当某些用户访问您的活动提要时,服务器将获取并合并所有数据,因此这意味着在他们自己复制的活动中快速查找,然后跨链接进行查询。如果时间线有 20 个限制,那么我每个取 10 个然后合并。

我正在尝试使用 Riak 和 Linking 的功能来做到这一点,所以这是我的问题:链接比复制快吗?我的建筑理念够好吗?还有其他我应该看到的解决方案和/或技术吗?

PS.:我并没有为生产实现活动提要,它只是为了学习如何实现一个表现良好并稍微使用 Riak 的活动提要。

【问题讨论】:

    标签: database web-applications database-design nosql riak


    【解决方案1】:

    两个想法。

    1) 不,Linking(在 Riak Link Walking 的意义上)很可能不是实现此功能的正确方法。一方面,每个链接都存储为一个单独的 HTTP 标头,并且 HTTP 规范中建议限制您应该发送多少标头字段。 (虽然,公平地说,在测试中你可以在 Riak 的标题中使用超过 1000 个链接,似乎工作正常。但不推荐)。更重要的是,通过 Link Walking api 查询这些链接实际上在后端使用 MapReduce,并且对于您打算使用它的那种用途来说相当慢。

    这并不是说您不能存储作为链接列表的 JSON 对象,当然,这是一种有效的方法。我只是建议不要为此使用 Riak 链接。

    2)至于如何正确实现它,这是一个更难的问题,并且取决于您的流量和用例。但是您的一般方法是有效的——复制一些 X 更新值的提要(X 是否为 500 或更小应在测试中确定),并在更新数量大于 X 时链接。

    你应该如何链接?您有 3 个选择,所有选择都需要权衡。 1) 使用二级索引 (2i),2) 使用搜索,或 3) “手动”使用链接,意思是存储带有您手动取消引用的 URL 的 JSON 文档(相对于使用链接遍历查询)。

    我强烈推荐观看剪贴板工程师的视频:http://vimeo.com/album/2258285/page:2/sort:preset/format:thumbnail(在 Riak 上构建社交应用程序),看看他们是如何解决这个问题的。 (基本上,他们使用搜索进行链接)。

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多