用户中心,关注用户动态的功能,数据库结构是如何设计的?

【方法1】
按照常规的设计涉及到 几个表

[user] 用户信息表
id (int)
name

[user_msg] 用户发表动态的表
uid (int)
date
content

[user_care] 用户关注表
userid (int)
useridb (int)

如果我关注了1000个用户
那么用户中心首页把这1000个用户的动态,按照时间顺序展现出来前100 条,可以分页

那么sql 就是

select top 100 * from [user_msg] where uid in(select useridb from [user_care] where userid=我的用户id) order by date desc;

这样用 in 性能是不是非常糟糕??

有没有更好的办法?如何设计呢?

我也在其他地方提问
得到结果

【方法2】

目前我想的是这样,楼上有也这样说
但是数据量很大,单用户动态多的话,粉丝多的话,用户总数多的话,每天的推送量估计要排队好久
网站整体性能估计还是不行,只能堆服务器

1、当一个用户产生一条内容的时候,存储在数据库一份内容,同时发送到另一台服务器专门处理动态
2、另一台服务器接收到一条动态,根据这条动态的用户信息,找出该用户的粉丝列表

3、
用户id 1-10000 的用户订阅动态 放一台服务器
用户id 10001-20000 的用户订阅动态 放一台服务器
用户id 20001-30000 的用户订阅动态 放一台服务器
用户id 30001-40000 的用户订阅动态 放一台服务器
.................

这样就可以动态的扩展服务器

根据粉丝列表的id ,分别把这条动态发送给不同的服务器去处理存储

4、某用户中心的用户看动态的时候,实际上访问额不同的服务器

【方法3】
http://www.cnblogs.com/sunli/archive/2010/08/24/twitter_feeds_push_pul...

来问问有没有更好的办法,也想知道新浪微博 推特这些网站是怎么实现的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值