清华大学数据库系统课程 —— 样本代码仓库
本仓库基于 Silberschatz, Korth, Sudarshan《Database System Concepts》体系构建,提供 13 个可运行 Python 实现,涵盖 12 章、4 大知识领域。每个文件对应一个核心 DB 概念的完整实现。适合:
- 清华数据库系统课程的学习者
- 408/826 计算机考研复习
- 关系模型/SQL/B+树/事务/MVCC/分布式等概念的动手实践
- 数据库/后端方向的面试准备
db/
├── Hello.py # 仓库入口
│
╔══ Part I: 基础篇 (01-03) — 关系模型/SQL/存储 ═══════════════════════╗
║ ║
├── 01_introduction/ # 关系模型与代数
│ └── relational_model.py # σ/π/⋈ 关系代数 → SQLite
│
├── 02_sql/ # SQL 查询语言
│ └── sql_queries.py # JOIN/聚合/子查询/窗口函数
│
├── 03_storage/ # 存储引擎
│ └── buffer_pool.py # 缓冲池 LRU/CLOCK/Pin/脏页
║ ║
╚══════════════════════════════════════════════════════════════════════╝
╔══ Part II: 索引与查询 (04-06) — B+树/连接/优化 ══════════════════════╗
║ ║
├── 04_indexing/ # 索引
│ └── bplus_tree.py # B+树完整实现(分裂/范围/链表)
│
├── 05_query_processing/ # 查询处理
│ └── join_algorithms.py # NL/Hash/SortMerge Join 对比
│
├── 06_query_optimization/ # 查询优化
│ └── cost_estimation.py # 选择率/代价估计/连接顺序
║ ║
╚══════════════════════════════════════════════════════════════════════╝
╔══ Part III: 事务管理 (07-09) — ACID/MVCC/恢复 ═══════════════════════╗
║ ║
├── 07_transactions/ # 事务
│ └── acid.py # ACID 演示 + 隔离级别
│
├── 08_concurrency/ # 并发控制
│ └── mvcc_2pl.py # MVCC 多版本链 + 2PL 对比
│
├── 09_recovery/ # 崩溃恢复
│ └── wal_aries.py # WAL + ARIES (Analysis/REDO/UNDO)
║ ║
╚══════════════════════════════════════════════════════════════════════╝
╔══ Part IV: 高级主题 (10-12) — 分布式/NoSQL/NewSQL ═══════════════════╗
║ ║
├── 10_distributed/ # 分布式数据库
│ └── cap_raft.py # CAP 定理 + Raft 选举/日志复制
│
├── 11_nosql/ # NoSQL
│ └── nosql_models.py # DocumentDB + KeyValue + 选型
│
├── 12_new_sql/ # 现代趋势
│ └── modern_trends.py # LSM Tree + 向量DB(k-NN) + HTAP
║ ║
╚══════════════════════════════════════════════════════════════════════╝
# SQL 查询演示
python3 01_introduction/relational_model.py
# B+树插入与范围查询
python3 04_indexing/bplus_tree.py
# MVCC 读写并发
python3 08_concurrency/mvcc_2pl.py
# WAL 崩溃恢复
python3 09_recovery/wal_aries.py| Part | 章节 | 核心内容 | 关键概念 |
|---|---|---|---|
| I | 关系模型 | σ/π/⋈ 关系代数→SQL | 候选码, 外码, 完整性 |
| I | SQL | JOIN/聚合/子查询/窗口函数 | GROUP BY, HAVING, RANK |
| I | 存储引擎 | 缓冲池, LRU, Pin, 脏页 | STEAL/NO-FORCE |
| II | 索引 | B+树(分裂/范围/链表) | 聚簇 vs 非聚簇, 覆盖索引 |
| II | 查询处理 | NL/Hash/SortMerge Join | Build+Probe, Grace Hash |
| II | 查询优化 | 选择率/代价/贪心枚举 | CBO, System R |
| III | 事务 | ACID + 隔离级别 | 脏读/不可重复读/幻读 |
| III | 并发控制 | MVCC 多版本链 vs 2PL | 快照隔离, 读不阻塞写 |
| III | 恢复 | WAL + ARIES 三阶段 | Analysis/REDO/UNDO, CLR |
| IV | 分布式 | CAP + Raft 共识 | Quorum, 2PC |
| IV | NoSQL | DocumentDB, KV, 选型 | BASE vs ACID |
| IV | 现代趋势 | LSM Tree, 向量DB k-NN | HTAP, HNSW, Bloom Filter |
- 教材: Silberschatz, Korth, Sudarshan, Database System Concepts, 7th Edition
- 进阶: Garcia-Molina, Ullman, Widom, Database Systems: The Complete Book
- 实践: SQLite 文档, PostgreSQL 手册
本仓库由以下 AI 协作完成:
- 代码架构与实现: Claude (Anthropic)
- 推理引擎: DeepSeek V4 Pro (1M 上下文)
所有代码经人工审查确认,AI 工具仅作为生产力辅助。
MIT License