定义数据库
0. 引言
"数据库"是软件工程中最基础也最重要的概念。本文从定义出发,厘清数据库(Database)、数据库管理系统(DBMS)、SQL 与关系模型的关系,并给出主流产品的选型视角——理解这些基本概念,是后续所有 MySQL 深入学习的地基。
1. 数据库与 DBMS
- 数据库(Database):按特定结构组织、存储和管理的数据集合。数据不再是散落的文件,而是有结构、有约束、可高效查询的集合。
- 数据库管理系统(DBMS):管理数据库的软件系统,负责数据的存储、检索、并发控制、安全与恢复。我们日常说的"MySQL""Oracle"都是 DBMS 而非数据库本身。
图表渲染中…
DBMS 的核心职责:
| 职责 | 说明 |
|---|---|
| 数据存储 | 组织文件、索引,高效读写 |
| 并发控制 | 多用户同时访问时的隔离与锁 |
| 事务管理 | ACID 保证 |
| 安全管理 | 认证、授权、审计 |
| 恢复机制 | 崩溃后数据不丢失(redo/undo/备份) |
2. 关系型数据库与 SQL
- 关系模型:数据组织为二维表(关系),表由行(记录)与列(字段)构成,表间通过键建立关联;
- SQL(Structured Query Language):操作关系型数据库的标准语言,分四类:
- DDL(定义):
CREATE/ALTER/DROP; - DML(操作):
INSERT/UPDATE/DELETE; - DQL(查询):
SELECT; - DCL(控制):
GRANT/REVOKE。
- DDL(定义):
关系型数据库为什么长盛不衰:强约束(完整性)、事务(ACID)、标准 SQL、生态成熟。代价是扩展性受限于单机(→ 分库分表/NewSQL,见《如何做到MySQL高扩展性》)。
3. 主流数据库产品与选型
| 产品 | 类型 | 特点 | 适用 |
|---|---|---|---|
| MySQL | 关系型(开源) | 生态最广、互联网事实标准、8.0 功能完善 | 通用 OLTP,绝大多数业务 |
| PostgreSQL | 关系型(开源) | 功能最全(丰富类型/窗口函数/扩展)、严谨 | 复杂查询、GIS、金融级严谨场景 |
| Oracle | 关系型(商业) | 企业级功能与支持最强、成本高 | 传统大企业、金融核心 |
| SQL Server | 关系型(商业) | Windows/.NET 生态集成好 | 微软技术栈企业 |
| SQLite | 嵌入式关系型 | 零配置、单文件 | 移动端、客户端本地存储 |
| MongoDB | 文档型 NoSQL | 灵活 schema、水平扩展 | 非结构化/快速迭代 |
| Redis | KV NoSQL | 内存级性能 | 缓存/计数器/队列 |
| ClickHouse | 列式 OLAP | 分析查询极快 | 日志分析、BI 报表 |
| TiDB | 分布式 NewSQL | MySQL 兼容 + 透明扩展 | 海量数据 OLTP |
选型决策树:
图表渲染中…
4. MySQL 的定位
- 开源免费、社区活跃、资料海量,是互联网行业雇主最看重的数据库技能;
- 8.0 已补齐:窗口函数、CTE、JSON 原生支持、原子 DDL、不可见索引等,功能上不输商业数据库;
- 学习路径:本文 -> 体系结构 -> 表设计 -> 索引 -> 事务锁 -> 性能优化 -> 高可用/扩展。
5. 小结
- 数据库是结构化数据集合,DBMS 是管理它的软件,日常所说的"MySQL"指 DBMS;
- 关系模型 + SQL 是关系型数据库的核心,ACID 与约束是其价值所在;
- 选型看业务:OLTP 用 MySQL/PostgreSQL,海量数据用 NewSQL,分析用列式,缓存用 Redis;
- MySQL 8.0 是学习与实践的首选对象,后续章节将深入其每个核心机制。