这页补大学计算机专业里经常被低估的一门核心课:数据库系统。它不是只教 SQL 语法,也不是直接跳到某个数据库产品调参;它回答课程视角的问题:数据怎样被建模、约束、查询、索引、事务化、恢复、复制和在线演进。
数据库课的核心不是“会写 SELECT”,而是理解长期存在的数据如何在并发、故障、变更和多人协作中保持可用与可信。
| 课程 / 模块 | 主问题 | 关键对象 | 继续下钻 |
|---|---|---|---|
| 关系模型与数据库设计 | 业务事实怎样变成可约束、可查询、可演进的数据结构 | 实体、关系、范式、主外键、唯一约束、审计字段、软删除 | 业务数据库设计 |
| SQL 与关系代数 | 怎样用声明式语言描述查询意图 | SELECT、JOIN、GROUP BY、子查询、窗口函数、关系代数 | SQL 执行器设计 |
| 索引与访问路径 | 数据量变大后怎样避免全表扫描 | B+Tree、Hash、聚簇索引、覆盖索引、选择性、回表 | B+Tree 索引设计 |
| 查询执行与优化器 | 数据库怎样选择更便宜的执行计划 | Parser、Binder、Planner、Executor、统计信息、代价模型、Join 顺序 | 查询优化器设计 |
| 事务与并发控制 | 并发读写怎样保持一致性 | ACID、隔离级别、锁、死锁、MVCC、快照、写写冲突 | 事务系统设计 / MVCC 设计 |
| 存储引擎与恢复 | 数据怎样落盘、缓存、刷脏、崩溃后恢复 | Page、RID、Heap File、Buffer Pool、Dirty Page、WAL、Checkpoint | 存储引擎设计 / WAL 和崩溃恢复 |
| 复制、分片与分布式数据库 | 单机容量和可用性不够时怎样扩展 | 主从复制、LSN、选主、分片键、路由、跨分片事务、热点治理 | 分布式数据库设计 |
| 数据库演进与数据管理 | 长期运行的数据怎样安全改表、回填、校验和被使用 | Schema 演进、约束、备份恢复、CDC、数据质量、口径 | 数据库在线演进专题 / 数据治理专题 |
从关系模型、表设计、约束和 SQL 开始。目标不是背语法,而是能把业务对象翻译成稳定 schema,并用查询表达清楚问题。
数据量一大,查询不再只是“写出来”,而是“怎样被执行”。要能读懂 EXPLAIN,理解选择性、回表、Join 顺序和统计信息失真。
数据库真正进入系统课,是从并发和故障开始的。隔离级别、锁、MVCC、WAL 和崩溃恢复解释了为什么“提交成功”不是一句口号。
当系统长期运行,复制、分片、迁移、回填、对账、CDC 和数据治理会成为主问题。这里数据库课开始和操作系统、网络、分布式数据库机制合流。
| 现象 | 优先回到哪门课 | 为什么 | 不要只做 |
|---|---|---|---|
| 表越来越多,字段含义越来越乱 | 数据库设计 + 约束建模 | 对象边界、约束、命名、审计和生命周期没有稳定下来,后面查询和迁移都会变难 | 只补一份字段说明 |
| 查询突然变慢 | 索引 + 优化器 + 统计信息 | 可能是选择性变化、索引失效、Join 顺序改变、回表过多或计划回归 | 只盲目加索引 |
| 并发下偶发重复扣款或重复下单 | 事务 + 隔离级别 + 幂等 | 事务边界、唯一约束、锁粒度、重试和业务幂等要共同成立 | 只加 synchronized 或只相信事务注解 |
| 数据库改表风险很大 | 数据库演进 + 事务 / 恢复 | DDL、回填、读写切换、回滚和下游消费者都需要分阶段设计 | 只在低峰期直接 ALTER |
| 主从延迟或分片热点影响业务 | 复制 + 分布式数据库 | LSN、同步策略、路由、分片键、热点写入和读写一致性都会影响体验 | 只加机器 |
| 报表口径和业务系统对不上 | 数据库 + 数据工程 | 源系统事实、指标口径、同步链路、血缘和质量规则可能不一致 | 只改报表 SQL |
| 页面 | 负责什么 | 什么时候看 |
|---|---|---|
| 本页:数据库系统、SQL、事务与存储课群 | 负责把数据库按大学课程顺序、系统机制和工程卡点接成学习路线 | 你要补“数据库系统”这门课,而不是只查某个数据库产品用法时 |
| 数据结构、算法设计与复杂度课群 | 负责 B+Tree、哈希、排序、Join、图和复杂度这些数据库机制的算法底座 | 你想知道索引、执行计划和查询代价从哪里来时 |
| 操作系统课群 | 负责文件、内存、IO、锁和并发这些数据库运行依赖的系统对象 | 你要理解 Buffer Pool、WAL、锁等待和 IO 代价时 |
| 如何设计一个数据库 | 负责 DBMS 内部主线:存储引擎、B+Tree、SQL 执行器、优化器、事务、WAL 和 MVCC | 你要理解“数据库软件本身怎么设计”时 |
| 网络课群 | 负责网络协议、Socket、分布式通信和生产流量基础 | 你遇到跨服务、跨节点、跨区域的数据一致性和延迟问题时 |