上次我们分享到了 wiredTiger 引擎以及他对于以前默认的 MMAPV1 引擎的优势
关于 wiredTiger 引擎 配置这里补充一下:
storage: journal: enabled: true dbPath: /data/xiaomotong/mongo1/ directoryPerDB: true engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 1 directoryForIndexes: true journalCompressor:none (默认snappy) collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true • directoryPerDB
是否一个库一个文件夹
- engine
数据引擎指定是什么
- cacheSizeG
wiredTiger 引擎最大使用 cache 的大小,此处配置 1 个 G , 我们可以根据实际情况来配置
- directoryForIndexes
是否将索引也按数据库名单独存储
- collectionConfig
集合的压缩配置
- blockCompressor
压缩方式 ,默认 snappy,这里选择 none 或者 zlib
- indexConfig
索引配置
今天我来看看 mongodb 中的另外一个引擎,内存引擎
内存引擎
内存引擎,看名字就知道,数据肯定不是存在磁盘里面的,而是存在内存里面的
mongodb 的内存引擎是 InMemory 存储引擎,主要是用在企业版本的 mongodb,MongoDB Enterprise , 他不是将文档存储在磁盘上,而是将它们保留在内存中 ,
因此 InMemory 存储引擎 是没有持久化的 ,默认情况下,内存存储引擎使用50%的物理RAM减去1 GB
那么,就这个不会持久化的内存引擎,我们一般是在什么场景会使用他呢?
- 存储非持久的数据
应用程序数据和系统数据,例如用户,权限,索引,副本集配置,分片群集配置等等
- 用于高性能的读取
用于在副本集中的用来提供高性能查询的次要节点,可以从其他节点恢复数据,因此 内存引擎是不适用于副本集的主节点的,这里需要注意
因为内存引擎的数据很容易丢失
例如
上面有说到,内存引擎适合高性能的读取,没错,当客户端的请求是读操作的时候,尽可能的读取这个引擎所在的 mongodb,并且也不用担心这个引擎所在的 mongodb 会挂掉
因为挂掉之后,对整个集群没有什么影响,只需要挂掉的这个 mongodb 启动后找集群中的 其他 副本进行恢复数据即可
内存引擎关于配置上面没有什么特殊的,将上面 wiredTiger 引擎 的配置拿过来,将 engine
字段改成 inmemory 即可
GridFS
顺手在来看看 GridFS , 通过名字我们可以判别他是存储大文件的
我们一起来看看 GridFS 主要是能做什么,支持啥不支持啥。
GridFS 用作做大文件存储
我们在工作工程中,会使用 GridFS 存储大于16 MB的文件,GridFS 是用于存储和检索超过16 MB 的 BSON文档,如果一般数据量比较小的话,其实也用不到 GridFS
GridFS 不支持多文档事务
GridFS 文件存储不是只存储在单个文档中的
mongodb 中, GridFS 是不会将文件存储在单个文档中的,而是多个文档
例如将文件分为多个部分或大块(默认是 255 kB),并将每个大块存储为单独的文档
在 mongodb 中,GridFS 是使用这俩集合来存储文件块的,也就是存储文件的元数据
- fs.chunks
- fs.files
今天就到这里,学习所得,若有偏差,还请斧正
欢迎点赞,关注,收藏
朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力
好了,本次就到这里
技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。
我是阿兵云原生,欢迎点赞关注收藏,下次见~