如何在不耗尽堆内存的情况下处理大量数据

问题描述 投票:0回答:0

我有一个 nodejs 服务器接收 websockets 中的数据块并将它们保存到 mongoDb。

我应该每天得到大约 1 到 4 百万个块,每个块大约 350 字节(在数据库中测量)。

大块

{
 code: String,
 type: String,
 time: Date,
 pos: {
  x:Number, y:Number
 }
}

我想完成的事

我想每晚将数据处理成下面的结构,稍后在仪表板中呈现。

数据加入数据数组前需要过滤

{
 createdAt: Date,
 type: String,
 code: String,
 data:[ {x,y,time}, {x,y,time}, ... ]
}

问题是在尝试处理数据时,我的堆内存不足。

我怎样才能做到这一点?

使用 mongo aggregate 做所有的过程应该有所作为吗?

也许我可以在向服务器查询数据之前知道数据有多大,如果数据太大,我可能会将过程分成两部分并创建单独的块。

这不是我最喜欢的选项,因为数据是根据其余数据过滤的(我正在检查是否没有重复位置和相邻位置)。

感谢任何想法或意见。

谢谢

node.js mongodb out-of-memory heap-memory
© www.soinside.com 2019 - 2024. All rights reserved.