Skip to content

Repository files navigation

THU Database Systems Sample Code Repository

清华大学数据库系统课程 —— 样本代码仓库

Python

简介

本仓库基于 Silberschatz, Korth, Sudarshan《Database System Concepts》体系构建,提供 13 个可运行 Python 实现,涵盖 12 章、4 大知识领域。每个文件对应一个核心 DB 概念的完整实现。适合:

  • 清华数据库系统课程的学习者
  • 408/826 计算机考研复习
  • 关系模型/SQL/B+树/事务/MVCC/分布式等概念的动手实践
  • 数据库/后端方向的面试准备

仓库结构 (4 部 12 章)

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

About

清华数据库系统课程 | Python实现 | 关系代数/SQL/B+树/Join/MVCC/WAL-ARIES/Raft共识/LSM/向量DB | 基于Silberschatz教材

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages