繁体   English   中英

“每周十大”数据库设计问题[关闭]

[英]“Weekly Top 10” Database Design Issue [closed]

我正在一个视频网站上工作。 就流量而言,这非常繁重。 我正在尝试按观看视频的次数对视频进行排名。 也就是说,视频A的观看次数为5.2K,B的观看次数为5000,因此A的排名高于B。但是我想计算每个视频在一周(或一个月,如果需要)中获得的观看次数,然后按观看次数对其进行排名。

我首先创建了一个仅包含视图的表。 也就是说,每次观看视频时,都会将一行与时间戳和视频ID一起插入表格。 那是一个可怕的决定。 由于交通繁忙,桌子变得很大,影响了性能。 有没有更好的方法可以做到这一点?

我会在表格中存储特定视频相对于周数的观看总数。 只需根据需要创建/增加。

即具有字段video_id,week_number和total_views。

拥有良好的索引(例如,在week_number,total_views上),以便容易提取前十名。

还可以执行cron作业以删除旧数据(或将其存档)。 那应该使表的大小易于管理。

要pig带@Ed Heal的答案,总结绝对是您想要的。 但是,设计一个在一年中的一天或一周中增加的表会在间隔过渡时导致问题。 就像在间隔开始时一样,每个人都从0开始。如果碰巧在间隔开始时,情况看起来...很奇怪。

我发现保持这些统计数据最有效的方法是使用尾随期。 (即一周内,您统计了过去7天视频的观看次数。)这非常准确地显示了网站内容的趋势。 为此,您需要定期运行cron作业,该作业将在所需的跟踪期内计算每个视频的统计信息。 存储摘要,然后对它们进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM