相信做研发的同事们,一定听过分库分表,那么究竟什么业务场景下适合分库分表呢?
短视频领域,用户请求五条视频,一般都需要判断用户对这五个视频是否点过赞进行判断。
如果用户点赞记录达到百万级别,点赞速度就会比较慢,时长通常能达到10s左右,是用户无法容忍的。
那么如何解决这种问题呢?
一种解决思路是使用列式存储数据库,比如Hbase,ClickHouse ,但是这种技术复杂度较高,需要公司有足够的研发团队,去维护hbase和clickhouse ,对于一些中小型公司是不适用的。
第二种解决思路是使用redis,但是redis无法存放海量数据的点赞记录,除非你有足够多的内存服务器。
第三种解决思路就是使用分库分表。
分库分表设计思路:
点赞相关记录专门使用一个数据库,每个用户开一张记录表,这样每次查询的时候只查询当前用户的记录表即可,不需要查询所有用户的点赞记录,从而达到点赞速度优化。
但是这样也会有一个问题,如果一个用户看过百万视频的时候速度也会变慢,因此设计表存放数据的时候建议按照视频的发布时间进行排序存放,方便后续进行再度拆分。
注意:数据库最好支持弹性扩容的分布式数据库最好,比如PolarDB MySQL.



