Node.js 如何将实时数据存储到数据库?
我有一个服务器,它正在观察物联网数据,我需要将其存储到数据库中,以便我可以构建某种度量 正在通过websocket连接接收数据,一段数据可能如下所示:Node.js 如何将实时数据存储到数据库?,node.js,postgresql,websocket,buffer,Node.js,Postgresql,Websocket,Buffer,我有一个服务器,它正在观察物联网数据,我需要将其存储到数据库中,以便我可以构建某种度量 正在通过websocket连接接收数据,一段数据可能如下所示: { id: 23, type: "light" status: "on" timestamp: 1607975079 } 可以观察到大量数据,我认为实时将每个事件添加到数据库中可能不是一个好主意,因为它可能会导致瓶颈 在这种情况下,是否有策略可以使用某种内存缓冲区,然后每隔30分钟将一块数
{
id: 23,
type: "light"
status: "on"
timestamp: 1607975079
}
可以观察到大量数据,我认为实时将每个事件添加到数据库中可能不是一个好主意,因为它可能会导致瓶颈
在这种情况下,是否有策略可以使用某种内存缓冲区,然后每隔30分钟将一块数据保存到数据库中
这是一种明智的做法,还是应该以其他方式处理
如有任何建议,将不胜感激
谢谢您可以创建缓冲区并在那里添加事件。当累积一定数量的事件时,将缓冲区上载到数据库 伪代码:
const buffer = [];
event.on('event', data => {
buffer.push(event);
if (buffer.length === 10) {
DataBase
.bulkCreate(buffer);
buffer = [];
}
});
或者您可以使用:
您可以创建一个缓冲区并在那里添加事件。当累积一定数量的事件时,将缓冲区上载到数据库 伪代码:
const buffer = [];
event.on('event', data => {
buffer.push(event);
if (buffer.length === 10) {
DataBase
.bulkCreate(buffer);
buffer = [];
}
});
或者您可以使用:
您可以使用Redis作为缓冲区,并创建一个单独的工作程序,将数据从缓冲区批量保存到数据库中 Docker投票应用程序中显示了该想法:
您可以在node.js中构建所有组件,考虑到上面示例中的语言混合是为了显示Dockers的功能。您可以使用Redis作为缓冲区,并创建一个单独的工作程序,将数据从缓冲区批量保存到数据库中 Docker投票应用程序中显示了该想法: 您可以在node.js中构建所有组件,考虑到上面示例中的语言混合是为了展示Dockers的功能