面试题答案
一键面试选择片键的方法及原因
- 用户ID作为片键
- 分布均匀性:如果用户ID是随机生成的,使用用户ID作为片键可以使数据在各个分片上分布相对均匀。因为随机的用户ID没有明显的聚集性,不同用户的订单会分散到不同的分片。
- 避免数据倾斜:可以防止因某个特定的用户订单量过大,导致某个分片负载过高。例如,如果按订单金额分片,高消费用户的订单可能集中在一个分片,造成数据倾斜;而随机的用户ID能避免这种情况。
- 订单时间和用户ID组合作为片键
- 分布均匀性:结合订单时间可以进一步细化数据分布。例如按时间范围(如按月),每个月内不同用户的订单通过用户ID再进一步分散。这样在时间维度和用户维度上都有较好的分布。
- 避免数据倾斜:对于季节性或周期性的订单数据,仅用用户ID分片可能导致某些时间段的数据集中在特定分片。组合订单时间后,不同时间段的数据能均匀分布到各个分片,降低数据倾斜的可能性。
避免选择订单金额作为片键,因为订单金额可能存在较大差异,高金额订单可能集中在少数几个值附近,容易造成数据倾斜,导致某些分片负载过重。