15-445/645 / Intro to Database Systems
Fall 2025 · published archive
需要熟悉 C++ 编程与调试,课程项目使用 C++20;本 Lab 用 Python 原创练习,不复制作业实现。
链接的讲义/笔记可公开阅读;校内注册、评分与任何费用另行规定,本 Lab 不安排注册。可读材料不等于获得学分。
Primary sources / Verified 2026-11-14
两门真实大学课程、具体讲义与原创可运行练习,对应六个学习单元。这里提供学习路线,不提供课程注册或官方作业解答。
Fall 2025 · published archive
需要熟悉 C++ 编程与调试,课程项目使用 C++20;本 Lab 用 Python 原创练习,不复制作业实现。
链接的讲义/笔记可公开阅读;校内注册、评分与任何费用另行规定,本 Lab 不安排注册。可读材料不等于获得学分。
Spring 2026 · published 2026 materials
6.1210(原 6.006)或同等算法基础,熟悉 6.1800(原 6.033)等系统知识;不要求已有数据库课程,官方实验使用 Go。
所选 PDF 无需登录即可公开阅读;校内注册、评分、出勤与费用独立管理,不承诺注册资格或付费服务。
Lecture #03 / Database Storage I · Lecture 4 / 2026-02-12 / Intro to DB Internals · File metadata and page headers / Parquet metadata
检查真实 Footer,找出行/列块信息,解释它为什么不知道副本数与表提交。
python lab.py parquet python scripts/inspect_parquet.py build/parquet/sorted-4096-zstd.parquet
组行数合计为 131072、Schema 四列;存储/表权威是推理题,不能从组数推导副本数。
打开完整单元 →Lecture #06 / Storage Models & Compression · Lecture 10 / 2026-03-10 / OLAP & Column Stores · File metadata and page headers / Parquet metadata
先预测候选组,再比较真实读取区间;在自己的副本中修改一个过滤边界。
python lab.py parquet
45 次查询均与源数据 oracle 相同;4096 有序布局候选 2/32,打乱为 32/32。
打开完整单元 →Lecture 15 / 2026-04-07 / Distributed Databases · Lecture #23 / Distributed Database Systems I · NameNode and DataNodes; Data Replication; Robustness / HDFS Architecture 3.4.2 · 2003 classic; architecture and fault-tolerance sections / The Google File System
计算块数,停止一个 DataNode,分别验证可读与冗余恢复。
python scripts/bootstrap.py hdfs python lab.py hdfs
十三块,四节点起步 RF=3;停一节点后每块三个活副本,待恢复/副本不足计数为零。
打开完整单元 →Lecture #05 / Database Storage II · Lecture #20 / Multi-Version Concurrency Control · Lecture #21 / Database Logging · Lecture 12 / 2026-03-19 / Optimistic Concurrency Control, Snapshot Isolation
阅读已执行计划中的主索引路径与版本/冲突调度,另列出验证 WAL 持久性或 LSM 合并所需证据。
python scripts/bootstrap.py database python lab.py database
计划标明 accounts_pkey;可串行化冲突不是 WAL fsync 或 Compaction 测量,后两者仍属阅读。
打开完整单元 →Lecture 12 / 2026-03-19 / Optimistic Concurrency Control, Snapshot Isolation · Lecture 15 / 2026-04-07 / Distributed Databases · Lecture 16 / 2026-04-09 / Distributed Transactions · Lecture #20 / Multi-Version Concurrency Control
运行转账与过期总额 Write Skew,再基于新总额重试完整业务决策。
python scripts/bootstrap.py database python lab.py database
KV Put 到不同服务节点;转账总额 300,一条真实 40001,最终 220,第二次提款被拒绝。
打开完整单元 →Lecture 20 / 2026-04-28 / Cloud DB · Schema evolution; Partition evolution; Query the data / PyIceberg API: schema evolution, partition evolution and scans · SQL Catalog; Development only / PyIceberg configuration: SQL Catalog / SQLite · Snapshots; Schemas; Partition specs; File metadata / Iceberg Table Specification · Lecture 17 / 2026-04-14 / Embeddings, RAG, and Vector DBs
创建真实快照,按字段身份改名,演进分区规范,对照固定快照读取与目录遍历。
pip install -r requirements-iceberg.txt python lab.py iceberg
快照行集合 3/5/6,字段 ID 2 改名后保留,文件规范 0/1 共存,旧哈希不变,未提交 id=999 不进入表。
打开完整单元 →检索/向量构建应记录语料快照、Schema、变换版本与模型版本。Iceberg 实验验证固定语料行集合哈希与变化的 latest 指针,不生成向量、不评测 RAG。
MIT Spring 2026 / Lecture 17 / Embeddings, RAG, and Vector DBs