MongoDB 分片键选择策略
候选人小张在字节 P7 架构面中,面试官问:
"你们 MongoDB 用什么分片键?为什么?"
小张说:"用 order_id 分片。"
面试官追问:"那如果查某个用户的订单呢?"
小张说:"那就需要扫描所有分片了..."
面试官继续追问:"那你觉得应该用什么分片键?"
小张答不上来了。
【面试官心理】 这道题我用来测试候选人对 MongoDB 分片键选择的理解深度。能说出分片键重要性的占 50%,能讲清选择原则的占 20%,能说清常见场景分片键的占 10%。
一、分片键的重要性 🔴
1.1 分片键决定了数据分布
1.2 分片键不可更改
1.3 分片键的影响
二、分片键选择原则 🔴
2.1 基础原则
2.2 常见分片键策略
三、常见场景分片键 🟡
3.1 用户数据
3.2 订单数据
3.3 时序数据
四、分片键避坑 🟡
4.1 低基数分片键
4.2 递增分片键
4.3 随机分片键 vs 业务分片键
五、分片键变更 🟡
5.1 无法直接修改分片键
5.2 辅助分片键
5.3 MongoDB 5.0+ 变更流
💡
分片键选择是 MongoDB 架构设计中最关键的决定。选择前要充分分析查询模式和数据分布。一经选择,无法更改。
【面试官心理】 能说出"分片键不可更改"和"递增分片键造成写入热点"的候选人,基本都有实际踩坑经验。这是 P7 的水准。