B站用户视频观看记录的存储方案

中午上B站看视频的时候,突然好奇B站的视频观看记录是怎么存的。
首先,因为多端观看的视频记录都是同步的,即不管是在手机观看,还是网页观看,还是新设备观看,视频都是可以直接跳转到上次的观看位置的,所以这个记录应该不是存储在本地的。
其次,B站的用户截至2020年底,MAU(月活)达2.02亿,视频总量2020年看有人统计约为7千万条,假设按1亿条计,即使按人均每日观看100个视频,那10年到用户的话每个用户也有36.5万条记录。这样一个超大的稀疏矩阵该怎么存?传统数据库显然不合适。
我自己首先想到的应该是HBase,单实例支持十亿行百万列。因为视频内容是无限增长的,而用户是有限的,所以可以以用户id作为rowkey,视频内容id作为column来记录该用户每个视频的观看位置。
但是视频的数量现在就已经达到亿级别,而且还会继续增长,百万列明显不够。这可能就需要考虑多实例,即把视频内容id按一定的hash规则(或者直接按照顺序,方便扩展)分别存储在不同的实例里,比如1亿条条视频就每个实例存100万条,分100个实例,查询用户视频观看位置时,就根据视频id先到指定的实例去,然后再通过用户id主键+视频内容id列查询位置记录。
不过,想了想又让我感觉这是个比较笨拙的方案。
以上纯属脑子里突然冒出的一个问题,暂且记录一下,具体B站或者其他视频网站(比如腾优爱)是采用的什么技术方案,我会再继续查找和思考。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值