面试题答案
一键面试业务场景
- 时间序列数据:如监控系统记录的服务器CPU使用率、网络流量等数据。这些数据按时间顺序产生,使用升序片键(如以时间戳作为片键),新数据会顺序写入到不同的数据块,减少数据写入时的竞争,提升写入性能。例如,一家大型电商平台实时监测各个服务器的负载情况,每秒记录一次数据,升序片键可保证数据高效写入。
- 日志数据:如网站的访问日志、应用程序的运行日志等。日志通常按时间顺序产生,以时间相关字段作为升序片键,能让日志数据顺序分布,便于快速追加写入,且在按时间范围查询日志时,可利用片键快速定位相关数据块,提升查询性能。比如,一个在线教育平台记录用户登录和学习操作日志,使用升序片键可提高日志管理效率。
工作原理
升序片键会根据片键值的升序将数据分散到不同的数据块(chunk)。在写入时,新数据由于片键值不断增大,会依次写入到不同的chunk,减少了同一chunk内的写入竞争。查询时,如果查询条件与片键相关(如范围查询),MongoDB可根据片键快速定位到包含所需数据的chunk,减少需要扫描的数据量,从而提升查询性能。