参考:comparing-in-memory-databases-redis-vs-mongodb
优点:
- 社区活跃,用户较多,应用广泛
- 适合数据格式经常变化的需求模型,扩展字段很容易且不影响原有数据
- 自带高可用,自动主从切换(副本集)
- 比较好的适应大数据量增长的需求
- MongoDB在内存充足的情况下数据都放入内存且有完整的索引支持,内存资源丰富的话,MongoDB的查询效率会快很多
缺点:
- 复杂查询(Join)MongoDB性能不佳
性能
引用https://cloud.tencent.com/developer/article/1005453
插入性能
- MongoDB的Insert性能随着线程数(小于128)的增加而增加,当大于128时,Insert性能开始逐渐出现明显波动和下降;
- 当线程数量达到128时,MongoDB的Insert性能达到峰值,约为19万;
- 平均延迟随线程数量的增加而增加,且增加速度越来越快;
Read / Update性能 VS 线程数
- 对百万级数据的操作,MongoDB读性能优于写性能,随着写的比重增加,吞吐率明显减少,且系统延迟明显增加;
- 只读、读多写少、读写混合、读少写多,这四个场景均在线程数达到128时达到峰值,分别约为23万、20万、16万、14万;
- 随着线程数的增加,写比重越大,其吞吐率波动性越大,越不稳定,且当线程数高于128时,吞吐率下降越明显,系统延迟增加越明显(即MongoDB读操作在数据量较少时稳定性更强);
- 对百万级数据的操作,当写比重超过50%时,吞吐率出现明显下降,且随线程数增加而越发明显