2

如果一个正在开发的网站应该在未来增长很多(比如数百万用户),我应该如何管理提要(用户的活动)?

  1. 对于每个用户活动,我在一些 Feeds 表中手动创建一个 Feed 记录
  2. 推断当下的提要

一个具体的例子如下:
用户可以被其他用户关注(比如 twitter),他们可以创建东西。如果我创建一个东西,这个东西就会有 CreationDate 和其他东西。我可以只使用连接或通过更新 Feeds 表来为我的追随者提供信息,以防有人停止关注我。

显然(1)难以维护但速度更快,(2)更容易,但我不确定它是否能处理这么多用户为可见性而加入等等......

Facebook是如何做到的?还是推特?

4

3 回答 3

1

我是 Feedly 的作者之一,这是一个帮助您构建提要系统的 Python 框架。

Feedly 可用于使用全推方式或推拉混合方式;在我们的文档中,我们提供了大量关于此的参考和解释。

您可以在github上找到该项目,并在此处找到背景文章

于 2013-10-25T10:39:07.260 回答
0

我会推荐以下结构:

具有 feed_id、feed_type_id、creator_id、created_date、display_date、status 等字段的feed 表,其中 status 是活动的、隐藏的或停用的,您可以结合更新 display_date 字段来处理取消关注和重新关注,而无需创建附加记录

带有字段 feed_type_id、feed_type_name 的feed_type 表

跟随带有字段 follow_id、feed_id、user_id 的表

带有字段 post_id、feed_id、文本的发布表

...对于每个 feed_type 以此类推

虽然在 db 端设置需要更长的时间,但从长远来看,这将节省您的时间,因为每种提要类型都可以轻松继承所有常见字段,例如 creator_id、created_date、status 和 display_date,它们很好地对应于面向对象代码中的类,并且将更容易查找。例如,如果您每个用户都有一堵墙,那么您只需通过 creator_id 从 feed 表中选择,对于关注者活动的活动 feed,只需选择 creator_id 在用户的关注者中的 feed。

虽然您最终会得到更多表,但要管理的总字段和要编写的代码更少。这一切都是基于亚里士多德的按属种对事物进行分类的理论,即事物的共同点(属)和它们的具体差异(种)。

于 2014-11-08T00:22:38.287 回答
0

如果您正在寻找为您处理此问题的服务,Collabinate ( http://www.collabinate.com ) 可能就是您要找的。它提供了一个 API 来为每个实体创建活动流,让用户关注实体,然后为用户检索实时提要。它可以根据您正在查看的大小进行缩放。完全披露:我是 Collabinate 的创建者。

于 2013-06-19T02:17:10.410 回答