论坛db结构:postcount分开了吗?

时间:2011-01-10 17:32:00

标签: database-design

我正在为我的网站建立一个小论坛。论坛可能会被大量访问,我似乎无法对结构感到高枕无忧。我现在有像ForumThreadCount和ForumThreadPostCount这样的计数器的单独表。这会产生一些开销,因为我需要单独查询它们,并且它不像在默认论坛表中放置这些值那样可维护。

我真的想把它们放在默认的论坛表中,虽然这样更容易维护和查询但是我担心直接和(可能)每分钟更新论坛表并不是真正安全/最佳实践

你们有没有人通过类似场景,你对这两种方法的想法是什么?

感谢您的时间。

亲切的问候, 马克

1 个答案:

答案 0 :(得分:1)

让我们看一下您想要做的事情将会发生的基本操作。

任何新线程都涉及带有线程数据(用户,时间,主题等)的插入,并且初始帖子本身的计数器初始化为“1”(如果您只想计算回复,则为零)。对于这种操作,将计数器保存在同一个表中是最简单的方法。

但是当在帖子中发布新消息时,您有两个操作:编写消息数据(再次是用户,时间,主题等)以及更新计数器。这是两次写入,无论你如何切片,一次写回复,一次更新计数器。因此,从线程中拆分threadCounts会产生复杂性,而无需实际支付。因此,请将回复计数保留在线程表中。

对于整体线程数,一种解决方案是每天创建一个线程表。创建新线程时,请更新当天的计数器。每个月,或每两周,甚至每三天,汇总该期间的计数并将它们折叠成一行。通过这种方式,您可以从此表中执行SELECT SUM(threadCount),并且您只能在任何时间点击10-14行,这是鸡尾酒,服务器甚至不会注意到您正在执行此操作。