MST

星途 面试题库

面试题:MongoDB中片键选择的常见原则有哪些

在MongoDB分片集群环境下,为了保证数据均匀分布与高效查询,请阐述选择片键时常见的原则。
15.4万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  • 离散性原则:片键应具有良好的离散性,避免数据集中在少数几个片键值上。例如,使用时间戳作为片键时,如果数据按时间顺序插入,可能导致数据集中在最新的时间戳范围内,此时可以考虑对时间戳进行一些处理(如取模等方式)以增加离散性。
  • 基数适中原则:片键的基数既不能过大也不能过小。基数过大,会导致每个分片上的键值过于分散,增加数据迁移成本;基数过小,会造成数据分布不均匀。比如用户ID,如果用户数量庞大,直接使用用户ID作为片键基数可能过大,可以考虑对用户ID进行某种聚合(如按地区等维度聚合)。
  • 查询相关性原则:片键应与常见查询条件相关。若经常按照某个字段进行查询,将该字段设为片键能提高查询效率。例如电商系统中,常按商品类别查询商品信息,商品类别字段就可考虑作为片键。
  • 避免高频率更新原则:尽量避免选择频繁更新的字段作为片键,因为片键更新会导致数据在分片中迁移,影响系统性能。如用户的登录次数这类频繁变化的字段就不适合作为片键。