MST

星途 面试题库

面试题:分布式系统中如何基于业务场景选择数据分片键

假设你正在开发一个电商订单系统,订单数据量巨大,需要进行数据分片存储。请阐述你会考虑哪些业务场景因素来选择合适的数据分片键,并举例说明几种可能的分片键及其适用场景。
21.5万 热度难度
后端开发分布式系统

知识考点

AI 面试

面试题答案

一键面试

考虑的业务场景因素

  1. 查询频率和模式:如果经常按照某个字段进行查询,如用户ID查询用户的所有订单,那么该字段适合作为分片键,能快速定位数据。
  2. 数据均匀性:确保数据在各个分片上分布均匀,避免数据倾斜。例如按订单金额分片,若金额分布不均可能导致部分分片数据量过大。
  3. 事务需求:若涉及同一用户的多个订单事务操作,以用户ID分片可保证同一事务内数据在同一分片,降低跨分片事务复杂度。
  4. 扩展性:选择的分片键应便于系统扩展,当数据量增长需要增加分片时,不需要大规模数据迁移。

可能的分片键及其适用场景

  1. 用户ID
    • 适用场景:适用于需要频繁查询某个用户所有订单的场景,如用户订单管理、用户消费统计等。同时,方便处理与用户相关的事务,如用户订单的批量操作。
  2. 订单时间
    • 适用场景:如果业务更关注按时间维度查询订单,如统计每日、每月、每年的订单数据,按订单时间分片可以方便实现时间范围查询,且数据按时间均匀分布在不同分片上。
  3. 商品类别
    • 适用场景:在需要按商品类别统计订单,分析不同类别商品销售情况时,商品类别作为分片键能快速定位相关订单数据,方便进行分类汇总分析。