我找不到有关 mongodb 用于收集或分片键的算法的文档。
任何人都可以提供帮助或发布参考吗?
如果您对一般索引的工作方式更感兴趣,请查看有关内部结构的演示文稿:http ://www.mongodb.com/presentations/storage-engine-internals或这个http://www.mongodb.com/presentations/ mongodbs-存储引擎-bit-bit
由于单个分片对集群的整个结构知之甚少,它在内部使用相同的索引算法,只是有一个元数据层知道与特定分片相关的数据部分。
有一些特殊情况,在本文档中进行了描述:http: //docs.mongodb.org/manual/core/indexes/ 所以在上面的演示文稿中没有以这种方式涵盖的是地理空间索引和特殊的散列索引(DOCS)。这个也可以用作分片键并称为散列索引,在这种情况下,分片是基于散列的分片。检查这个和这个
关于用于此的哈希算法是:此文件中使用的 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将键从4.0 版转换为其哈希值
从这个参考,浏览源代码并阅读它的实现