MongoDB的In-Memory存储引擎

太阳1年前技术文章579


   在企业版 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的风险。


相关文章

sql_mode参数

sql_mode参数

一、参数含义sql_mode是个很容易被忽视的变量,其本身主要就是一种语法校验规则 ,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。二、常用值含义1、ONLY_FUL...

8.0 新特性-Generated Invisible Primary Key

8.0 新特性-Generated Invisible Primary Key

说明MySQL Innodb 引擎采用的是 IOT(索引组织表)存储方式,主键的重要性就不言而喻。在早期版本用户如果没有显式指定主键,会自动生成隐藏主键 row_id 来组织 B+ 树,隐藏主键 ro...

Oozie web console is disabled 问题解决

Oozie web console is disabled 问题解决

一、问题一a、错误现象b、解决方案①、根据提示查看Oozie Quick Start 发现是缺少ExtJS 2.2库(必须是2.2版)下载ExtJS2.2下载地址:http://archive.clo...

rds pg10 ssd云盘升级磁盘类型方案

rds pg10 ssd云盘升级磁盘类型方案

1、升级方案一原实例变更配置方案优缺点:优点:操作方便,升级后能保证数据和存储过程都是正常的。缺点:停机时间较长,整个变更配置期间业务不可用。变更步骤参考:在配置信息区域单击变更配置。(仅包年包月实例...

grafana版本升级

grafana版本升级

      因Grafana需接入腾讯云监控数据,安装腾讯云监控插件。腾讯云监控应用插件需运行在 Grafana ≥ 7.3且 < 8.0 的版本上。当前使用版本为...

Flume使用案例之实时读取目录到HDFS

目标:使用flume监听整个目录的文件分步实现:1. 创建配置文件flume-dir.conf#1 Agenta3.sources = r3a3.sinks = k3a3.channels = c3 ...

发表评论    

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