MySQL与MongoDB

MySQL与MongoDB对比

MySQL 与 MongoDB 都是开源的常用数据库,但是 MySQL 是传统的关系型数据库,MongoDB 则是非关系型数据库,也叫文档型数据库,是一种 NoSQL 的数据库。

什么是 MongoDB

MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统。

MongoDB特点

非关系型数据库(nosql),属于文档型数据库,文档数据库,即可以存放 xml、 json、 bson 类型系的数据。这些数据具备自述性,呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。

  • 存储方式:虚拟内存+持久化。
  • 查询语句:是独特的 MongoDB 的查询方式。
  • 适合场景:事件的记录,内容管理或者博客平台等等。
  • 架构特点:可以通过副本集,以及分片来实现高可用。
  • 数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
  • 成熟度与广泛度:新兴数据库,成熟度较低,Nosql 数据库中最为接近关系型数据库,比较完善的 DB 之一,适用人群不断在增长。

MongoDB优势与劣势

MongoDB优势

  • 在适量级的内存的 MongoDB 的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。
  • MongoDB 的高可用和集群架构拥有十分高的扩展性。
  • 在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。
  • MongoDB 的 Bson 和 JSon 格式的数据十分适合文档格式的存储与查询。

MongoDB劣势

  • 不支持事务操作。MongoDB 本身没有自带事务机制,若需要在 MongoDB 中实现事务机制,需通过一个额外的表,从逻辑上自行实现事务。
  • 应用经验少,由于 NoSQL 兴起时间短,应用经验相比关系型数据库较少。
  • MongoDB 占用空间过大。

MySQL与MongoDb区别

数据库 MongoDb MySQL
数据库模型 非关系型 关系型
存储方式 以类 JSON 的文档的格式存储 不同引擎有不同的存储方式
查询语句 MongoDB 查询方式(类似JavaScript的函数) SQL语句
数据处理方式 基于内存,将热数据存放在物理内存中,从而达到高速读写 不同引擎有自己的特点
成熟度 新兴数据库,成熟度较低 成熟度高
广泛度 NoSQL 数据库中,比较完善且开源,使用人数在不断增长 开源数据库,市场份额不断增长
事务性 仅支持单文档事务操作,弱一致性 支持事务操作
占用空间 占用空间大 占用空间小
join操作 MongoDB 没有 join MySQL 支持 join