这是关于一个社交网站。让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