【mongodb】mongodb和MySQL体系结构的对比

目录

          • [1. 说明](#1. 说明)
          • [2. 数据存储模型](#2. 数据存储模型)
            • [2.1 MySQL](#2.1 MySQL)
            • [2.2 MongoDB](#2.2 MongoDB)
          • [3. 扩展性](#3. 扩展性)
            • [3.1 MySQL](#3.1 MySQL)
            • [3.2 MongoDB](#3.2 MongoDB)
          • [4. 查询语言](#4. 查询语言)
            • [4.1 MySQL](#4.1 MySQL)
            • [4.2 MongoDB](#4.2 MongoDB)
          • [5. 索引和性能](#5. 索引和性能)
            • [5.1 MySQL](#5.1 MySQL)
            • [5.2 MongoDB](#5.2 MongoDB)
          • [6. 一致性模型](#6. 一致性模型)
            • [6.1 MySQL](#6.1 MySQL)
            • [6.2 MongoDB](#6.2 MongoDB)
          • [7. 架构组件](#7. 架构组件)
            • [7.1 MySQL](#7.1 MySQL)
            • [7.2 MongoDB](#7.2 MongoDB)
          • [8. 使用场景](#8. 使用场景)
            • [7.1 MySQL](#7.1 MySQL)
            • [7.2 MongoDB](#7.2 MongoDB)
          • [9. 总结对比表](#9. 总结对比表)
1. 说明
  • 1.MongoDB 和 MySQL 是两种不同类型的数据库系统,分别代表了 NoSQL 和关系型数据库(RDBMS)的典型架构。
  • 2.它们的体系结构在数据存储模型、扩展性、查询语言和一致性模型等方面存在显著差异。
2. 数据存储模型
2.1 MySQL
  • 1.关系型模型:数据存储在预定义的表中,表由行和列组成,支持复杂的关系(如外键)。
  • 2.模式固定:表结构在创建时定义,后续修改需要显式操作(如 ALTER TABLE)。
  • 3.适合结构化数据:如金融交易、订单系统等需要强一致性和复杂查询的场景。
2.2 MongoDB
  • 1.文档型模型:数据存储在灵活的 BSON 文档中,文档可以嵌套,支持数组和复杂数据结构。
  • 2.无模式(Schema-less):文档结构可以动态变化,字段可以随时添加或删除。
  • 3.适合半结构化/非结构化数据:如内容管理系统、物联网数据、日志分析等。
3. 扩展性
3.1 MySQL
  • 1.垂直扩展:通过增加硬件资源(CPU、内存、存储)提升性能。
  • 2.水平扩展:支持分片(Sharding),但需要手动配置和管理,复杂度较高。
  • 3.复制:支持主从复制(Master-Slave)和主主复制(Master-Master),用于读写分离和高可用性。
3.2 MongoDB
  • 1.水平扩展:原生支持分片(Sharding),数据自动分布到多个节点,扩展性更强。
  • 2.复制:基于副本集(Replica Set),提供自动故障转移和数据冗余。
  • 3.适合大规模数据:如实时分析、社交网络、游戏排行榜等。
4. 查询语言
4.1 MySQL
  • 1.SQL:使用结构化查询语言,支持复杂的连接(JOIN)、聚合函数和事务。
  • 2.强一致性:默认支持 ACID 事务,适合需要严格数据一致性的场景。
4.2 MongoDB
  • 1.MongoDB 查询语言(MQL):基于 JSON 的查询语法,支持嵌套查询、聚合管道(Aggregation Pipeline)和索引。
  • 2.最终一致性:副本集默认提供最终一致性,可通过读偏好(Read Preference)调整一致性级别。
  • 3.不支持 JOIN:数据通常通过嵌套文档或应用层处理关联关系。
5. 索引和性能
5.1 MySQL
  • 1.B-Tree 索引:支持多种索引类型(如主键、唯一索引、全文索引)。
  • 2.查询优化器:通过查询计划优化 SQL 查询性能。
5.2 MongoDB
  • 1.B-Tree 和文本索引:支持单字段、复合索引和地理空间索引。
  • 2.TTL 索引:自动删除过期数据。
  • 3.查询性能:通过内存映射文件(WiredTiger 存储引擎)和预取机制提升性能。
6. 一致性模型
6.1 MySQL
  • 1.强一致性:事务隔离级别(如可重复读、序列化)保证数据强一致性。
  • 2.适合金融、电商等场景。
6.2 MongoDB
  • 1.最终一致性:副本集默认提供最终一致性,适合高可用性和低延迟场景。
  • 2.可选强一致性:通过 writeConcern 和 readPreference 调整一致性级别。
7. 架构组件
7.1 MySQL
  • 1.存储引擎:支持多种存储引擎(如 InnoDB、MyISAM),InnoDB 是默认引擎,支持事务和外键。
  • 2.SQL 层:解析和优化 SQL 查询。
  • 3.插件式架构:允许扩展存储引擎和功能。
7.2 MongoDB
  • 1.存储引擎:默认使用 WiredTiger,支持压缩和快照隔离。
  • 2.查询路由层(mongos):在分片集群中负责请求路由。
  • 3.配置服务器(Config Server):存储分片元数据。
8. 使用场景
7.1 MySQL
  • 1.适合需要复杂事务、强一致性和关系型数据模型的场景。
  • 2.典型应用:银行系统、电商订单、企业资源规划(ERP)。
7.2 MongoDB
  • 1.适合需要高扩展性、灵活数据模型和快速开发的场景。
  • 2.典型应用:实时分析、内容管理、物联网、游戏。
9. 总结对比表
特性 MySQL MongoDB
数据模型 关系型(表、行、列) 文档型(BSON 文档)
扩展性 垂直扩展 + 手动分片 原生水平分片
查询语言 SQL MongoDB 查询语言(MQL)
一致性 强一致性(ACID) 最终一致性(可调)
索引 B-Tree、全文索引 B-Tree、文本、地理空间索引
适用场景 结构化数据、复杂事务 半结构化数据、高扩展性需求
10. 选择建议 - 1.如果需要强一致性、复杂事务和关系型数据模型,选择 MySQL。 - 2.如果需要高扩展性、灵活数据模型和快速开发,选择 MongoDB。
相关推荐
moxiaoran57531 小时前
mysql自动赋值
数据库·mysql
结衣结衣.1 小时前
【MySQL】数据库基础
数据库·mysql
看海的四叔2 小时前
【SQL】MySql常见的性能优化方式
hive·sql·mysql·性能优化·数据分析·索引优化·sql语法
路在脚下@2 小时前
Spring Boot项目中结合MyBatis实现MySQL的自动主从切换
spring boot·mysql·mybatis
创码小奇客3 小时前
MongoDB 增删改查:从青铜到王者的全攻略
java·mongodb·trae
kylinxjd3 小时前
Windows单机模拟MySQL主从复制
windows·mysql·主从复制
meng半颗糖3 小时前
mongodb 安装配置
数据库·mongodb·database
暗恋 懒羊羊4 小时前
【MySQL】表的增删改查
数据库·mysql
怒放的生命.7 小时前
《MySQL从入门到精通》
android·数据库·mysql
略知java的景初9 小时前
MYSQL MVCC详解
mysql