【问题标题】:Is storing data on the NodeJs server reliable?在 NodeJs 服务器上存储数据可靠吗?
【发布时间】:2019-08-15 11:38:39
【问题描述】:

我正在学习如何使用 socket.io 和 nodejs。在this answer 中,他们解释了如何将在线用户存储在 nodejs 中的数组中。这是在不将它们存储在数据库中的情况下完成的。这有多可靠?

  1. 存储在服务器中的数据是否可靠,数据是否始终保持原样?
  2. 是否建议将数据存储在服务器中?我正在考虑一个有数百万用户的场景。
  3. 即使应用程序从不同位置提供服务,是否始终只有一个服务器实例在运行?如果不是,将数据存储在服务器中会导致不同服务器实例之间的不一致吗?

【问题讨论】:

  • 我认为答案旨在用作一个示例,它只是展示了如何进行连接。它不建议始终将内容存储在数组中 - 只是添加数据库会使示例过于复杂而几乎没有好处。
  • @VLAZ 明确一点,在生产中应该将数据存储在数据库中?
  • 程序中的所有变量,包括数组、对象和字符串都存储在 RAM 中。当您的程序退出时,数据不会保存在任何地方(更不用说当您关闭计算机时)。您需要通过某些数据库服务器将长期数据存储在磁盘上,或者存储到将磁盘上的文件视为数据库的文件或库(例如 SQLite)
  • 是的,简而言之“不要将数据存储在内存中”。尽管从那里这可能会增长和扭曲 - 数据库绝对是一种选择,但您可以将数据写入文件并在机器关闭时仍然拥有它的持久副本。此外,您实际上可以拥有一个系统,该系统在内存中执行故事数据以提高访问速度。然而,这些系统几乎总是将数据的副本保存到一些持久性存储(例如数据库)中。尽管如此,记忆单独还不够好。您已经谈到了原因,但最简单的原因是关闭服务器再打开会擦除数据。

标签: node.js express server data-storage


【解决方案1】:

恭喜您到目前为止的学习!我希望你玩得开心。

  1. 存储在服务器中的数据是否可靠,数据是否始终保持原样?

不,在服务器上存储数据通常不够可靠,除非您全面管理服务器。使用托管服务时,永远不应在服务器上存储数据,因为管理服务器的一方很容易将其擦除。

  1. 是否建议将数据存储在服务器中?我正在考虑一个有数百万用户的场景。

这根本不可取,您需要某种数据库。

  1. 即使应用程序从不同位置提供服务,是否始终只有一个服务器实例在运行?如果不是,将数据存储在服务器中会导致不同服务器实例之间的不一致吗?

这种工作方式通常是服务器始终在运行,并在本地存储一些有关其配置的基本信息 - 扩展时,托管服务能够自动增加处理能力,并在后台处理 load balancing。每当服务器为您检索数据时,它都会从数据库中请求数据,然后将其加载到 RAM(内存)中。在用户示例中,您可以将用户数据存储在表格或文档中(relational databasesdocument oriented database),然后将它们加载到内存中以使用“函数”来操作数据。

此外,要详细了解您的“数据不一致”问题,请查看与数据库相关的并发,以及数据竞争条件

希望有帮助!

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2016-03-22
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2010-12-02
    • 2018-11-07
    相关资源
    最近更新 更多