baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • mysql

    • mysql索引

    • mysql日志

    • 其他

      • mysql与mongo对比
        • 数据库变量的设置
        • 《题解sql45题》
        • bufferPool详解
        • 如何解决死锁
        • 关于缓存一致性与innodb bufferpool的一点思考
        • mysql读写分离和分库分表
    • redis

    • MongoDB

    • 后端存储实战

    • 数据库
    • mysql
    • 其他
    xugaoyi
    2023-04-06
    目录

    mysql与mongo对比

    mysql是关系型数据库,而mongo是非关系型数据库

    # 一. 基本介绍

    # 1. MYSQL

    1、在不同的引擎上有不同的存储方式。 2、查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。 3、开源数据库的份额在不断增加,mysql的份额页在持续增长。 4、缺点就是在海量数据处理的时候效率会显著变慢。

    # 2. MongoDB

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

    # 二. Mongo优缺点

    优势: 1、在适量级的内存的MongoDB的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。 2、MongoDB的高可用和集群架构拥有十分高的扩展性。 3、在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。 4、MongoDB的Bson和JSon格式的数据十分适合文档格式的存储与查询。 劣势: 1、 不支持事务操作。MongoDB本身没有自带事务机制,若需要在MongoDB中实现事务机制,需通过一个额外的表,从逻辑上自行实现事务。 2、 应用经验少,由于NoSQL兴起时间短,应用经验相比关系型数据库较少。 3、MongoDB占用空间过大。

    # 三.对比

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

    # 数据模式和能力

    ​ mongo比mysql存储数据更加了灵活,且数据集较大时,mongo具有更高的数据处理优势

    # 性能和速度

    ​ 相反,由于MongoDB能够为非结构化数据提供灵活、快速的性能,当用户难以预先设计好数据模式时,文档数据存储将是一个很好的选择。当然,如果数据种类过于丰富,用户很难在数据属性上创建出对应的索引,那么他们就需要频繁地优化数据模式。而此举则可能产生数据的不一致性。

    # 安全性

    MySQL采用的是基于特权的安全模型。该模型既能够提供基本的身份验证,又可以在特定的数据库上实施用户特权的管控。在数据库与服务器之间传输数据的过程中,MySQL必须采用安全套接字层(SSL,一种安全协议)的方式,来加密连接。

    而MongoDB的安全性主要包括:基于角色的访问控制、身份验证、授权和审核等。当然,如果需要加密,它也可以实施安全传输层(TLS)和SSL协议。

    因此就安全性而言,常用业务应用更趋向于使用成熟的MySQL来实现。

    # ACID:原子性、一致性、隔离性和持续性

    众所周知,ACID是确保数据有效性的一组数据库事务属性。MySQL的事务一直都能符合ACID。而追求速度和高可用性的MongoDB,在ACID方面并不占优。直到2018年,MongoDB才在多文档事务中满足ACID。不过,该选项在默认情况下是关闭的。

    # 查询

    当需要从数据库表或表的组合中请求信息时,MySQL会使用最流行、最广泛的查询语言—SQL,通过DDL和DML与数据库进行通信。

    而MongoDB使用的是非结构化的查询语言。为了能够从JSON文档数据库处请求并获取数据或信息,用户需要事先指定与结果应匹配的文档属性。

    # 该如何选择MongoDB与MySQL

    ​ 作为文档数据库,由于MongoDB并不限制用户存储数据的体量和类型,因此适合大数据的应用环境。这对基于云的服务将特别有利。而得益于MongoDB的水平可扩展能力,以及与云服务的敏捷性结合,它不但能够减少开发者的工作量,简化业务与项目的扩展流程,还能够提供高可用性和数据的快速恢复。

    ​ 不过,MongoDB在数据的可靠性、一致性、以及安全性等方面,不如MySQL。此外,当应用程序需要提供多行事务(如,会计和银行系统)时,以MySQL为首的关系型数据库提供了高事务处理率(high transaction rate)。实际上,与MySQL专注于提供事务的ACID和安全性不同的是,MongoDB更专注于提供高插入率(high insert rate)。

    ​ 因此,我强烈建议您将MySQL用于具有固定数据模式、且不打算在数据的多样性方面进行扩展的企业或项目。毕竟,在确保数据完整性和可靠性的同时,MySQL不但方便被维护,而且成本较低。

    ​ 相反,MongoDB是那些正在成长、但数据架构并不固定的业务或项目的最合适选择。由于它允许开发者在无需任何结构的情况下,自由地更新、检索和存储文档,因此它通常适用于需要内容管理,物联网(IoT)处理,以及实时分析等项目中。

    参考:

    MongoDB和MySQL的区别 (opens new window)

    MongoDB与MySQL,该如何从中选用数据库? (opens new window)

    编辑 (opens new window)
    上次更新: 2024/02/22, 14:03:19
    你常听说的WAL到底是什么
    数据库变量的设置

    ← 你常听说的WAL到底是什么 数据库变量的设置→

    最近更新
    01
    spark基础
    02-22
    02
    mysql读写分离和分库分表
    02-22
    03
    数据库迁移
    02-22
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式