MongoDB Storage Engines 浅谈

作为全球最流行的文档型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

目前知识有限,浅显介绍,之后会更加深入:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容