2015-09-09 34 views
0

我创建了一个测试MongoDB分片,其中包含1个配置服务器,1个路由器和2个分片。如何从不同的分片和相同的集合获得结果

我创建一个配置服务器 mongod --configsvr --dbpath /data/configdb --port 27019

我跑mongosmongos --configdb <CONFIG SERVER IP>:27019。我连接了碎片,数据库和集合。当我查询分片集合时,游标不会从两个分片中得到结果,它只会得到1个分片的结果。根据MongoDB Sharding Document,我可以将一个集合分发给不同的分片,但结果不能满足这些信息。

我在做什么错?从相同查询的不同分片获得结果的正确方法是什么?

+1

这完全是关于你选择分片键和你的目标是什么。如果你真的“想”分散所有分片的写入和读取,那么选择的分片键应该反映这一点。为了实现均匀分布,请考虑一个[散列分片键](http://docs.mongodb.org/master/tutorial/shard-collection-with-a-hashed-shard-key/)。 –

回答

1

正确的方法是确保您不必经常交叉分片。您选择了一个分片键,以便您的查询不会最终通过分片。例如用户数据库可以具有用户ID /名称作为分片键。大多数查询都在寻找单个用户,所以会从单个分片返回。

对于单独使用1个分片的结果无法满足的查询,Mongo会自动向所有分片请求数据。

相关问题