我无法找到有关mongodb用于收集或分片键的算法的文档。
任何人都可以帮助或发布参考?
如果您对一般工作中的索引更感兴趣,请查看关于内部的演示文稿: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)。这个也可以用作分片键并称为散列索引,在这种情况下,分片是基于散列的分片.check THIS和THIS
关于用于此的散列算法是:在此文件中使用的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源文件中的注释读出。
关于分片键的官方文档是
http://docs.mongodb.org/manual/core/sharded-clusters/
如果您的“算法”意味着群集,您可以通过以下方式获得帮助:
http://docs.mongodb.org/manual/core/sharded-cluster-operations/
您现在可以使用convertShardKeyToHashed将密钥从version 4.0转换为其哈希值
从这个参考资料中,浏览源代码并阅读其实现