1.WiredTiger
- 并发级别:所有写请求都是基于文档级别,锁粒度小,支持文档级别的并发,支持多个客户端同时修改一个文档,IO是多线程的
- 快照与检测点:每60s创建一个检查点,在此之间mongo或服务器宕机便会丢失数据
- 检测点中间日志:针对checkpoint的优化,在创建检查点持久化到磁盘前的数据会先存到journal上,若小于128B不压缩,否则压缩
- 压缩算法:以消耗CPU资源来减少存储空间的消耗,默认snappy压缩算法
- 内存使用情况:有两个内存,(RAM-1GB)*0.5,256M,默认选择大的作为使用内存,有指定参数cacheSizeGB配置内存大小,可防止OOM
- 3.2版本之后,默认采用WiredTiger作为默认存储引擎
2.MMAPv1
- Journal:同WiredTiger
- Record Storage:数据存储,数据连续的存储在磁盘上
- Memory Use:使用全部内存空间,直接使用系统的内存映射文件机制
- 写请求的锁是基于collection级别
3.InMemory
- Concurrency:同WiredTiger
- Memory Use:RAM*0.5-1GB
MongoDB与dynamodb之间对比
1.dynamodb没有Cassandra和MongoDB强大
2.Cassandra有CQL可以丰富的查询
3.MongoDB的查询功能也非常强大
4.Cassandra和MongoDB都提供shell客户端,而且都有第三方开发工具可以进行管理与使用
5.dynamodb使用起来没有那么方便
6.mongodb提供了更多的原子性操作
7.mongodb在value类型的支持更多
8.dynamodb省去了开发部署,监控,维护数据库环节,给开发节约了大量时间,强大的扩展功能又减轻了后续运维的压力