1

假设我们有一个高流量项目(一个地铁站点),它应该使用这个选项(不是实时)提供排序。视频数量约为 200K,有关视频的所有信息都存储在 MySQL 中。每日视频观看次数约为 1.5KK。作为工具,我们有硬盘驱动器(文本文件)MySQLRedis

Views
 top viewed
 top viewed last 24 hours
 top viewed last 7 days
 top viewed last 30 days
 top rated last 365 days

我应该如何存储这些信息?

第一个想法是记录对文本文件的所有访问(每小时单个文件,例如visit_20080101_00.log)。在每小时开始计算前一小时每个视频的观看次数,并将此信息插入 MySQL。然后重新计算总计(过去 24 小时)并更新表中的统计信息。在每一天的开始,我们必须做同样的事情,但要重新计算过去 7 天、过去 30 天、过去 365 天。这种方法对我来说似乎很糟糕,因为我们必须为每个视频存储过去 365 天的信息才能进行正确的计算。

有没有其他好的方法?也许,我们必须为此选择另一种乐器?

谢谢你。

4

1 回答 1

0

如果绝对精度不重要,您可以总结超过 2 个单位的信息。

您将存储过去 1-2 小时的单个视图、过去 1-2 天的每小时视图(每小时一个值)以及进一步的每日视图(每天一个值)。

“1-2”表示您存储直到有两个单元已满,然后汇总其中较早的一个。

于 2010-06-07T15:44:11.770 回答