MongoDB查询所有分片集合而不使用shardkey

时间:2014-05-21 13:56:52

标签: mongodb sharding mongodb-query

我有几个shard(ed)集合。 该集合是用户请求。并且分片键是用户ID。

我有一个名为“执行时间”的字段 我希望在一段时间内查询所有请求(lte和gte)。

索引是使用分片键,但我的查询没有。 我想不要使用“in”运算符将所有shard Key放入查询中,因为我有1000个分片键(用户).. 还有更多要做的事情我需要在每个查询中获取所有用户ID - 这意味着每次查询2次而不是1次。

但我仍想使用索引.. 什么选项是添加userId> 0< maxUserId查询?

什么是正确的方法?

提前致谢

1 个答案:

答案 0 :(得分:1)

为了获得理想的性能,应该选择分片密钥,路由器(mongos)可以告诉哪个分片将拥有最常见查询的数据。只有当查找查询的条件也是分片键时,才可以这样做。

但在这种情况下,路由器不可能告诉哪个分片有查询数据。每个碎片都不可能有相关结果。在这种情况下,需要将查询转发到所有分片,这些分片将同时处理它。但是当你有一个合适的索引时,这将有助于他们这样做。