想起之前在面试时遇到的一个关于数据库设计的问题。大意是对于亿级用户和商家的订单查询要怎么做。
初步方案是按照user_id的某几位做水平分库分表(其实一直也没有想出最终方案)。说“初步”是因为短板还是很明显的:
- 可能存在热点用户,导致分库分表不均匀。
- 侧重于用户查询,针对商家的查询基本没有优化。
当然面试官肯定也问到了这2点,其中热点用户的问题尚可解,起码可以按某些规则再猜。但是商家的问题确实很棘手。
直到今天在听分享的时候,终于得到了一个解法。同步binlog并按照商家id重新做分库分表。感觉有点“耍赖”,但不失为一个比较好的套路。
反思自己,有时候过于强迫症,总期望用一套设计来解决所有问题。其实设计上没有绝对的好坏之分,不能一味追求所谓优雅的解决方案,未来需要不断的历练自己,更多的跳出来,站在更高的角度看问题。
网友评论