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 |