为什么单调增加的分片键会导致插入路由到maxkey作为上限的块?

问题描述 投票:0回答:1

我在关于Shard Keys的MongoDB文档中读到了以下内容“

如果分片键值始终在增加,则所有新插入都将路由到以maxKey作为上限的块。如果分片键值始终在减小,则所有新插入都将路由到以minKey作为下限的块。

[https://docs.mongodb.com/manual/core/sharding-shard-key/#sharding-shard-key-creation][1]

我不明白为什么。假设分片键的范围为0到75,并分为3个块。第一个块从0到24,第二个从25到50,第三个从51到75.这里minKey为0,maxKey为75.如果连续插入操作以单调递增的方式发生,例如1,2, 3,4,5为什么这些寻址共享密钥值1,2,3,4,5(单调递增)的插入被路由到最后一个碎片,从51到75,最后一个碎片? (这是包含maxKey作为上限的块的分片)?

谢谢

mongodb sharding chunks
1个回答
1
投票

假设分片键的范围从0到75,正如您所说的3个块。第一块从0到24,第二块从25到50,第三块从51到75。

如果插入1,2,3,4,5,它们将全部转到第一块。不要持续一个。因为它们在0到24的范围内。

文档中谈到的是当你的密钥总是在增加时,例如:从0到无穷大。

在这种情况下,从0到无穷大可能有3个块。第一个块从0到24,第二个从25到50,第三个从51到75.但由于键的值总是增加到无穷大,所有值> 50将转到第三个块,<= 50值将转到第2个块。

在分片群集中,有一个Balancer将尝试平衡您的块,以便它们具有相同数量的数据。随着密钥总是在增加,平衡器可能难以决定如何分割块。因此,第一次将值为> 50的所有插入路由到maxKey作为上限即第三块的块。

© www.soinside.com 2019 - 2024. All rights reserved.