Wiredtiger与MMap存储引擎的区别

我不明白mongodb中存储引擎的区别。 除了那些:

  • 并发性(收集lockingMMap – 文件lockingWT)
  • 就地更新(是的MMap – 没有WT)
  • 数据压缩(没有MMap – 是WT)

哪些是其他? 例如关于日记

这里的答案有很多不同之处,但是在很高的层次上,我会说“有线泰格是未来”,“MMAP是过去”。

WiredTiger是MongoDB 3.2+的新部署的默认存储引擎,最近版本中的一些MongoDBfunction(例如configuration服务器作为Replica Sets又名CSRS )依赖于WiredTiger。 在改进WiredTiger方面投入了大量的工程工作,并实现了MMAP不可能实现的并发性,正确性和一致性水平(例如, 通过了对分布式数据库的严格的Jepsentesting )。

除了您提到的差异之外,WiredTiger还提供了改进的并发性和压缩(适用于数据和索引),还包括cachingpipe理,更好地利用硬件资源,数据完整性校验和以及构build更高级存储function。

如果不了解存储引擎的含义,其中一些function就无法直接进行比较。 例如,对于MMAP,重点在于为就地更新devise模式,因为文档移动涉及更昂贵的索引更新:MMAP中的索引直接指向文件位置和偏移量。 WiredTiger对于索引条目具有间接的级别,并在内部使用MVCC来启用文档级并发性和事务性文档更新。

WiredTiger存储引擎具有与MMAP日志和磁盘刷新间隔类似的设置,但内存和磁盘数据格式等详细信息由存储引擎pipe理。

有关更多信息,请参阅:

  • WiredTiger存储引擎在MongoDB手册
  • MongoDB 3.0新增function(第3部分):新的存储架构
  • WiredTiger的技术介绍