【问题标题】:Options for storing and retrieving small objects (node.js), is a database necessary?存储和检索小对象(node.js)的选项,是否需要数据库?
【发布时间】:2018-08-31 19:20:04
【问题描述】:

我正在构建我的第一个实时 node.js 网络应用程序。它包含一个表格,接受有关我的客户当前库存的数据。提交后,将创建一个对象并将其保存到当前库存数组中。然后,该股票将永久显示在他们的网站上,直到条目被修改或删除。

任何时候存储的对象都不可能超过 20 个,而且这些对象可能每周只会更新一次。我不确定是否有必要使用 MongoDB 来存储这些,或者是否有更简单更合适的替代方案。也许这些对象可以存储到 JSON 文件中?或者这会对页面加载时间产生太大影响?

【问题讨论】:

    标签: json node.js database object


    【解决方案1】:

    您可能会存储在 JSON 文件中,甚至存储在诸如 Redis 之类的缓存中,但我仍然认为 MongoDB 将是您最好的实时站点选择。

    在 JSON 文件中存储某些内容是不可扩展的,因此如果您最终存储的数据比原计划多得多(这种情况经常发生),您可能会发现服务器硬盘驱动器上的存储空间不足。此外,如果您最终扩展并将您的应用程序放在负载均衡器后面,那么您将需要确保每个服务器上都有该 JSON 文件的匹配副本。此外,更新 JSON 文件时很容易遇到竞争条件。如果两个进程同时尝试更新文件,您可能会丢失数据。从技术上讲,JSON 文件可以工作,但不建议这样做。

    存储在内存中(即)Redis 具有类似的含义,即数据仅在该一台服务器上可用。此外,数据不是持久的,因此如果您的服务器因某种原因重新启动,您将丢失存储在内存中的内容。

    出于所有意图和目的,MongoDB 是您的最佳选择。

    【讨论】:

    • 感谢您的意见,这完美地回答了我的问题!我已经在初学者级别熟悉 mongoDB。我认为我的部分担忧是成本,因为我从建议使用数据库存储站点(如 mlab 等)中学到的教程。是否可以在 AWS ec2 等服务器上本地安装 mongoDB?
    • 我没有亲自做过,但我不明白为什么不
    【解决方案2】:

    如果您想使用更简单的方式,即 JSON 文件,请使用 nedb API,这也非常快。

    【讨论】:

      【解决方案3】:

      确定的唯一方法是使用负载测试对其进行测试。但是由于您在提供网页时可能会从文件系统中读取 html 和 js 文件,因此读取几个 json 文件的额外负载应该不是问题。

      【讨论】:

        猜你喜欢
        • 2014-05-23
        • 2015-04-29
        • 1970-01-01
        • 2016-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        相关资源
        最近更新 更多