在实时生产服务器上执行聚合是否安全?

时间:2016-07-02 00:21:17

标签: mongodb performance aggregation-framework

我需要聚合分布在多个分片上的100M行集合中的数据。由于有很多文章展示了聚合框架如何以及为何比Map Reduce更好,我决定采用它。聚合本身非常简单,它查询索引键,并且只执行一次。该集合必须始终可供应用程序服务器使用,包括聚合作业的时间。

Mongo在工作期间仍然会有回应吗?当然这项工作会对可用性产生影响,但是多少呢?在实时生产环境中开始这样的工作是否安全?应用程序经常查询同一个集合?

其他信息:

该集合有大约100M行,每行都有一个索引字段groupId。要分析的项目仅来自groupId G,,此组中最多有10M项。在G组中,我需要按另一个索引字段进行分组,例如subGroupId,其中每个子组最多有90个项目。一个SQLish查询将是:

select subGoupId, concat(itemId) from myCollection where groupId="x" 
    group by subGroupId 
    order by subGroupId

(现有索引:{groupIdsubGroupId},{groupIditemId})

在地图缩减术语中,在地图舞台上,每个映射器都会发出{key:subGroupId,值:itemId}。 subGroupId分布均匀,因此不应该是瓶颈减压器。 reducers部分只是为每个itemId连续subGroupId个值。我希望map阶段只使用{groupIdgroupId}索引将subgroupId G中的项加载到内存中,因此在整个mapreduce中只会将10M项加载到内存中/聚合工作。

这些假设是否有意义?

0 个答案:

没有答案