首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于散列分片键,Mongo均衡器如何工作

关于散列分片键,Mongo均衡器如何工作
EN

Stack Overflow用户
提问于 2020-01-12 00:08:25
回答 1查看 132关注 0票数 1

它是众所周知的在节点之间平衡数据的概念,并且在the manual中有清晰的描述。对于散列的分片键块,均衡器是如何工作的?如果根据分片键,某个分块中的文档属于该分片,那么该分块是否可以迁移?如果这不是真的,那么为什么文档在它们不属于的分片中?或者,只要分片数量不变,均衡器与哈希分片键无关?

EN

回答 1

Stack Overflow用户

发布于 2020-01-13 12:45:00

散列的分片键仍然像普通的基于范围的分片键一样工作。它们也可以像普通的分片密钥一样进行迁移、拆分等操作。

不同之处在于:散列分片键在最初分片集合时会有一些额外的过程。请参阅Hashed sharding上的文档页面

在对已填充的集合进行分片时:

分片操作创建初始分块,以覆盖整个分片键值范围。创建的区块数量取决于配置的区块大小。

对空集合进行分片时:

分片操作创建空分块以覆盖整个分片键值范围,并执行初始分块分布。默认情况下,该操作为每个分片创建2个块,并跨集群迁移。

简而言之,散列分片预先分割了整个散列关键字空间,然后平衡器像往常一样在集群中移动块。

除了初始分块之外,它们的功能就像一个普通的分片键。

请注意,如果您的分片键非常单调地增加,以防止“热分片”,并有助于将您的写入分散到整个集群中,则哈希分片键可以提供帮助。使用散列分片键并不能保证不会有巨型块,因为散列键的基数将反映实际键的基数。

例如:假设散列算法是MD5 (大小为128位)。潜在地,MD5空间非常大。但是,如果基础键(未散列的)值只能是AB,则使用MD5散列的这两个值将始终得到A -> bf072e9119077b4e76437a93986787efB -> 30cf3d7d133b08543cb6c8933c29dfd7,从而使得基数非常小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59696148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档