gpt4 book ai didi

mysql - 将观看次数存储到数据库中

转载 作者:行者123 更新时间:2023-11-29 01:21:12 24 4
gpt4 key购买 nike

我想在数据库(MySQL)中存储视频观看次数

我想存储每个访问者的 IP 地址(和一些其他信息)

所以我用 (VidoId,Ip,Date,UserAgent) 创建了一个表

现在我的问题是每次我想显示观看次数时我都必须执行此查询:

SELECT Count(*) FROM Views WHERE VideoId = xxx

我知道我可以将它存储到我的视频表的一个列中,并在每次插入时更新它。但这会产生碎片并始终如一地破坏数据,也无法使用 EER 对其进行建模。我也知道我可以缓存它。

我只想知道有没有什么方法可以既高效又可建模?

谢谢。

最佳答案

处理此问题的典型方法是创建一个单独的表来聚合实体的数据。在您的情况下,它将是一个包含以下列的 video_aggregate 表:

VideoId(主键)、NumberOfViews

这里有一些我认为比添加另一个表的努力更重要的优势:

  1. 读取速度非常快,如果需要将其与视频数据结合,只需一个简单的连接

  2. 每次有人观看视频时都不会锁定/阻止您的视频表。事实上,对 View 和 video_aggregate 表的更新可以(而且可能应该)是异步的。它可以容忍一点延迟。

  3. 观看次数不是视频的属性——根本不描述该实体。它描述了用户事件。这可能看起来很迂腐,但对于专家建模来说是必不可少的,并且当您在关系数据库模型中采取这种谨慎态度时,它会随着时间的推移发挥很好的作用。

附注将您的表格命名为比“Views”更具体的名称,例如“VideoViews”。

p.p.s.我可能会补充说,这个解决方案本质上是从多维建模中添加一个简单的“事实表”。当您到达数据仓库时,它会去那里。

关于mysql - 将观看次数存储到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com