Skip to content

Latest commit

 

History

History
124 lines (100 loc) · 6.18 KB

File metadata and controls

124 lines (100 loc) · 6.18 KB

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