我们假设我们有高流量项目(管网站),应该使用此选项提供排序(NOT IN REAL TIME)。视频数量约为200K,关于视频的所有信息都存储在MySQL中。每日视频观看次数约为1.5KK。作为文书我们有硬盘驱动器(文本文件),MySQL,Redis。如何存储和收集数据,以挖掘过去24小时,过去7天,过去30天,过去365天最多查看的信息?
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天的信息才能进行正确的计算。
有没有其他好方法?可能,我们必须为此选择另一种工具?
谢谢。
我假设您使用的文本文件,以避免加载MYsql。 – rerun 2010-06-07 15:12:57
是的,确切地说。我可以使用INSERT或INSERT DELAYED,但它会导致MySQL高负载。 – Kirzilla 2010-06-07 15:30:50