這是關於一個社交網站。讓Facebook成爲我們的典範。改善Facebook風格牆壁頁面的數據庫性能
在mysql服務器中有一個表:'posts'保留所有帖子的前綴(不包括評論爲簡單起見)。其列是:
id,post,user_id,frnd_id_1,frnd_id_2。
id:主鍵,自動遞增。
職位:職位寫在牆上(無論是登錄用戶或任何他/她的朋友們的一個壁)
的user_id:的ID登錄的用戶(假設A)
friend_id_1:登錄用戶的朋友(假設B)。當A寫在B的牆上時使用這個字段。的朋友的朋友(假設C)的登錄用戶
如果存在被記錄在MySQL表acccordingly A和B之間的任何消息對應:
friend_id_2。
假設B在C的牆上寫東西,然後B的朋友會在他們的個人牆上看到它。假設B有100個朋友。我們可以用這種方式將它記錄在上述表格中:frnd_id_2將用於保存C的id的記錄;
如果frind_2有'0'記錄,則消息通信僅在user_id和frnd_id_1之間,否則將意味着frnd_id_1已寫在frnd_id_2的牆上,而frind_id_1是user_id的朋友。
除此之外,我想,一切都與FACEBOOK完全相似。
但是 -
假設B有100個朋友。在這種情況下,如果B在C的牆上寫道(假設所有隱私設置都爲朋友的朋友開放)。如果採取上述政策,表中會有101條記錄:
1)一條記錄只是表示B在C的牆上張貼了(frnd_id_2 = 0)(我們稱之爲主記錄)
2)另外100個記錄爲B.(frnd_id_2!= 0)的100個朋友
這是我在我腦中的方式。我可以通過插入'post'列(或保留'post'列空白並創建另一個'main_record_id')而不是完整的消息,而是將主記錄的標識插入到主表中。
但事情是:對於單個帖子,101分貝查詢(在這種情況下)需要執行。任何其他方式來提高數據庫性能?
我使用PHP作爲腳本語言。
爲什麼負號?任何解釋plz? – 2012-01-10 11:17:43
首先誤解了這個問題。不要擔心。 – duffymo 2012-01-10 11:23:04
不能刪除-ve等級? – 2012-01-10 11:29:47