在node.js中的JS上放置“很多”数据的地方,array / file /别的地方

这可能是一个“愚蠢”的问题,但是我第一次使用了大量的数据。 我想要做的是:查询世界银行API问题:在search/过滤时,API非常不灵活…我可以自己查询每个国家/地区的指标,但是我会产生很多电话。 所以我想立刻下载一个国家或指标的所有信息,然后在机器上进行分类。 我的问题:在哪里/如何存储数据? 我可以简单地把它放入一个arrays吗?我是否需要担心尺寸? 我应该写一个临时的json文件吗? 或者你有另一个想法?

谢谢你的时间!

例如:20个国家,15个指标

如果我要查询每个国家自己,我会产生20 * 15的API调用,如果我打电话给所有国家的1个指标,将导致15个API调用。 我会得到很多“垃圾”数据:/

如果满足以下条件,则可以将数据保存在适当的数据结构(数组或对象)中:

  1. 数据只是临时需要的(在一个特定的操作中),或者如果服务器重新启动,可以很容易地重新获取数据。
  2. 如果你的node.js进程有足够的可用RAM来将数据存储在RAM中。 在典型的服务器环境中,可能有超过GB的RAM。 我不会推荐使用所有这些,但可以轻松使用100MB的数据存储。

将其保存在内存中可能会使其与存储在磁盘上的交互更快,更容易。 显然,如果数据在RAM中,数据将不会在服务器重新启动时保持不变。

如果数据是长期需要的,并且只想获取一次,然后一次又一次地访问数据,即使服务器重新启动,如果数据超过几百MB,或者如果您的服务器环境没有大量的内存,那么你会想要写入数据到一个合适的数据库,它将会持续下去,你可以根据需要查询它。

如果你不知道你的数据有多大,你可以编写代码来临时把它放在一个数组/对象中,并且在数据加载之后观察node.js进程的内存使用情况。

我build议将其存储在nosql数据库中,因为您将使用JSON并从此处进行查询。

mongodb非常“节点友好” – 有原生驱动程序 – https://github.com/mongodb/node-mongodb-native或mongoose

从不受控制的外部数据源存储数据会带来数据发生更改时保持数据同步的复杂性。 不知道你的用例或API,很难提出build议。 例如,你确定你需要整个数据集吗? 有没有办法根据您已有的信息(用户input等)过滤数据?