面试题答案
一键面试按范围分片
- 策略描述:按照数据的某个属性(如时间、ID 等)的范围进行划分,将数据分布到不同的分片。例如,按时间范围,将一年的数据按月份划分为 12 个分片,每个月的数据存储在一个分片中;或者按 ID 范围,ID 从 1 - 1000 的数据存于一个分片,1001 - 2000 的存于另一个分片。
- 适用场景:
- 时间序列数据:如日志数据、监控数据等,这类数据按时间顺序产生,按时间范围分片方便按时间维度进行查询和分析,例如查询某一天、某一周的日志。
- ID 有序增长数据:例如订单 ID 自增,如果按 ID 范围分片,新产生的订单总是追加到最后一个分片,便于顺序写入。同时,对于查询某个 ID 区间内的订单也比较高效。
按哈希分片
- 策略描述:通过对数据的某个属性(通常是主键)进行哈希运算,根据哈希值将数据分配到不同的分片。比如对用户 ID 进行哈希计算,然后根据哈希结果模上分片数量,决定该用户数据存储在哪个分片。
- 适用场景:
- 读写均衡场景:当系统对读写性能要求较高,且数据分布需要均匀时适用。因为哈希计算后的数据分布相对随机,能有效避免数据倾斜,每个分片的负载相对均衡,适用于电商系统中大量商品的存储和查询,不同用户对商品的访问请求能均匀分配到各个分片。
- 无明显范围特征数据:对于一些没有明显范围划分依据的数据,如用户的兴趣爱好标签数据,按哈希分片能较好地实现数据分布。
按地理位置分片
- 策略描述:根据数据所关联的地理位置信息进行分片,例如按照国家、省份、城市等地理区域来划分数据存储位置。比如将中国北方地区的用户数据存储在一个分片,南方地区的存储在另一个分片。
- 适用场景:
- 具有地域特性业务:如本地生活服务类应用,不同地区的商家和用户数据,按地理位置分片便于根据用户所在地区快速获取相关数据,提高服务响应速度,像外卖平台按城市分片存储商家和订单数据。
- 数据合规要求:某些地区对数据存储有法规要求,必须将本地数据存储在特定区域,按地理位置分片可满足这种合规性需求。
按业务维度分片
- 策略描述:依据业务逻辑将数据划分到不同的分片。例如在一个综合电商系统中,将商品数据、订单数据、用户数据分别存储在不同的分片,因为这些数据在业务操作和使用频率上有不同特点。
- 适用场景:
- 业务模块清晰且独立性强:大型综合系统中不同业务模块之间耦合度低,按业务维度分片有利于模块的独立维护、扩展和优化。比如电商系统中商品管理团队、订单处理团队、用户运营团队可分别针对自己负责的分片进行开发和维护。
- 业务操作特性不同:不同业务数据的读写模式、数据量增长速度不同。如商品数据读多写少,订单数据读写频繁且数据量增长快,将它们分开分片便于采用不同的存储和优化策略。