当前位置:网站首页>B站用户视频观看记录的存储方案
B站用户视频观看记录的存储方案
2022-04-23 06:03:00 【若小鱼】
中午上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站或者其他视频网站(比如腾优爱)是采用的什么技术方案,我会再继续查找和思考。
版权声明
本文为[若小鱼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44162809/article/details/120434449
边栏推荐
- Prometheus和Thanos Receiver的“写多租户”实现
- Chaos vous emmène au projet chaos.
- Dolphinscheduler源码包src.tar.gz解压问题
- Will restarting the Oracle listener break the existing connection
- Problems related to Prometheus cortex using block storage
- Redis FAQ
- oracle库恢复数据
- When switch case, concatenate the error case and if of the conventional judgment expression and use L
- Kubernetes coredns FAQ reference
- MySQL【ACID+隔离级别+ redo log + undo log】
猜你喜欢
基於ECS搭建雲上博客(雲小寶碼上送祝福,免費抽iphone13任務詳解)
Detailed explanation of RDMA programming
Introduction to DDoS attack / defense
Build a cloud blog based on ECS (send blessings on the cloud Xiaobao code and draw iphone13 for free)
冬季实战营 动手实战-MySQL数据库快速部署实践 领鼠标 云小宝
[OSS file upload quick start]
冬季实战营 动手实战-初识上云基础,动手实操ECS云服务器新手上路 领鼠标 云小宝 背包 无影
qs. In the stringify interface, the input parameter is converted into a & connected string (with the application / x-www-form-urlencoded request header)
OVS and OVS + dpdk architecture analysis
Thanos Compactor组件使用
随机推荐
How does VirtualBox modify the IP network segment assigned to the virtual machine in the "network address translation (NAT)" network mode
Prometheus Thanos快速指南
Prometheus cortex Architecture Overview (horizontally scalable, highly available, multi tenant, long-term storage)
volatile 关键字的三大特点【数据可见性、指令禁止重排性、不保证操作原子性】
qs.stringify 接口里把入参转为&连接的字符串(配合application/x-www-form-urlencoded请求头)
将数组中指定的对象排在数组的前边
TC ebpf practice
[MySQL basics] startup options, system variables and status variables
Thanos compact component test summary (processing historical data)
ORACLE表有逻辑坏块时EXPDP导出报错排查
PG SQL截取字符串到指定字符位置
select命令产生redo日志问题的分析
冬季实战营 动手实战-初识上云基础,动手实操ECS云服务器新手上路 领鼠标 云小宝 背包 无影
Chaos vous emmène au projet chaos.
Exception record-6
ORACLE环境遇到的ORA-600 [qkacon:FJswrwo]
阿里云日志服务sls的典型应用场景
关于我
timestamp隐式转换问题导致索引列未使用问题分析
Introduction to RDMA network