MySQL和MongoDB的对比

一、关系型数据库VS非关系型数据库

  1. MySQL(关系型)
    • MySQL存储数据在表中,使用结构化的查询语言(SQL)访问数据库,MySQL需要你预定义表的结构,数据表字段之间的关系在数据表中,关系信息也可以存储在分离的数据表中,使用这种方式实现数据的最小化,也就是减少数据的冗余
  2. MongoDB(非关系型)
    • MongoDB数据存储在像JSON结构的文档中,可以通过MongoDB查询语言快速查找相关信息,MongoDB使用动态的schemas,也就是说你可以不用预先定义结构就可以创建记录,比如某个字段是的类型是其它的值,你可以改变这个记录(在MongoDB中叫文档)的结构,可以很简单添加和删除字段,数据模型可以给你构建数据层次关系的能力,比如数组或者其它数据结构,

二、优缺点对比

  1. MongoDB的优点;
    • 弱一致性(最终一致),更能保证用户的访问速度:
    • 文档结构的存储方式,能够更便捷的获取数据。
    • 内置GridFS,支持大容量的存储。
    • 第三方支持丰富。(这是与其他的NoSQL相比,MongoDB也具有的优势)
    • 性能优越:
      • 在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询
  2. MongoDB的缺点
    • MongoDB不支持事务操作
    • MongoDB占用空间过大。
    • MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方。
  3. 反之则为关系型数据库的优缺点

三、使用场景

  1. MongoDB的适用场景
    • 更高的写入负载
    • 数据量很大或者未来会变得很大
    • 表结构不明确,且数据在不断变大
    • 没有DBA支持
  2. 反之则为关系型数据库的适用场景。