Chr*_*ini 5 database database-performance ruby-on-rails-3
我正在实施一个应用程序来跟踪帖子被查看的次数.但我想保持一种"聪明"的跟踪方式.这意味着,我不想仅仅因为用户刷新浏览器而增加视图计数器.
因此,如果IP和用户代理(浏览器)是唯一的,我决定只增加视图计数器.到目前为止哪个是有效的.
但后来我想.如果Youtube正在这样做,他们有几个视频有数千甚至数百万的视图.这意味着他们在数据库中的视图表将过多地填充IP和用户代理....
这让我假设他们的视频表具有视图的计数器缓存(即views_count).这意味着,当用户点击视频时,将存储IP和用户代理.此外,视频表中的计数器缓存列也会增加.
每次点击视频.Youtube需要查询视图表并计算条目数.这不会大大影响性能吗?
这是他们怎么做的?或者,还有更好的方法?
首先,afaik,youtube使用BigTable,所以不用担心查询计数,反正我们不知道数据库的确切结构。
假设您使用关系模型,创建一个列 view_count,但不要在每次刷新时更新它。记录访问并定期更新缓存。
此外,您还可以根据 IP、浏览器、日期和您使用的任何其他信息生成哈希值,以检测这是否是唯一视图,并且不存储整个数据。
另外,您可以使用会话/cookie 来记录正在查看的视图。由于它会过期,因此不会出现内存问题 - 我不相信有人会在一次会话中观看数千个视频
| 归档时间: | 
 | 
| 查看次数: | 1759 次 | 
| 最近记录: |