放在哪里;很多“;数据的数组/文件/其他地方,在node.JS上的JS中

Where to put "a lot" of data, array / file / somewhere else, in JS on node.js

本文关键字:JS node 上的 文件 很多 在哪里 数据 数组 其他      更新时间:2023-09-26

这可能是一个"愚蠢"的问题,但我是第一次处理"大量"数据。我想做的事情:查询世界银行API问题:API在搜索/筛选方面非常不稳定。。。我可以自己查询每个国家/指标,但我会接到很多电话。所以我想一次下载所有关于一个国家或指标的信息,然后在机器上排序。我的问题:在哪里/如何存储数据?我可以简单地把它变成一个数组吗?我是否需要担心大小?我应该写入一个临时json文件吗?或者你有其他想法吗?

谢谢你抽出时间!

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

如果我查询每个国家,我会生成20*15个API调用,如果我调用所有国家的1个指标,它将导致15个API调用。我会得到很多"垃圾"数据:/

如果以下情况成立,您可以将RAM中的数据保持在适当的数据结构(数组或对象)中:

  1. 数据只是临时需要的(在一次特定操作中),或者在服务器重新启动时可以轻松地再次检索
  2. 如果node.js进程有足够的可用RAM来将数据存储在RAM中。在典型的服务器环境中,可能有超过GB的RAM可用。我不建议使用所有这些,但您可以轻松地将其中的100MB用于数据存储

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

如果数据是长期需要的,并且您只想获取一次数据,然后可以一次又一次地访问数据,即使您的服务器重新启动,如果数据超过数百MB,或者如果您的服务器环境没有太多RAM,那么您将希望将数据写入一个适当的数据库,在那里它将持久存在,并且您可以根据需要进行查询。

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

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

mongodb非常"节点友好"-有本机驱动程序-https://github.com/mongodb/node-mongodb-native或猫鼬

存储来自不受控制的外部源的数据会带来在数据发生更改时保持数据同步的复杂性。在不了解您的用例或API的情况下,很难提出建议。例如,你确定你需要整个数据集吗?有没有一种方法可以根据你已经掌握的信息(用户输入等)过滤掉数据?