2011-05-17 22 views
1

我目前正在创建一个带有好的和坏的选项的投票系统来发表评论。基本上,这个想法就像Facebook一样,但对评论有一个不好的选择(或更多)。这里是表结构使用Mysql + PHP实现的投票系统(带帐户)的性能

id | comment_id | voter_id | voter_option 

因此,一旦用户投票吧,记录将在上述格式的mysql数据库存储,为什么我这样做是因为我不希望用户重新投票,并希望记录他们喜欢/不喜欢的内容。

我的问题是,我认为,如果在我的网站上有10,000条评论,并且每条评论获得了1,000张选票,那么我的数据库变得非常大,有没有什么好的方法可以防止数据库变得太大?或者我需要为我的案例中的每条评论创建一张表格,在此先感谢。

+1

如果您使用MySql或您使用的任何数据库语言进行标记,可能会得到更好的响应。 – 2011-05-18 12:12:31

+0

感谢您的提醒:) – ykc 2011-05-18 13:35:24

+0

为什么不使用像mongodb这样的nosql解决方案?似乎是这种情况的理想选择 – JohnP 2011-05-18 13:53:27

回答

2

你的评论表是什么样的?如果有很多帖子,数据库将只会变大,如果你正确查询并且你的表是一个合理的大小,那么表中的10,000个条目是mysql的childsplay。

在性能方面,它可能是一个想法,如果有人喜欢/不喜欢评论,你做的所有的选票帐簿和值存储注释行,这样,当你查询出来的评论,你将有它的最后一个已知的喜欢/不喜欢的数量,并且每次查询评论时都不必这样做。

编辑:我应该添加,确保您的索引是ints(根据它们的列名判断),并且您使用外键来限制数据。使用外键,您可以保持表格清洁,例如,如果有人删除了评论,则可以根据该ID指示您的表删除级联,以便评论被删除,该评论的所有投票都将从其他评论中删除表。 http://en.wikipedia.org/wiki/Foreign_key

+0

感谢您的回复,您的计数方法非常有用,初步的,因为我不想自己处理评论,所以我可以使用disqus或Facebook的评论(抱歉没有提及),但因为他们都只有1选项(像),我需要可能超过2个选项,所以我会处理投票部分,我目前无法估计用户数量,也许它只是突然增长,或者没有人使用(谁知道:P)。我是否需要在早期阶段进行分区(我刚刚听到这可以提供帮助,但并不真正知道它是什么:P)?仅供参考,我正在使用MyISAM。 – ykc 2011-05-18 17:34:44