我不太明白 mongodb 中的存储引擎之间到底有哪些区别。除了这些:
- 并发(集合锁 MMap - 文档锁 WT)
- 就地更新(是 MMap - 否 WT)
- 数据压缩(无 MMap - 是 WT)
还有哪些?例如关于日记的……
答案1
这里的答案中,差异太多,无法一一概括,但从高层次来看,我会说“WiredTiger 是未来”而“MMAP 是过去”。
WiredTiger 是 MongoDB 3.2+ 新部署以及最近版本中的一些 MongoDB 功能的默认存储引擎(例如将服务器配置为副本集,又称 CSRS)依赖于 WiredTiger。目前,人们投入了大量的工程精力来改进 WiredTiger,并实现 MMAP 无法实现的并发性、正确性和一致性水平(例如,通过分布式数据库的严格 Jepsen 测试)。
除了您提到的差异,例如改进的并发性和压缩性(适用于数据和索引)之外,WiredTiger 还包括缓存管理、更好地利用硬件资源、数据完整性校验和以及用于构建更高级存储功能的可靠代码库等功能。
如果不了解存储引擎的含义,其中一些功能就无法直接比较。例如,对于 MMAP,重点是设计用于就地更新的架构,因为文档移动涉及更昂贵的索引更新:MMAP 中的索引直接指向文件位置和偏移量。WiredTiger 对索引条目和用途具有一定程度的间接性脉动循环控制电路内部实现文档级并发和事务文档更新。
WiredTiger 存储引擎具有与 MMAP 的日志和磁盘刷新间隔类似的设置,但内存和磁盘上数据格式等细节由存储引擎管理。
有关详细信息,请参阅:For more information, see: