类似微博的系统,如何获取关注人的帖子?怎么设计?

我们有个类似查看微博这样瀑布流的帖子列表,,现在要能看到关注人的帖子,我目前有帖子表:

帖子表:{
    "post_id":"11111",
    "user_id":22222,        //发帖人的用户id
    "content":"你好"        //帖子内容
}
用户关注表,
user_follow{
    "user_id":22222,            //关注人的用户id
    "followed_user_id":33333    //被关注人的用户id
}

如果用户22222要获得关注过的用户发的帖子,是不是得先搜索关注表,得到自己关注了哪些人,然后去查帖子表,用user_id字段的in查询,查到对应用户发的帖子,然后按时间排序,,如果一个人关注了好几千用户,这个查询将会非常耗时,请问,类似这种需求,应该如何设计表结构,类似问题,有没有比较好的第三方开源软件是可以解决的?
谢谢!!

阅读 5.4k
2 个回答

没具体实践过。以下仅是理论:

1. 关系反向处理。用户不需要关心po主的状态,po主状态发生更改主动推送给用户。  
   这样在一定程度上就把没有更新内容的po主过滤掉了。
2. 用户上次登录时间记录下来。po主状态更新就对比粉丝更新时间,  
   如果po主这次更新是在该粉丝上次登录之后的,就通知该用户;否则不通知。
3. 用户获取的时候直接从步骤`2` 的数据中获取有更新的po主,  
   如果需要显示更新次数,就统计更新次数;如果需要显示更新的内容,
   继续从 `2` 中获取有更新的po主+用户最后登录时间去select 具体更新的内容。

当然以上仅仅是我的一个理论想法,具体实践上可能还有这样那样的问题。欢迎各位大神讨论。 么么哒 ;-)

通过一个关注用户表与时间线实现。

当该用户发帖时将该帖子的索引插入到关注用户的时间线上即可。

每一个用户访问自己的时间线。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进