查看原文
其他

灵活分库分表 面试的时候这么说 加分!

王中阳 王中阳
2024-08-30

亮点

下面介绍的是循序渐进的思路,面试的时候建议说下技术演进方案的思考:下面提到这些都有考虑到,最终结合你们的场景和需求,选择了最后这种方式,表述清楚设计和思考的过程。

背景

粉丝提问:

对于分库分表这块,面试的时候可能要结合业务逻辑去举例子。

我在下面大致写了一下数据的特性,因为之前是写入serverless的数据库所以这块没有去做分库分表,所以想请教一下方案。

场景

比如有一个“设备执行记录表”,这个表数据的特点如下:

  1. 一天中存在早高峰和晚高峰(早上8点,晚上7点 —-对应起床和下班的时间)
  2. 整点和半点的时候存在极大值
  3. 数据是insert多,query少
  4. 假设一天产生100万条数据,早晚高峰分别产生20万,15万条数据

提问

如何设计分库分表?

目前所能想到的方法是按照时间区间去分,比如把一天拆分成24份。

我的思路是否可行?请问还有没有更好的思路?

解答

  1. 按照时间区间去分,比如把一天拆分成24份。”, 这个思路基本可行,我再给你一些其他进阶思路

  2. 也可以按照高峰时段来分库分表:比如将早高峰和晚高峰的数据分别存储在不同的数据库表中,非高峰时段的数据存储在不同的数据表中。这样就能避免低效的分库分表,比如按小时来分,后半夜基本数据很小,甚至没有,对吧。

  3. 还有另外一个思路:就是按数据量来分,定好规则,并且这个规则写在配置文件中,统一做管理,也方便灵活配置

  4. 例如将每天产生的数据量较大的时间段单独存储在一个数据库表中,而数据量较小的时间段可以合并存储在另一个数据库表中,以便更好地管理和查询数据。比如直接以20万条数据为分表依据,达到就创建新表。而不是严格的以8点~9点一个表,晚上7点~8点一个表,其他时间一个表。这种更合理,且可控。

  5. 上面这些也是循序渐进的思路,面试的时候也可以说下技术方案的思考:这些都有考虑到,最终结合你们的场景和需求,选择了最后这种方式,表述清楚设计和思考的过程。

早日上岸!

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。

点击下方文章,看看他们是怎么找到好工作的!

这些朋友赢麻了!

我们又出成绩啦!大厂Offer集锦!遥遥领先!

还有最新鲜的腾讯面经,不要错过哦!

腾讯的面试,强度拉满!

冲进腾讯了!

继续滑动看下一个
王中阳
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存