首页 > 解决方案 > 为什么将数据从 API 保存到 CSV 比将数据上传到 MongoDB 数据库更快

问题描述

我的问题围绕着理解我用来从美国人口普查局 API 收集贸易数据的以下两个程序(特别是性能和代码逻辑)。我已经收集了数据,但我最终编写了两种不同的方法来请求和保存与我的问题相关的数据。

我最后的问题的总结在底部。

第一种方式:npm request 和 mongodb 保存数据

我使用 tiny-async-pool(设置要执行的某个函数的并发性)限制我的过程,不要尝试一次请求太多或接收超时或用查询使我的数据库过载。简单地说,我面临的瓶颈是数据库,因为 API 请求返回相当快(取决于主体大小 1-15 秒),但要保存每个数组项(返回数据是嵌套数组,有时从几百项到超过每个数组中最多有 10 个值的十万个项目)到它自己的 mongodb 文档的范围从 100 毫秒到 700 毫秒。为了节省潜在错误的时间并且不重做相同的查询,我还在进行查询之前检查了我的数据库以查看查询是否已经完成。

第二种方式:npm 请求并将数据保存到 csv

我对请求和并发使用了与第一种方法相同的方法,但是我将每个查询保存到自己的 csv 文件中。如果出现错误并且没有重做成功的查询,我还检查了文件是否已经存在,如果存在则跳过该查询。这种方法没有错误,我运行了它,几个小时后就可以保存所有数据。写入 csv 非常快,比使用 mongodb 快得多。

最后总结和问题

我的最终目标是以最简单的方式获取数据。我使用 javascript 是因为我在那里学习了 api 请求和异步操作,尽管我将使用 python 和 pandas 进行大部分数据分析。我第一次尝试数据库方法主要是因为我认为这是正确的方法,并且我想提高我的数据库 CRUD 技能。经过无数小时的重构代码和尝试新技术后,我仍然无法让它正常工作。我采用了 csv 方法,它 a)要编写的代码少得多,b)检查少,c)更快,d)更可靠。

我最后的问题是:

标签: mongodbperformanceapicsvdata-collection

解决方案


推荐阅读