MongoDB的In-Memory存储引擎

太阳2年前技术文章751


   在企业版 3.2.6版本开始,MongoDB开始有In-Memory存储引擎,除了一些元数据和诊断数据外,In-Memory存储引擎不会存储任何数据到磁盘,包括配置数据、索引、用户凭证等。


   因为避免了磁盘IO,所以In-Memory存储引擎在操作的延迟会更小。


一、In-Memory存储引擎基本概念


1、需要在MongoDB启动时候指定 --storageEngine,或者配置文件中指定storage.engine。


2、需要指定--dbpath,In-Memory存储引擎会在磁盘存储一些元数据和诊断数据、以及创建大索引时使用到的临时文件。


3、In-Memory存储引擎在进程关闭后将不再保存数据。


4、In-Memory存储引擎支持文档级并发。


5、In-Memory存储引擎要求所有的数据、包括索引以及oplog等使用的内存都要限制在inMemorySizeGB参数内,默认情况下In-Memory存储引擎对内存的使用为50%物理内存-1G,当一个写操作导致超出当前的内存限制,MongoDB会直接报错。


6、In-Memory存储引擎不支持多文档事务。


二、In-Memory数据持久性


1)In-Memory存储引擎是不持久的,也不会将数据写入到一个持久化的存储引擎。


2)In-Memorey对数据、索引、用户权限、复制集信息等都不具有持久性。


3)在In-Memory存储引擎下,通过journal等待数据达到持久化是不存在的。


4)在副本集中,任何vote>0的节点如果使用In-Memory存储引擎,需要将该节点的writeConcernMajorityJournalDefault设置为false。


5)在In-Memory存储引擎下,一个指定write concern的写操作,journal认证后会立即被返回。当MongoDB实例关闭或者意外宕机后,是无法恢复内存中的这些数据的。


三、常见部署体系结构


1)两个节点使用In-Memory存储引擎;


2)一个节点使用WiredTiger存储引擎,且设置该节点的priority=0,hidden=true;


3)这样部署保证In-Memory存储引擎的节点为primary节点,且客户端仅可以连接到In-Memory存储引擎的节点。即使副本集提供业务节点出现宕机,也可以通过WiredTiger存储引擎的节点来sync进行数据恢复。


四、journaling


1)因为In-Memory存储引擎将所有数据保存在内存,包括journal也在内存中,当操作指定j:true,会立刻会返回。


2)In-Memory存储引擎的副本集节点必须设置writeConcernMajorityJournalDefault为false。


3)当writeConcernMajorityJournalDefault设置为false,MongoDB将不会等待w:“majority”在写入jounal file后完成ack。因此该参数可能有roll back的风险。


相关文章

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(3)

SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构(3)

4.0 SpringBoot 后端代码进行打包上传服务器        将 SpringBoot 项目进行打包:      &nb...

PromQL语法

PromQL语法

一、PromQL语法1.1、什么是PromQLPromQL(Prometheus Query Language)是 Prometheus 自己开发的表达式语言,语言表现力很丰富,内置函数也很多。使用它...

Kerberos安装

Kerberos安装

1、环境准备(1)安装好jdk(2)下载Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。解压下载后的z...

Kafka日志管理

Kafka在运行时会生成大量的日志记录信息,包含了运行状态、错误信息、性能指标等。这些日志文件会占用很大的磁盘空间,过多的日志文件也会影响Kafka的性能,因此需要采取一些日志管理措施来清理无用的日志...

域名购买及备案

域名购买及备案

购买域名域名控制台 -- 域名列表 -- 注册域名注意域名购买时候域名系统中填写的持有者单位名称需与提交审核证件中的单位名称严格完全一致的模板认证中企业/组织相关材料及填写要求可参考此文档https:...

百万并发下的nginx优化

百万并发下的nginx优化

百万并发下的nginx优化之道一、nginx地址重写1、nginx地址重写(rewrite)介绍nginx地址重写的主要功能是实现URL地址的重定向。服务器获得一个来访的URL请求,然后改写成服务器可...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。