让我们假设我们有高流量项目(管网站),应该使用这个选项提供排序(不是实时)。视频数量约为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天的信息才能进行正确的计算。
还有其他好方法吗?可能我们必须为此选择其他工具吗?
谢谢。
答案 0 :(得分:0)
如果绝对精度不重要,您可以总结超过2个单位的信息。
您可以存储最近1-2小时的个人观看次数,过去1-2天的每小时视图(每小时一个值)以及每日观看次数(每天一个值)。
“1-2”表示你存储直到你有两个单位满,然后总结它们中的早期。