我有简单的mongodb安装与两个辅助和一个主节点。当我在5gb的数据上运行mapreduce查询时,它需要的时间与在一个节点上安装独立的mongodb相同。我正在使用命令行。我是否必须使用任何特定的命令来利用mapreduce的额外副本集?
提前谢谢你。
如果你可以使用聚合框架而不是mapreduce,你可以加快你的工作-聚合框架要快得多。
你不能真正使用副本集扩展你的操作,因为副本集是用于高可用性和故障转移(加上数据冗余),而不是用于扩展。您可以在辅助服务器上运行mapReduce或aggregation,只需连接到辅助服务器并指定rs.slaveOk(),然后运行mapReduce/aggregate -但是您不能不将结果输出到集合,因为您不能向辅助服务器写入数据,因此它必须内联返回结果。
这将从主服务器移走额外的负载,但它本身不会使主服务器更快。如果你想利用多个服务器,你需要对数据库进行分片——通过将数据分布在多个分片/主机上,你将自动导致mapReduce和/或聚合查询在多个服务器上运行——尽管管理结果会有一点损失(它们仍然必须合并),但最长的部分可能会抵消额外的开销。