mongodb 存引擎及配置

上次我们分享到了 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

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

作者:阿兵云原生原文地址:https://segmentfault.com/a/1190000043003661

%s 个评论

要回复文章请先登录注册