使用Node在内存中处理大量的JSON数据集

我从Salesforce拉取JSON数据。 我可以有大约1万个logging,但从来没有更多。 为了防止Api的限制,并为每个请求命中Salesforce,我想我可以每小时查询数据,然后将其存储在内存中。 显然这会更快,更不容易出错。

一个JSON对象将有大约10个属性,也许还有一个嵌套的两个或三个属性的JSON对象。

我正在使用类似于下面的方法来查询logging。

getUniqueProperty: function (data, property) { return _.chain(data) .sortBy(function(item) { return item[property]; }) .pluck(property) .uniq() .value(); } 

我的问题是

  • 将这些数据存储到内存中并处理内存中的数据会产生什么后果? 我显然不想通过对数据进行大量过滤来阻止服务器。

  • 我以前从来没有使用过Redis,但会像caching数据库帮助?

  • 最好是每隔一小时查询一次数据,并将这个JSON响应保存在Mongo中。 那么我会尽全力去对付蒙戈而不是内存? 每查询一次Salesforce,我只需刷新数据库并重新插入数据即可。

将数据存储在内存中有两个缺点:

  • 不可扩展 – 当你决定使用更多的进程时,每个进程将需要做相同的API请求;
  • 脆弱 – 如果你的进程崩溃你将失去数据。

同时处理大量的数据可能会阻塞比您想要的更长的时间。

解决scheme: – 使用外部存储! 它可以是redis,也可以是MongoDB或RDBMS; – 在独立进程中更新数据,由cron触发; – 不要删除整个数据库:有可能在此之后有人提出请求(如果你的存储当然不支持事务),更新logging。