Database design 论坛数据库结构:后计数分离?

Database design 论坛数据库结构:后计数分离?,database-design,Database Design,我正在为我的网站建立一个小论坛。该论坛可能会被大量访问,我似乎无法对其结构感到安心。我现在有了单独的计数器表,如ForumThreadCount和ForumThreadPostCount。这会带来一点开销,因为我需要单独查询它们,而且它不像将这些值放在默认论坛表中那样易于维护 我真的很想把它们放在默认的论坛表中,虽然这更容易维护和查询,但我担心一分钟直接(可能)多次更新论坛表并不是真正安全/最佳的做法 你们中有人经历过类似的场景吗?你们对这两种方法有什么想法 谢谢你抽出时间 亲切问候,, 标记让

我正在为我的网站建立一个小论坛。该论坛可能会被大量访问,我似乎无法对其结构感到安心。我现在有了单独的计数器表,如ForumThreadCount和ForumThreadPostCount。这会带来一点开销,因为我需要单独查询它们,而且它不像将这些值放在默认论坛表中那样易于维护

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

你们中有人经历过类似的场景吗?你们对这两种方法有什么想法

谢谢你抽出时间

亲切问候,,
标记

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

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

但是当一条新消息在线程中发布时,您有两个操作:写入消息数据(同样是用户、时间、主题等)和更新计数器。这是两次写入,不管你如何分割它,一次写入回复,一次更新计数器。因此,将线程计数从线程中分离出来会带来复杂性,而不会带来真正的回报。因此,在threads表中保留回复计数


对于总线程数,一种解决方案是每天制作一个线程表。创建新线程时,更新当天的计数器。每个月,或每两周,甚至每三天,将该期间的计数汇总并折叠成一行。通过这种方式,您可以在此表中进行选择和(threadCount),并且您在任何时候只点击10-14行,这是chickenfeed,服务器甚至不会注意到您正在这样做。

您能否澄清ForumThreadCount中的内容。此外,您可能还想包括您正在使用的后端。使用视图进行此类统计如何?