日期:2014-05-16  浏览次数:20794 次

用户-朋友列表数据库设计与性能
现在很多网站都有用户朋友列表功能;对于用户数少的网站数据库设计如下是没有什么问题的
User: id,name,。。。。
Friend:id,usrid(外键)

但是如果网站的用户人数比较多,且在极限情况下我估计至少一个用户有100个朋友(应该还不止这么多,暂且以100个朋友来讨论),那么如果还是按照上面的数据库设计,如果有50万的注册用户,每个用户有100个朋友,那么:
User表就是50万条记录,Friend表就是50万*100=5000万;我觉得这还是比较保守的情况,暂且先以这个计算,
可想而知,如果用户注册数打到100万,每个用户200个朋友,那数据库就够大了;

问题:对于上面的情况,各位有什么好的想法吗?一般采用什么方案解决?
1、从数据库设计上考虑?
2、从数据库本身优化考虑?
3、从硬件考虑?
4、其它?
请大家指点如何来最好实现上面的问题,多谢大家!!


------解决方案--------------------


数据库设计上没什么问题,标准的设计。



== 思想重于技巧 ==
------解决方案--------------------


Friend:id,usrid(外键) == 20 byte

1,000,000 * 200 = 200 M 记录

200 M records * 20 Bytes = 4,000 M = 4G

好像现在的HW没什么问题



== 思想重于技巧 ==
------解决方案--------------------
User: 
id | name | friends
1 | faisun | 2,3,4,5,6

这样就行了