Mongoose 中的存储引擎配置

阅读时长 3 分钟读完

在使用 Node.js 进行 web 开发时,常常会用到 Mongoose 来连接 MongoDB。在 Mongoose 中,存储引擎是一个非常重要的配置选项,因为不同的存储引擎会对数据的性能、安全性、可扩展性等方面产生重大影响。本文将介绍 Mongoose 中的存储引擎配置,为读者提供详细的指导和学习意义。

Mongoose 存储引擎的概述

在 Mongoose 中,存储引擎指的是底层数据库的存储引擎,MongoDB 提供了多种存储引擎如 WiredTiger、MMapv1 等,在 Mongoose 中,可以通过设置 mongoose.connect() 函数的第二个参数来配置存储引擎。具体示例如下:

在上面的示例中,我们设置了存储引擎为 WiredTiger,同时也设置了一些其他的选项,具体含义分别如下:

  • useNewUrlParser:使用新的 URL 解析器,必须设置为 true;
  • useUnifiedTopology:使用新的网格结构,必须设置为 true;
  • useCreateIndex:可以使用 Model.createIndex() 方法创建索引,而不需要显示调用 Model.ensureIndexes()
  • useFindAndModify:可以使用 findOneAndUpdate()findOneAndDelete() 替代 findAndModify()findAndModify() 已被废弃;
  • storageEngine:指定底层存储引擎的名称。

需要注意的是,不同的存储引擎可能需要设置不同的选项,详细的文档可以参考 Mongoose 的官方文档。

选择合适的存储引擎

在选择存储引擎时,应该根据实际应用场景进行选择,下面我们将针对不同的场景来介绍几种存储引擎的特性和适用性。

WiredTiger

WiredTiger 是 MongoDb 3.2 及以上版本引入的一种存储引擎,默认情况下也是 Mongoose 的默认存储引擎。WiredTiger 的主要特性如下:

  • 支持事务;
  • 支持更多的读写操作;
  • 更好的压缩比率;
  • 更好的缓存管理。

适用场景:事务型应用、读写比较均衡的应用、需要海量数据存储的应用。

MMapv1

MMapv1 是 MongoDb 的旧存储引擎,在 mongodb 4.4 及以上版本中被淘汰。MMapv1 的主要特性如下:

  • 适合小型应用,基于内存映射技术,可以更快地在内存中访问数据;
  • 不支持事务;
  • 随着数据量的增加,索引性能会下降。

适用场景:小型应用。

RocksDB

RocksDB 是一种 LSM 树存储引擎,其主要特性如下:

  • 高效的写入和读取性能;
  • 支持事务和快照;
  • 提供了压缩功能。

适用场景:高并发写入型应用、需要高效压缩的应用。

总结

Mongoose 中的存储引擎配置是一个非常关键的部分,本文从概述、选择适当的存储引擎等多个方面作了详细的介绍,读者可以根据自己的应用场景进行合理的配置选择。在使用存储引擎的过程中,还应注意对不同存储引擎的具体配置和使用规范的学习。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6459df1c968c7c53b0bfb519

纠错
反馈