面试题答案
一键面试单调递增片键
- 对数据分布的影响:
- 数据会按照片键值的顺序依次分布在各个分片上。随着片键值单调递增,新的数据会不断添加到最后一个分片上。这可能导致数据写入热点,即最后一个分片承受过多的写操作,而其他分片利用率较低。例如,假设片键是时间戳字段,随着时间推移,新产生的数据都具有更大的时间戳值,这些数据都会被写入到最新的分片区域。
- 适用场景:
- 日志记录:如应用程序的日志数据,通常按时间顺序产生。使用单调递增的时间戳作为片键,可以让新的日志数据依次写入,并且便于按时间范围查询,例如快速查询最近一段时间内的日志。
- 订单流水:订单数据一般按订单生成时间顺序产生,使用单调递增的订单生成时间作为片键,适合按订单时间进行分析和查询,如统计某时间段内的订单量。
随机片键
- 对数据分布的影响:
- 数据会较为均匀地分布在各个分片上。因为片键值是随机的,每个分片接收新数据的概率相对均衡,避免了某个分片成为写入热点。例如,使用UUID(通用唯一识别码)作为片键,UUID的生成是随机的,所以数据会随机分布在不同分片上。
- 适用场景:
- 实时数据分析:在实时收集大量数据并进行分析的场景下,如物联网设备实时上传的数据。使用随机片键能确保数据均匀分布,避免单个分片过载,保证系统的高并发写入性能。
- 在线游戏数据:例如游戏中的玩家实时状态数据,每个玩家的状态更新都是随机的,使用随机片键可以使数据均匀分布在集群中,支持大量玩家同时在线的高并发场景。