mongodb shard密钥哈希算法

时间:2013-03-09 21:00:19

标签: mongodb sharding

我无法找到有关mongodb用于收集或分片密钥的算法的文档。

任何人都可以帮忙或发布参考资料吗?

3 个答案:

答案 0 :(得分:3)

如果您对一般工作中的索引更感兴趣,请查看此内容的演示文稿:http://www.mongodb.com/presentations/storage-engine-internals或此http://www.mongodb.com/presentations/mongodbs-storage-engine-bit-bit

由于单个分片对集群的整个结构知之甚少,因此内部使用相同的索引算法,只有一个元数据层知道与特定分片相关的数据分析。

有一些特殊情况,本文档中对此进行了描述:http://docs.mongodb.org/manual/core/indexes/ 因此,在上面的演示文稿中未以这种方式涵盖的是地理空间索引和特殊的索引(DOCS)。这个也可以用作分片键并调用散列索引,在这种情况下,分片是基于散列的分片。检查THISTHIS

关于用于此的散列算法是:在此文件中使用的md5: https://github.com/mongodb/mongo/blob/master/src/mongo/db/hasher.cpp

在这里实施: https://github.com/mongodb/mongo/blob/master/src/mongo/util/md5.cpp

目前仅适用于单个字段作为分片键,至少可以从https://github.com/mongodb/mongo/blob/master/src/mongo/db/index/hash_access_method.cpp源文件中的注释读出。

答案 1 :(得分:0)

关于分片键的官方文档是

http://docs.mongodb.org/manual/core/sharded-clusters/

如果您的'算法'意味着群集,您可以通过以下方式获得帮助:

http://docs.mongodb.org/manual/core/sharded-cluster-operations/

答案 2 :(得分:0)

您现在可以使用convertShardKeyToHashed将密钥从version 4.0转换为其哈希值

从该参考文献中浏览源代码并阅读其实现