Node.js Nodejs是排队数据库插入的最佳工具?
我有一个应用程序,它的端点接收大的.csv文件,需要对其进行解析、验证,并且该文件中的每一行都将插入数据库。因为文件太大,无法立即响应用户,所以我只发送消息,告诉用户“队列中的文件正在处理”。在我的例子中,在后台在数据库(postgresql)中插入10到100k行,并在成功与否的情况下获得一些报告的最佳工具是什么?上传此类文件的整个生命周期是什么样的?独立于您将专门用于此工作的工具,我建议您使用以下生命周期Node.js Nodejs是排队数据库插入的最佳工具?,node.js,postgresql,Node.js,Postgresql,我有一个应用程序,它的端点接收大的.csv文件,需要对其进行解析、验证,并且该文件中的每一行都将插入数据库。因为文件太大,无法立即响应用户,所以我只发送消息,告诉用户“队列中的文件正在处理”。在我的例子中,在后台在数据库(postgresql)中插入10到100k行,并在成功与否的情况下获得一些报告的最佳工具是什么?上传此类文件的整个生命周期是什么样的?独立于您将专门用于此工作的工具,我建议您使用以下生命周期 用户将文件上传到服务器,一旦文件被存储,您就可以安全地结束请求,同时告诉用户文件已成功
- 队列不必等待所有其他队列完成其工作。每个队列只负责其工作线的一部分
- 例如,当队列A验证完一个文件后,它可以立即启动下一个文件。当队列B读取完一个文件后,它可以立即开始读取下一个文件,不管队列C是否已将所有行写入数据库
- 您可以决定(每个队列)一次处理多少个作业。逐个文件或同时多个文件(多线程、异步操作)
- 将其拆分为多个“工作站”,您可以更深入地了解正在发生的事情以及发生的位置
- 通过websocket添加实时更新,比如此时文件发生的情况(“验证文件…”、“读取文件…”、“保存到数据库…”、“45/13320行完成…”)等等
- 让服务器保存有关成功任务数、失败任务数、处理时间和统计信息的报告。并通过另一个端点为每个作业提供这些报告
不需要太多细节,我希望这能给你一个好的起点!Stackoverflow不应用于询问建议。请让我们知道您面临的确切技术问题,社区将非常乐意帮助您。例如,您可以从
better queue
获得基本的队列功能。非常容易安装。对于更高级的用法,我建议RabbitMQ@PascalLamers在这种情况下,生命周期是什么?我只是将flle缓冲区写入数据库,并将任务排队,然后将状态更改为processing(例如),并开始从数据库读取数据,同时将其写入另一个表?
- Queue A : File parsing, validating
- Queue B : File reading
- Queue C : Database storing