欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

小弟我们讨论一下 每个QQ有很多不同好友,数据库怎么设计会更方便

程序员文章站 2022-06-04 14:50:19
...
我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?
我们讨论一下 每个QQ有很多不同好友,数据库如何设计会更方便?

应该超出我的能力了,想看看大家有什么 idea...
------解决方案--------------------
一个两字段的表
一万个QQ全部互为好友,则记录数也就一亿
而事实上连十分之一都不会到
------解决方案--------------------
id myid friendid

搞定。

这是最好的设置办法,对服务器要求最低。


------解决方案--------------------
两个表 用个qq表 一个关系表
------解决方案--------------------
1.QQ會員表
每個用戶一條記錄
id,nickanme, 等。

2.QQ好友關係表
id, myid, friendid

3.QQ黑名單表
id myid blackid

4.信息表,這裡建議使用分表
按用戶id來分表,每2000個用戶一個信息表,例如 id=5000的用戶 分表應該是 5000/2000 再取整,即2,所以表應該是message_0002
id fromid, toid,message, addtime.


------解决方案--------------------
一个表。
CREATE TABLE `qq_friends` (
`my_id` bigint(13) NOT NULL,
`friend_id` bigint(13) NOT NULL,
`is_black_id` tinyint(1) NOT NULL DEFAULT '0',
`add_date` TIMESTAMP(10) NOT NULL,
PRIMARY KEY (`my_id`,`friend_id`),
KEY `my_id` (`my_id`),
KEY `add_date` (`add_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

建议用InnoDB,行锁而不是表锁
放弃自增ID(你用它干什么?排列大小?)
PRIMARY KEY 设置本Q ID和朋友ID的组合
本Q ID和加入时间分别加上索引
is_black_id(是否黑名单,0,1来储存)
如1楼所说,由于是交叉记录,一万个QQ全部互为好友,则记录数也就一亿(实际肯定小于),但是数据库也会很惊人。所以要考虑分库或者数据库集群(每100万个号一个库,若干库一个服务器)

小弟我们讨论一下 每个QQ有很多不同好友,数据库怎么设计会更方便

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频