你应该在哪里运行关于MongoDB的密集报告

问题描述:

我们有一个使用MongoDB作为数据存储的生产系统,并且写了很多它在其中完成的操作。你应该在哪里运行关于MongoDB的密集报告

我想运行一些报告,看看发生了什么,如果这是一个MSSQL数据库我会有一个复制的服务器设置,所以我没有造成任何可能影响实时系统的锁。

在MongoDB中这是必需的吗?

我正在考虑添加一个可以用来运行查询的隐藏服务器,但我没有详细调查过。

很明显,您为报表运行的任何查询都会将负载添加到服务器。根据报告运行的查询类型的不同,这会影响到这种影响的程度。绝对有可能设立一个专门的辅助专门用于报告的唯一目的。然后,您可以直接连接到该辅助服务器并执行slaveOk查询来运行您的报告。此页面提供有关如何设置隐藏副本集成员的信息:http://www.mongodb.org/display/DOCS/Replica+Set+Configuration#ReplicaSetConfiguration-Memberoptions

+0

对于隐藏的成员。你知道它为什么说“使用这个选项很少见”。报告非常普遍,如果这是一种建议的方式,那为什么很少? – Jiminy

+0

大多数人只是把这种东西从普通的中学中挑出来,使得中学隐藏更为罕见,尽管仍有相当数量的人这样做。这实际上取决于您报告运行的操作的费用是多少,以及您的辅助服务器负载多少。如果您没有进行二次读取,或者如果您确实需要在辅助阅读器上加载,或者如果用于报告的查询是轻量级的,那么您不需要隐藏的辅助阅读报告,并且可以重复使用标准辅助阅读器。 – stbrody