非关系数据库(MongoDB)和关系型数据库(MySQL)的区别
非关系数据库和关系型数据库
1、数据存储方式不同
关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。
2、扩展方式不同
因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。而非关系型数据存储天然就是分布式的,NoSQL数据库的横向扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
3、对事务性的支持不同
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务
MongoDB和MySQL的区别
| MongoDB | MySQL | |
|---|---|---|
| 数据库模型 | 非关系型 | 关系型 |
| 存储方式 | 虚拟存储+持久化 | 不同的引擎有不同的存储方式 |
| 查询语句 | 独特的MongoDB查询方式 | 传统SQL语句 |
| 架构特点 | 可以通过副本集以及分片来实现高可用 | 常见有单点,M-S,MHA,Cluster,MMM等架构方式 |
| 数据处理方式 | 基于内存,将热数据存在物理内存中,从而达到高速读写 | 不同的引擎拥有其自己的特点 |
MySQL是关系型数据库。
优势:
在不同的引擎上有不同 的存储方式。
查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
开源数据库的份额在不断增加,MySQL的份额页在持续增长。
缺点:
在海量数据处理的时候效率会显著变慢。
MongoDB是非关系型数据库(NoSQL ),属于文档型数据库。文档是MongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,它是一个面向集合的,模式自由的文档型数据库。
存储方式:虚拟内存+持久化。
查询语句:是独特的MongoDB的查询方式。
适合场景:事件的记录,内容管理或者博客平台等等。
架构特点:可以通过副本集,以及分片来实现高可用。
数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
优点:
1、快速。在适量级的内存的MongoDB的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快
2、高扩展性,存储的数据格式是json格式
3、自身的failover机制。MongoDB的副本集配置中,当主库遇到问题,无法继续提供服务的时候,副本集将选举出一个新的主库继续提供服务
缺点:
不支持事务,而且开发文档不是很完全,完善。
Mysql和MongoDB主要应用场景:
- 如果需要将MongoDB作为后端db来代替MySQL使用,即这里MySQL与MongoDB属于平行级别,那么,这样的使用可能有以下几种情况的考量:
(1)MongoDB所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类)
(2)从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便
(3)MongoDB本身的failover机制,无需使用如MHA之类的方式实现 - 将MongoDB作为类似redis ,memcache来做缓存db,为MySQL提供服务,或是后端日志收集分析。 考虑到MongoDB属于nosql型数据库,sql语句与数据结构不如MySQL那么亲和 ,也会有很多时候将MongoDB做为辅助MySQL而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。
更多推荐
所有评论(0)