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

时间:2014-02-08 16:16:37

标签: javascript json node.js salesforce

我从Salesforce中提取JSON数据。我可以拥有大约10 000条记录,但绝不会更多。为了防止Api限制并且必须为每个请求点击Salesforce,我想我可以每小时查询一次数据然后将其存储在内存中。显然,这将更快,并且更不容易出错。

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

我使用类似下面的方法来查询记录。

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

我的问题是

  • 将数据存储到内存并使用内存中的数据会产生什么影响?我显然不希望通过对数据运行大量过滤来阻止服务器。

  • 我以前从未使用过redis,但是像缓存数据库那样有帮助吗?

  • 最好是每小时查询一次数据,并将JSON响应存储在Mongo之类的内容中。然后,我会对Mongo进行所有查询而不是内存中的查询?每隔一小时我查询一次Salesforce,我只需刷新数据库并重新插入数据。

1 个答案:

答案 0 :(得分:1)

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

  • 不可扩展 - 当您决定使用更多进程时,每个进程都需要发出相同的api请求;
  • 脆弱 - 如果您的进程崩溃,您将丢失数据。

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

解决方案:   - 使用外部存储!它可以是redis,或MongoDB或RDBMS;   - 用cron触发的单独进程更新数据;   - 不要删除整个数据库:有人可能会在那之后立即发出请求(当然,如果你的存储不支持事务),更新记录。