【发布时间】:2010-12-13 11:09:46
【问题描述】:
我正在努力为我的网站添加一些统计信息。例如:“这一天/周/年观看次数最多的话题”。
我需要一个表来保存与用户相关的每个视图(以避免同一个用户添加许多视图)和线程,并带有时间戳。
但那将是一张大桌子(按行排列)。这是要走的路吗?
【问题讨论】:
标签: database statistics
我正在努力为我的网站添加一些统计信息。例如:“这一天/周/年观看次数最多的话题”。
我需要一个表来保存与用户相关的每个视图(以避免同一个用户添加许多视图)和线程,并带有时间戳。
但那将是一张大桌子(按行排列)。这是要走的路吗?
【问题讨论】:
标签: database statistics
答案取决于许多因素,例如线程数、视图数、您拥有的硬件、典型负载、读/写比率、所需的精度等。
在不知道您的具体场景细节的情况下,对您的问题的合理回答是创建您所描述的表:
thread_views(
thread_id references thread(thread_id)
,user_id references user(user_id)
,timestamp
,primary key(thread_id, user_id)
)
上述方法为典型场景提供了灵活性和足够好的性能。
我最近回答了两个类似的问题,您可以查看一下以获得一些想法。
Count article comments 和 Count visitor hits per day
最后一点是,许多主要数据库都包含用于聚合数据的工具。这些工具可以让您拥有一个标准化的数据模型,同时还能通过预先计算的统计表获得大部分好处。
【讨论】: