如何存储和收集数据以挖掘过去24小时,过去7天,过去30天,过去365天中查看次数最多的信息?

时间:2010-06-07 15:00:01

标签: algorithm data-structures high-load

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

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

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

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

还有其他好方法吗?可能我们必须为此选择其他工具吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

您可以存储最近1-2小时的个人观看次数,过去1-2天的每小时视图(每小时一个值)以及每日观看次数(每天一个值)。

“1-2”表示你存储直到你有两个单位满,然后总结它们中的早期。