Node.js,将对象存储在内存中还是数据库中?

Node.js, store object in memory or database?

正在开发一个节点 js 应用程序,它从集中式数据库中读取 json 列表

列表 Object 大约 1.2mb(如果保存在 txt 文件中)

要求是,数据每 24 小时刷新一次,所以我为此保留了一个 cron 作业

现在,在获取数据后,我将其保存在我的服务器运行本地的数据库(couchbase)中

数据访问非常频繁,我每秒收到大约 1 或 2 个请求,几乎所有请求都需要 Object

Object 作为内存对象保存在节点 js 中还是保存在本地数据库中好?

两者的优缺点是什么?

Object 仅读取所有请求,仅由 cron 作业写入一次

这是一个高端系统,i7 四核,16gb 内存

  1. 这取决于您的硬件
  2. 如果这个对象是不可变的,根据请求,最好将它保存在内存中。如果没有 - 视情况而定。
  3. 在任何情况下,工作流都会打开与数据库的连接 - 获取数据 - return 结果 - 免费数据将比在内存中缓存消耗更多资源。

例如,在我们的项目中,我们处理高清图像,并将所有对象保存在内存中 - 原始格式为 3-7mb。测试表明,这比使用任何缓存系统(例如 redis 或 couch base)要高效得多。

我会保留最新版本作为内存对象,并存储它。这样,如果有任何崩溃,您就有了备份。但是,如果您编辑该文件,我只会将其保留为数据库对象。

每 2 秒访问一次该对象的数据库可能会很好,但 1.2MB 的内存并不算多,如果您能控制住它,您的服务器就不太可能 运行 出现问题。

与内存相比,数据库有点慢,但具有(很可能)线程安全的优势。如果您要编辑文档,您可能 运行 遇到内存对象的线程问题。

您了解应用程序和要求,您应该能够判断您是否需要线程安全的数据库,或者您是否需要保护服务器上的内存。如果您不知道,我们需要查看实际代码和用例来告诉您您可以做什么。