【问题标题】:Should I store all database data in memory node.js?我应该将所有数据库数据存储在内存 node.js 中吗?
【发布时间】:2017-09-23 18:03:22
【问题描述】:

对于我正在开发的服务器,我有两种选择。

选项 a) 当服务器启动时,从数据库中提取所有数据并将其作为对象存储在内存中。

选项 b) 每次需要数据时,从数据库中提取数据,将其转换为对象并返回。不要将所有数据都存储在内存中。

我有点担心如果内存中存储的数据过多,应用程序会崩溃。但我不确定这应该如何处理。

处理这个问题的正确方法是什么?

随意填写以扩展另一个选项。

【问题讨论】:

  • 您对数据大小的要求是什么?查询的复杂性?这种方法有一些主要缺点,所以它肯定取决于您的服务器负载以及其他因素。例如,您将很难尝试扩展您的应用程序(超过 1 个服务器实例,甚至是 nodejs 原生集群)。
  • 哪一个?选项a还是选项b?
  • 我说的是一个。各有优缺点,请尝试提供更多信息
  • 你完全无视我的问题。这取决于你的规模。
  • 我不同意,这就是我首先提出这些问题的原因。例如,一个为 1000 个用户提供服务且一次不超过 50 个用户的应用程序,对于普通应用程序来说,不需要任何特殊措施来提高性能。但是,对于更大规模的项目,使用某种缓存可能值得付出努力和额外的维护,例如您的选项a。对于扩展,您应该考虑使用Redis 或类似的方法来缓存数据。以上各有缺点。还有其他事情需要考虑,例如项目的截止日期等等。

标签: javascript mysql node.js database


【解决方案1】:

你可以两者兼得。

您可以在内存中存储一​​些数据。例如,如果您的数据库保存一些设置,这些设置是某种常量并且不是数千行,那么您可以将它们加载到内存中。如果您有一些数据被非常频繁地访问并且不经常更新,您也可以在运行时加载它们并将它们保存在内存中。

如果您有一些预计会频繁更改和/或将大幅增长的数据,例如用户数据或内容。每次需要时从 db 加载它们。

如果您的应用程序是一个具有高流量的大型应用程序,您可能需要添加一些缓存系统,该系统基本上会将一些数据存储在内存或文件中,并在更改或过期时更新它.

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2021-06-27
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    相关资源
    最近更新 更多