面试题答案
一键面试选择片键的考虑
- 按用户ID作为片键
- 理由:
- 数据均衡分布:不同用户的订单数量相对较为分散,以用户ID作为片键能将订单数据均匀地分布在各个节点上,避免数据倾斜。因为不同用户的活跃度、购买频率等有差异,不会出现某个特定值集中大量数据的情况。
- 高效查询:在电商场景中,经常会有根据用户来查询其所有订单的需求。以用户ID作为片键,可以快速定位到该用户相关的所有订单数据,提高查询效率。
- 可能带来的影响:
- 正向影响:对于按用户维度的查询非常高效,同时数据分布均匀利于系统扩展性,在集群环境下能充分利用各节点资源。
- 负向影响:如果有按订单时间或订单金额范围等查询需求时,可能无法直接利用片键优势,查询效率可能会降低,因为数据分布是基于用户ID而非时间或金额。
- 理由:
- 按订单时间作为片键
- 理由:
- 数据均衡分布:如果业务量相对稳定,订单按时间均匀产生,以订单时间作为片键也能实现较好的数据均衡分布。例如按天、月等时间粒度分片,每个时间段的数据量相对平均。
- 高效查询:对于需要查询某段时间内订单的场景,按订单时间分片可以快速定位到相关数据,查询效率高。如统计每日、每月的订单数据等。
- 可能带来的影响:
- 正向影响:时间范围查询高效,并且能反映业务的时间序列特征,对于分析业务趋势等场景友好。
- 负向影响:如果业务有明显的淡旺季,可能会导致数据倾斜,旺季数据量过大集中在某些时间段分片上。而且对于按用户维度查询订单不太友好,可能需要扫描多个分片。
- 理由:
- 综合考虑复合片键
- 理由:可以结合用户ID和订单时间作为复合片键。例如先按用户ID进行一级分片,在每个用户分片内再按订单时间进行二级分片。这样既可以保证不同用户的数据均匀分布,又能在用户分片内对时间相关查询提供高效支持。
- 可能带来的影响:
- 正向影响:兼顾了用户维度和时间维度的查询效率,同时数据分布相对更均衡。
- 负向影响:数据存储和查询逻辑相对复杂,需要处理两级分片逻辑,增加了系统的维护成本。