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

发布于 2022-09-01 15:32:26 字数 1214 浏览 22 评论 0

【方法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...

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

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文