小弟我們討論一下 每個QQ有很多不同好友,資料庫怎麼設計會更方便

來源:互聯網
上載者:User
我們討論一下 每個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萬個號一個庫,若干庫一個伺服器)

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.