美文网首页
MySQL与MongDB的区别

MySQL与MongDB的区别

作者: 四夕_2f9e | 来源:发表于2020-07-04 10:49 被阅读0次

            MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。由于SQL语句是关系型数据库的标准语言,所以SQL语句不再适用于MongoDB数据库。

    一、关系型数据库——MySQL

    优势:

    (1)在不同的引擎上有不同的存储方式。

    (2)查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

    (3)开源数据库的份额在不断增加,mysql的份额页在持续增长。

    缺点:在海量数据处理的时候效率会显著变慢。

    二、非关系型数据库——MongoDB

    存储方式:虚拟内存+持久化。

    查询语句:是独特的Mongodb的查询方式。

    适合场景:事件的记录,内容管理或者博客平台等等。

    架构特点:可以通过副本集,以及分片来实现高可用。

    数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

    成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

    优点:快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!

    缺点:不支持事务,而且开发文档不是很完全,完善。

    三、对比

    数据库                                MongoDB                                                MySQL

    数据库模型                        非关系型                                                   关系型

    存储方式                            以类JSON的                                             不同引擎有不同的存储方式

                                              文档的格式存储    

    查询语句                            MongoDB查询方式                                   SQL语句

                                            (类似JavaScript的函数)

    数据处理方式                   基于内存,将热数据存放在                       不同引擎有自己的特点

                                            物理内存中,从而达到高速读写

    成熟度                            新兴数据库,成熟度较低                              成熟度高

    广泛度                             NoSQL数据库中,比较完善且开源,        开源数据库,市场份额不断增长

                                            使用人数在不断增长

    事务性                            仅支持单文档事务操作,弱一致性            支持事务操作

    占用空间                        占用空间大                                                占用空间小

    join操作                            MongoDB没有join                                    MySQL支持join

    四、 Mysql和Mongodb主要应用场景

    1.如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量: (1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类) (2)从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。 (3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。

    2.将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。 考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候将mongodb做为辅助mysql而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。

    相关文章

      网友评论

          本文标题:MySQL与MongDB的区别

          本文链接:https://www.haomeiwen.com/subject/gdayqktx.html