中间件速查手册
文档数据库分片

Sharding 是什么?

按分片键把数据拆到多个分片,实现水平扩容

类比:按省份把档案分到不同仓库,查哪个省去哪个仓

三个角色

mongos 负责路由(无状态,可多部署);Config Server 存元数据(副本集);Shard 存实际数据(每个分片本身是副本集)。

分片键怎么选

这是分片方案成败的关键,选错了后期几乎无法挽回。

  • 高基数:取值足够多,避免所有数据挤在一个分片
  • 写分布均匀:单调递增的 _id 会导致写热点,考虑哈希分片
  • 查询常用:查询带上分片键才能路由到单个分片,否则广播到所有分片
  • 不可变:分片键字段不能更新(5.0 起有限支持)

范围分片 vs 哈希分片

范围分片适合范围查询(按时间查日志),但容易热点;哈希分片写入均匀,但范围查询要扫所有分片。业务上常见做法是按 tenantId 哈希,再按时间做子分片。

它出现在这些中间件里

相关概念