总结

优势:

1、数据结构灵活
2、高性能
3、集群成熟
4、mmap共享内存

缺点:

1、不支持事务
2、不支持复杂sql
3、内存占用高

与redis的区别

内存管理机制
Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。
MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。

支持的数据结构
Redis 支持的数据结构丰富,包括hash、set、list等。
MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

性能
二者性能都比较高,应该说都不会是瓶颈。

可靠性
二者均支持持久化。

集群
MongoDB 集群技术比较成熟,Redis从3.0开始支持集群。

MongoDB 与 MySQL 的适用场景:

MongoDB 的适用场景为:数据不是特别重要(例如通知,推送这些),数据表结构变化较为频繁,数据量特别大,数据的并发性特别高,数据结构比较特别(例如地图的位置坐标),这些情况下用 MongoDB , 其他情况就还是用 MySQL ,这样组合使用就可以达到最大的效率。

1.如果需要将 MongoDB 作为后端 db 来代替MySQL使用,即这里 MySQL 与 MongoDB 属于平行级别,那么,这样的使用可能有以下几种情况的考量:

(1)MongoDB 所负责部分以文档形式存储,能够有较好的代码亲和性,json 格式的直接写入方便。(如日志之类) 

(2)从 data models 设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如 nodejs 之类的语言来进行开发,对开发比较方便。

(3)MongoDB 本身的 failover 机制,无需使用如 MHA 之类的方式实现。

2.将 MongoDB 作为类似 Redis,memcache 来做缓存db,为 MySQL 提供服务,或是后端日志收集分析。 考虑到 MongoDB 属于 No SQL 型数据库,SQL 语句与数据结构不如 MySQL 那么亲和 ,也会有很多时候将 MongoDB 做为辅助MySQL 而使用的类 Redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。

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

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,080评论 2 89
  • Java继承关系初始化顺序 父类的静态变量-->父类的静态代码块-->子类的静态变量-->子类的静态代码快-->父...
    第六象限阅读 2,176评论 0 9
  • 不需要问我粥可暖 也不用为我立黄昏 你微笑着 没说一句话 而我却觉得 为了这个 我已等了很久 并肩前行 即使无言 ...
    可爱蛋黄派阅读 211评论 1 0
  • 这篇文章小编给大家带来学习日语基础之人称后缀除了「さん」还有哪些,我们在日语学习的过程中要记住一点,不是任何人都可...
    淹死的酸菜鱼阅读 740评论 0 0
  • 昨晚叨叨孩子早洗漱早点上床,果没想到真比平时洗漱的早,也比近几天上床也上得早。好欣慰呀! 感赏孩子能听妈妈叨叨,能...
    阳光织成的翅膀阅读 280评论 0 0