从Mongodb辅助服务器读取数据/性能

从Mongodb辅助服务器读取数据/性能,mongodb,Mongodb,我正在使用Mongodb构建一个架构 我发现在辅助服务器上发送统计数据读取请求是可能的(也是最佳实践)。 结果将是更好的表现 由于我已经做了Mongodb认证(NodeJS和DBA),并且读到了这篇文章,我想知道我们可以预期的性能差距 事实上,我不太明白辅助服务器(通过oplog接收主服务器已经接收到的所有请求)如何更高效。 磁盘上的写入次数相同。因此,即使此服务器只能读取数据,它也会写入相同数量的数据 有人能解释Mongodb是如何实现(如果它真的做到了的话)在辅助服务器上提供更好的读取性能的

我正在使用Mongodb构建一个架构

我发现在辅助服务器上发送统计数据读取请求是可能的(也是最佳实践)。 结果将是更好的表现

由于我已经做了Mongodb认证(NodeJS和DBA),并且读到了这篇文章,我想知道我们可以预期的性能差距

事实上,我不太明白辅助服务器(通过oplog接收主服务器已经接收到的所有请求)如何更高效。 磁盘上的写入次数相同。因此,即使此服务器只能读取数据,它也会写入相同数量的数据

有人能解释Mongodb是如何实现(如果它真的做到了的话)在辅助服务器上提供更好的读取性能的吗


感谢您的帮助。

这并不会提高查询的性能,但如果您从次要位置读取,您的分析将对主要位置几乎没有影响,从而减少对应用程序的总体影响。这就是我所说的有效性。

Pierre,副本集的整个概念是关于故障切换的,而不是为了更好的性能而分散负载。虽然你可以根据你的常识阅读你的文章,但是你必须考虑服务器故障时会发生什么,当你没有单独的服务器的豪华,你的所有的写和读都转到同一个服务器——你会发现在那时你的主服务器是否被配置了?
您的假设是正确的,即辅助服务器与主服务器所做的工作量相同,而到辅助服务器进行读取的效率并不更高,但是如果您有多个辅助服务器,您可以将读取分散到它们之间,因此每个服务器响应的读取次数更少。但是,我的原始声明仍然有效——如果其中一台服务器出现故障,您的系统是否能够处理负载。

多亏了上的@wdberkeley响应,我在副本集中找到了上的另一个链接

对于大多数统计用例,我们不需要有最新的信息,我们可以想象服务器停止读取oplog

例如,我们可以在30小时内保存oplog,而复制副本的延迟时间为24小时,以便仅在夜间使用oplog


然后,在白天,它不会在磁盘上进行任何写操作,并且它应该允许更好的性能来进行更大的读取请求,以便进行统计。

这里介绍了一些用例

是的,如果写的明显等于或高于读的,可能对您没有好处

mongodb文档中介绍的一些用例。

在使用案例中,我们可以使用二级读物

  • 可接受陈旧数据的报告/分析
  • 与读取相比,写入明显较低(仍需小心 (过时数据的存储)
  • 为地理分布的应用程序提供本地读取


这可能会有帮助。

谢谢您的回答。我一直梦想在中学能有更好的表现,但是,如果我理解的很好,我必须考虑切分以获得更好的响应时间。复制只是针对故障转移策略进行的。考虑到我的请求将在多个二级上进行负载平衡,我认为只有使用分片才能实现。Mongodb将无法在数据责任相同的多个服务器上削减请求。还请注意,从辅助服务器读取的分析/统计用例通常建议与辅助服务器一起使用,因此分析框不能被选为主服务器,从而承担读取、写入和分析的责任。