【问题标题】:Storage: database vs in-memory objects vs in-memory database存储:数据库 vs 内存对象 vs 内存数据库
【发布时间】:2019-10-11 10:30:26
【问题描述】:

我正在做一个项目,我必须为 NodeJS express 服务器存储数据。这不是很多数据,但我必须将其保存在某个地方。

我总是听说数据库对这类东西很有用,但我想只是将所有数据保存在 NodeJS 中的对象中,然后每分钟(或 5 分钟)将它们以 JSON 格式备份到磁盘。这是个好主意吗?

我在这里的想法是,来自此类对象的响应时间比来自数据库的响应时间要快得多,并且保存它们很容易。但是后来我听说还有内存数据库,所以我的问题是:

内存数据库比 javascript 对象快吗?在这方面,基于 JSON 的数据备份是个好主意吗?还是我应该简单地使用普通数据库,因为在这种情况下性能并不重要?

谢谢!

【问题讨论】:

    标签: json database mongodb


    【解决方案1】:

    如果这只是具有非常简单的模型和访问模式的学校作业或玩具项目,那么确保滚动您自己的数据持久性可能是有意义的。

    但是,如果出现以下情况,我会提倡使用数据库:

    • 您有很多对象或不同类型的对象
    • 您需要按各种条件查询或过滤对象
    • 您需要更可靠的数据持久性
    • 您需要多个服务来访问相同的数据
    • 您需要访问控制
    • 您需要任何其他数据库功能

    既然你问的是速度,对于琐碎的东西,内存中的对象可能会更快地访问。但是,对于更复杂的东西(大量数据、对象关系、分页等),数据库可能会开始变得更快。

    您提到了内存数据库,但只有在您想要没有持久性的数据库功能并且更接近您的内存对象但没有文件写入的情况下才会使用这些数据库。因此,这仅取决于您是否关心保留数据。

    此外,如果您从未使用过任何类型的数据库,那么现在是学习的最佳时机:)。

    【讨论】:

    • 谢谢!我没有考虑数据库的查询/过滤选项和可靠性。
    【解决方案2】:

    我在这里的想法是,来自此类对象的响应时间比来自数据库的响应时间要快得多,并且保存它们很容易。

    那不是真的。数据库是持久性存储,总会有 I/O 延迟。我建议将Mysql 用于sql 数据库,将MongoDBCassandra 用于nosql。

    内存数据库肯定更快,但同样需要持久存储这些数据。 redis 是一个非常流行的内存数据库。

    MongoDB 像甲酸盐一样将数据存储在 BSON(JSON 的超集)中,因此在您的情况下它将是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2017-06-16
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多