跳到主要内容

简述什么是片键 ?

参考答案:

片键(Sharding Key)是MongoDB分片中的一个重要概念。在MongoDB中,分片是将数据拆分成多个块(chunk),并将这些块存储在不同的服务器上。为了确定数据应该存储在哪个分片上,需要一个规则来决定数据应该被拆分到哪个块上,这个规则就是片键。

片键是一个或多个字段的组合,用于在集合中定义数据的拆分规则。当数据插入到集合中时,MongoDB会根据片键的值将数据拆分到不同的块上。片键的选择对于分片的性能和扩展性有很大的影响。如果片键选择不当,可能会导致数据分配不均匀,从而影响性能和扩展性。因此,在选择片键时需要仔细考虑数据的分布和查询模式,以确保数据能够均匀地分配到各个分片上。

此外,MongoDB不是从单篇文档的级别绝对平均地散落在各个分片上,而是多篇文档形成一个块(chunk),优先放在某个分片上。当这个分片上的chunk与另一个分片的chunk差别比较大(>=3)时,会把本分片上的chunk移到另一个分片上。MongoDB以chunk为单位,维护分片之间的数据平衡。每个chunk的默认大小是64MB,但这个大小是可以修改的。

总的来说,片键在MongoDB分片中起着至关重要的作用,它决定了数据如何被拆分和存储在不同的分片上,从而影响整个系统的性能和扩展性。