我想知道象qq这样的软件所用的数据库是怎么设计用户的个人信息的?

来源:百度知道 编辑:UC知道 时间:2024/05/24 06:07:47
比如一个用户和他加过的好友信息是怎么存放在表里的?大该有哪些表?
如果是将好友的信息存放在一张表里
如nomanland 说的
关系表
关系表ID(主键),QQ号码(外键,用户表的QQ号码),关系QQ号码,关系组(对应好友,陌生人,黑名单等分组)
那么这张表大概会有几十亿数据 但一个用户登陆时 显示他加过的好友 就跑一次这几十亿的表 那不是慢得要死?那么他是怎么提高查询速度的呢 单靠索引吗
--
回答者:ssweiwei
说给每个用户创建一张表存好友id,那么qq有上亿的用户 他的库也存上亿的表吗 这样维护起来不是很麻烦 那天要给每个用户一个新属性 就要往上亿张表加一个字段
--
回答者:旋律在漂泊
三级数据库表.??
能说清楚点吗 介绍一下吧
--
希望大家踊跃回答 我继续加积分

腾讯的可不是一个数据库服务器
是一个数据库服务器集群
几十上百台服务器在工作
从软件上是没有办法突破速度这个瓶颈的
必须从硬件上下手才可以解决

大型的数据库,都支持分区表的,分区表的应用,尤其是在多cpu的服务器上的速度提升是非常明显的,而且 还有多表存储,甚至多机存储等办法,

QQ号码,好友号码(不一定是数值型),其他信息.
就这一个表.
QQ号即是主键(没听说过QQ号有重复的),如果分组,好友号码有分组的备注

用户表
用户表ID(主键),QQ号码,其他详细信息

关系表
关系表ID(主键),QQ号码(外键,用户表的QQ号码),关系QQ号码,关系组(对应好友,陌生人,黑名单等分组)

用户数据库是有自动编号的,也有你的号码和相关资料

比如
ID QQ号 姓名 其它资料 好友

这样在你的好友里面是其它的ID号,你查看的时候,这个ID相对应的QQ号和姓名资料就会显示出来

三级数据库表.