存储:数据库vs内存对象vs内存数据库

时间:2019-10-11 10:30:26

标签: json database mongodb

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

我总是听到数据库对这类东西很有用,但是我考虑过将所有数据保存在NodeJS中的对象中,然后每分钟(或5分钟)将它们作为JSON备份到磁盘。那会是个好主意吗?

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

如果这不过是具有非常简单的模型和访问模式的学校任务或玩具项目,那么确保滚动自己的数据持久性可能是有道理的。

但是,如果出现以下情况,我建议使用数据库

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

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

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

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

答案 1 :(得分:0)

  

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

那不是事实。数据库是持久性存储,始终会有I / O延迟。我建议对SQL数据库使用Mysql,对于nosql使用MongoDBCassandra

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

MongoDB将数据存储在诸如formate之类的BSON(JSON的超集)中,因此在您的情况下将是一个不错的选择。