如何处理从数据库(postgres)到NodeJS中的文件的大量数据(>1000万)



我必须从表中查询超过1000万条记录(在这里使用多个连接- typeform),然后将其发送到另一个微服务,该微服务将在格式化后将所有这些数据放入CSV文件中。

最初,当我们开发API来处理这个问题时,我们只是查询表并通过API将所有数据发送到另一个微服务。可以处理10万条记录,但对于我们最近不断获得的海量数据超时了。我该如何处理!!

微服务和API是用NodeJS编写的,DB是PSQL。

我们正在考虑将所有这些流式传输到块中并构建文件。有没有其他更好的方法?基本上,我们希望通过查询这些庞大的数据并将其放入文件来提高性能。将感谢任何输入!

你可以创建一个非常简单的应用程序,以流方式从postgresql读取数据,然后创建可以并行处理的批量行。

您可以将每个批处理上传到S3并在SQS队列上发送消息,而不是将每个批处理直接发送到其他微服务(通过HTTP)。

这样就可以解耦组件并使整个系统可伸缩。本文将介绍这是如何工作的。

微服务将首先读取SQS消息,其中包含存储在S3中的文件的路径,然后从S3下载文件并将其转换为CSV格式。这个工作负载也可以很容易地并行化。

如果您希望输出为单个CSV文件,您可以在创建了批处理派生的单个CSV文件后异步合并它。

最新更新