作为全球最流行的文档型NoSQL数据库(根据DB-Engines的排名),MongoDB一直备受关注,而Storage更是受到关注的组件之一。MongoDB Inc收购了WiredTiger之后,根据官方博客得知,WiredTiger相比MMAP(Memory Mapping),性能提高了7-10倍,降低了80%的存储占用空间、降低了高达95%操作开销、支持高达50个副本集。加入到3.0版本,并成为3.2版本默认Storage。一句话:质的飞跃。下面让我们来比较下两者的差异:
1、Concurrency
MMAP使用Collection-Level的锁,如果一个客户端请求修改Document内容,那么其他的客户端的请求不能再控制当前Document下的Collection,好吧,听起来有点糟糕。
WiredTiger使用Document-Level的锁。多个客户端可以对同一个Collection进行操作,而不能对同一个Document进行操作。
2、Compression
数据大量增长,必然减少磁盘的开销
WiredTiger实现了两种方式进行压缩
Snappy compression
Zlib
Zlib相对Snappy compression,具有更快的压缩速度 而MMAP没有实现压缩
3、Consistency
MongoDB每60s 会将数据写入磁盘,为了防止服务器宕机造成数据丢失,采取journal文件,而每100ms会写入journal文件 MMAP使用journal恢复文件 WiredTiger添加了checkpoints实现,每隔60s或者journal达到2G时,将会创建checkpoint,如果崩溃或者宕机,可回退到最新的有效checkpoint
目前知识有限,浅显介绍,之后会更加深入:)