搭建mongod sharding之后,加入sharding之后,需要选择sharding-key。为了达到均匀分布地效果,sharding-key应该选择为"hashed",否则,sharding数据分布非常不平衡。测试如下。搭建上篇文章的环境,连上mongos集群.
1 .选择key为hash
<pre>
use be3
sh.enableSharding("be3")
sh.shardCollection("be3.log",{ "sid": "hashed"})
</pre>
然后插入数据
<pre>
for(var i=1; i<10000; i++){var s_value = (i % 10) + 1;
db.log.insert({uid:i,sid:s_value});}
</pre>
查看各个sharding,分别为2000,3000,4999
2. 选择key为普通
<pre>
use be3
sh.enableSharding("be4")
sh.shardCollection("be4.log",{ "sid": 1})
</pre>
然后插入数据
<pre>
for(var i=1; i<10000; i++){var s_value = (i % 10) + 1;
db.log.insert({uid:i,sid:s_value});}
</pre>
查看各个sharding,分别为0,2000,7999。
其实,普通索引在sharding只有2的时候,分布更为不均衡。插入1w个数据,只有sharding2才有数据,sharding1居然一条数据都没有