Mongodb Mongo平衡器如何在哈希切分键方面工作
平衡节点之间的数据是众所周知的概念,在中有明确描述。对于散列切分密钥块,平衡器是如何工作的?如果根据shard键,来自该块的文档属于该块,您可以迁移该块吗?如果这不是真的,那么为什么文档会在不属于它们的碎片中?或者,只要碎片的数量不变,均衡器就与哈希碎片密钥无关?哈希碎片密钥的性能仍然与基于正常范围的碎片密钥类似。它们也可以像普通的切分键一样进行迁移、分割等 区别在于:哈希切分键在最初切分集合时有一些额外的过程。从文档页面的以下位置进行解释: 对填充的集合进行分片时: 分片操作创建初始块以覆盖整个分片键值范围。创建的块数取决于配置的块大小 切分空集合时: 分片操作创建空块以覆盖整个分片键值范围,并执行初始块分布。默认情况下,该操作为每个碎片创建2个块,并跨集群迁移 简而言之,散列切分预裂整个散列键空间,然后平衡器像往常一样在集群中移动块 除了最初的区块分割,它们的功能就像普通的切分键 请注意,如果您的shard key非常单调地递增,以防止出现“热shard”,并有助于将写入分散到整个集群,则哈希shard key会有所帮助。使用散列切分键并不能保证不能拥有巨型块,因为散列键的基数将反映实际键的基数 例如:假设哈希算法是MD5(大小为128位)。MD5空间可能非常大。但是,如果基础键(未剪切)值只能是Mongodb Mongo平衡器如何在哈希切分键方面工作,mongodb,sharding,Mongodb,Sharding,平衡节点之间的数据是众所周知的概念,在中有明确描述。对于散列切分密钥块,平衡器是如何工作的?如果根据shard键,来自该块的文档属于该块,您可以迁移该块吗?如果这不是真的,那么为什么文档会在不属于它们的碎片中?或者,只要碎片的数量不变,均衡器就与哈希碎片密钥无关?哈希碎片密钥的性能仍然与基于正常范围的碎片密钥类似。它们也可以像普通的切分键一样进行迁移、分割等 区别在于:哈希切分键在最初切分集合时有一些额外的过程。从文档页面的以下位置进行解释: 对填充的集合进行分片时: 分片操作创建初始块以覆盖整
A
或B
,则使用MD5散列的这两个值将始终导致A->bf072e9119077b4e76437a93986787ef
和B->30cf3d7d13b08543cb6c8933c29dfd7
,使得基数非常小