在使用 Node.js 进行 web 开发时,常常会用到 Mongoose 来连接 MongoDB。在 Mongoose 中,存储引擎是一个非常重要的配置选项,因为不同的存储引擎会对数据的性能、安全性、可扩展性等方面产生重大影响。本文将介绍 Mongoose 中的存储引擎配置,为读者提供详细的指导和学习意义。
Mongoose 存储引擎的概述
在 Mongoose 中,存储引擎指的是底层数据库的存储引擎,MongoDB 提供了多种存储引擎如 WiredTiger、MMapv1 等,在 Mongoose 中,可以通过设置 mongoose.connect()
函数的第二个参数来配置存储引擎。具体示例如下:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false, storageEngine: 'wiredTiger' });
在上面的示例中,我们设置了存储引擎为 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