使用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。