一、关系型数据库VS非关系型数据库
- MySQL(关系型)
- MySQL存储数据在表中,使用结构化的查询语言(SQL)访问数据库,MySQL需要你预定义表的结构,数据表字段之间的关系在数据表中,关系信息也可以存储在分离的数据表中,使用这种方式实现数据的最小化,也就是减少数据的冗余
- MongoDB(非关系型)
- MongoDB数据存储在像JSON结构的文档中,可以通过MongoDB查询语言快速查找相关信息,MongoDB使用动态的schemas,也就是说你可以不用预先定义结构就可以创建记录,比如某个字段是的类型是其它的值,你可以改变这个记录(在MongoDB中叫文档)的结构,可以很简单添加和删除字段,数据模型可以给你构建数据层次关系的能力,比如数组或者其它数据结构,
二、优缺点对比
- MongoDB的优点;
- 弱一致性(最终一致),更能保证用户的访问速度:
- 文档结构的存储方式,能够更便捷的获取数据。
- 内置GridFS,支持大容量的存储。
- 第三方支持丰富。(这是与其他的NoSQL相比,MongoDB也具有的优势)
- 性能优越:
- 在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询
- MongoDB的缺点
- MongoDB不支持事务操作
- MongoDB占用空间过大。
- MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方。
- 反之则为关系型数据库的优缺点
三、使用场景
- MongoDB的适用场景
- 更高的写入负载
- 数据量很大或者未来会变得很大
- 表结构不明确,且数据在不断变大
- 没有DBA支持
- 反之则为关系型数据库的适用场景。