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

标签 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,我只是刷新数据库并重新插入数据。

最佳答案

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

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

此外,处理大量数据可能会比您希望的更长时间阻塞进程。

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

关于javascript - 使用 Node 在内存中处理大型 JSON 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648434/

相关文章:

javascript - WebRTC STUN 服务器如何反馈 SDP 和 ICE 候选人?

ios - RestKit 与 NSDateFormatter

javascript - 性能比较 : json vs pure html !

api - Urturn API : command not found

javascript - 当您在手机上向上滚动我的网页时,底部是白色的。我怎样才能解决这个问题?

javascript - 烦人的 React 错误... "TypeError: Cannot read property ' My_Items' of null”

Java代码将特殊字符转换为垃圾字符

node.js - 错误: Cannot find module 'node-fetch'\nRequire stack:\n-/var/task IN AWS Lambda

javascript - socket.io 立即启动并再次停止

javascript - react 工具 : Is Babel-CLI needed when I use Browserify with Babelify?