当前位置: 首页 > 面试题库 >

“查看最多”特征数据库的实现

姜卜霸
2023-03-14
问题内容

我想知道如何在数据库中最好地实现“ 观看次数最多 ”的功能(例如youtube)。

让我来解释一下“ 最多观看 ”功能更好一点: 基本上,我想列出从这天/周/月访问最多的网页/视频/等,见
http://www.youtube.com/charts/videos_views为一个例子。

因此,我想知道如何最好地实现此功能,因为我可以想到许多实现此功能的方法,但是所有方法都具有+和-的含义。

另外,我也很想听听不同程序员对其他程序员想法的评论。我也想就这个话题开始一段很好的对话。

附言 我正在专门研究如何计算时间,比如说本月访问最多的时间,而没有一个巨大的表可以将每个视图与日期时间一起保存。任何想法都欢迎。
点子 我使用Mysql和PHP,非常欢迎这两个提示。


问题答案:

具有以下表格:1.视图2. views_hourly_summary 3. views_daily_summary 4.
views_monthly_summary 5. views_alltime_summary

按以下间隔运行cron作业:

  1. 每小时运行一次,并从views表中预汇总该小时的视图,并将预汇总的结果保存在views_hourly_summary表中,并更新views_alltime_summary表

  2. 在每天结束时运行,并从小时表中预先汇总当天的视图,并将预先汇总的结果保存在views_daily_summary表中

  3. 在每个月的月末运行,并从小时表中预先汇总当天的视图,然后将预先汇总的结果保存在views_daily_summary表中

接下来,在获取结果时,您将必须进行一些数学运算,如下所示:

  1. 例如,您要获取最近4个小时的视图,则需要从小时表中获取3个整小时的数据,而其余数据则可以从视图表中获取,如下所示:

从views_hourly_summary中选择item_id,sum(views)作为视图,其中concat(left(now()-间隔3小时,14),‘00:00’)和concat(left(now(),14),‘00之间的小时数:
00’)按item_id分组

联盟

从(now()-间隔4小时)和concat(left(now()-间隔3小时,14),‘00:00’)或datetime>
concat(左(now(),14),‘00:00’)按item_id分组



 类似资料:
  • 我有一个设计问题,当使用类似的东西时: 我认为应该有一些更好的方法来实现这种参数化的特性。 我在std中没有找到好的示例(例如,在具有类似的关联类型的traits中没有实现)?

  • 数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库的名称都是有实际意义的,这样就可以清晰的看出每个数据库用来存放什么数据。在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。 在 MySQL 中,可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据

  • 我当前的Cucumber文件如下所示: 所以现在我想再添加几个场景,可能是在同一个文件中进行API测试。所以我想为此创建一个新特性,而不是使用Feature:Test Online application页面。这样我就不需要为API测试创建单独的特性文件。

  • 我对 Rust 和系统语言非常陌生。我目前正在与 Rust 一起探索这门语言。我有一个我自己无法解决的问题。我想我已经理解了问题所在。 我不想在vector中存储实现< code>trait BaseStuff的对象。在Rust对我来说不是一个简单的任务:-)。 这是我的示例代码,不会编译。 错误[E0277]:类型的值的大小在编译时无法知道- 错误:由于以前的错误而中止 有关此错误的详细信息,请

  • 问题内容: 我收到以下错误: 运行时错误:无效的内存地址或nil指针取消引用 可能是因为is ,但是为什么以及如何解决它,以便可以在init中设置myDB? 请注意,如果我只删除main中的所有内容而不使用全局变量,则它可以正常工作。 问题答案: 简短的变量声明 简短的变量声明使用以下语法: 它是带有初始化表达式但没有类型的常规变量声明的简写: 是局部函数变量。是一个简短的变量声明。 要更新程序包

  • 在实例详细信息页面中,点击数据库和表部分下的“查看全部”。“数据库和表”页面会以列表显示服务器中的数据库和表和它们的大小。该列表按大小排序。点击左侧窗格中的实例以跳转到其数据库和表页面。