目前我们的任务是从外部服务器获取100万条记录,处理它并将其保存在数据库中。我们使用node.js
来获取记录,使用mongodb
作为数据库。
我们决定将流程拆分为2个任务,获取记录并进行处理。现在我们能够获取所有记录并将其转储到mongo中,但是当我们尝试处理它时(通过处理我的意思是更改一些属性值,进行一些简单的计算并更新属性),我们看到mongodb中的响应非常慢更新200,000
条记录。
为了处理数据,我们采取批量处理1000条记录,更新记录(单独),然后进行下一批处理。如何才能使性能更好?
答案 0 :(得分:0)
如果你想在长数据后保持mongoDB的响应速度,那么在你的数据库和集合中使用mongo分片和复制
<强> 复制: - 强> MongoDB中的副本集是一组维护相同数据集的mongod进程。副本集提供冗余和高可用性,是所有生产部署的基础。本节介绍MongoDB中的复制以及副本集的组件和体系结构。该部分还提供了与副本集相关的常见任务的教程。
<强> 分片: - 强> 分片是在多台机器上存储数据记录的过程,也是MongoDB满足数据增长需求的方法。随着数据大小的增加,单个机器可能不足以存储数据,也不足以提供可接受的读写吞吐量。分片解决了水平缩放的问题。通过分片,您可以添加更多机器来支持数据增长以及读写操作的需求。