您好,匿名用户
随意问技术百科期待您的加入

应该如何设计一个SNS网站的timeline系统..

0 投票

...最近在纠结这个问题...
现在的想法是把所有人产生的status归到一个表中... 然后根据following进行提取..
但是不太明白应该怎么做分页之类的东西..
或者说我这个想法本身是错误的?

....好吧问题有点小白+伸手党嫌疑..

用户头像 提问 2012年 12月1日 @ Ryze 上等兵 (293 威望)
分享到:

1个回答

0 投票

说一种最简单的做法

1.内容作为key-value存储
为每一条statu生成一个唯一id作为key,将内容结合化编码后当纯字符串作为value,存在key-value存储中。具体key-value存储就多了。缓存层当然可以直接用memcached亦可。

2.关系处理(这里讲最常用的推模式)
通常status有两个大的组织形式:
A 某个人所有的status列表
B 你关注的人的所有status列表
如果采用推的模式,那么每个人只需要在数据库中维护上面两个列表,相当于有一倍的数据冗余,但是两个列表本身都是可以按uid分表的。第一个按作者的uid分表,第二个按查看消息的用户的uid分表。具体操作的时候,你可以选择双写数据库,也可以直接写其中一张表的,然后走异步队列去写另外一张表。

这个方案想起来比较简单,一般人都能理解。但是在大数据量下还是有很多问题(比如一个人有一百万粉丝,那么他发一条消息,你得发给100w个人,100w次的数据库操作)。

改进的方案当然还有很多。比如什么拉模式,按时间分表,按不同活跃程度的用户区分对待等等。

用户头像 回复 2012年 12月1日 @ Cancer 上等兵 (211 威望)
提一个问题:

相关问题

0 投票
1 回复 25 阅读
用户头像 提问 2012年 12月1日 @ 卫宫士郎 上等兵 (173 威望)
0 投票
1 回复 36 阅读
用户头像 提问 2012年 12月1日 @ Wukong 上等兵 (475 威望)
0 投票
1 回复 26 阅读
用户头像 提问 2012年 12月1日 @ Viktor 上等兵 (290 威望)
0 投票
1 回复 52 阅读
用户头像 提问 2012年 12月1日 @ Demeter 上等兵 (208 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...