目录
-
-
-
-
- [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、文本、地理空间索引 |
适用场景 | 结构化数据、复杂事务 | 半结构化数据、高扩展性需求 |