Distributed Data Systems LabLynn Lee / Engineering notebook

Primary sources / Verified 2026-11-14

带着问题阅读,
用实验检验。

两门真实大学课程、具体讲义与原创可运行练习,对应六个学习单元。这里提供学习路线,不提供课程注册或官方作业解答。

只链接公开原始材料,不镜像教材或发布官方作业解答。可公开阅读与注册、评分、费用分开;列出阅读材料不等于完成实操。
Carnegie Mellon University

15-445/645 / Intro to Database Systems

Fall 2025 · published archive

需要熟悉 C++ 编程与调试,课程项目使用 C++20;本 Lab 用 Python 原创练习,不复制作业实现。

链接的讲义/笔记可公开阅读;校内注册、评分与任何费用另行规定,本 Lab 不安排注册。可读材料不等于获得学分。

阅读与解答政策

官方 FAQ 要求不要公开课程项目实现;本配套只提供独立原创小练习。

官方先修与政策
Massachusetts Institute of Technology

6.5830/6.5831 / Database Systems

Spring 2026 · published 2026 materials

6.1210(原 6.006)或同等算法基础,熟悉 6.1800(原 6.033)等系统知识;不要求已有数据库课程,官方实验使用 Go。

所选 PDF 无需登录即可公开阅读;校内注册、评分、出勤与费用独立管理,不承诺注册资格或付费服务。

阅读与解答政策

教学大纲禁止公开实验或习题解答;课程仅作阅读来源,本 Lab 的合成实验不是其作业答案。

官方先修与政策

六个学习闭环

01 / 阅读 → 预测 → 运行 → 解释

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 四列;存储/表权威是推理题,不能从组数推导副本数。

打开完整单元 →
02 / 阅读 → 预测 → 运行 → 解释

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。

打开完整单元 →
03 / 阅读 → 预测 → 运行 → 解释

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;停一节点后每块三个活副本,待恢复/副本不足计数为零。

打开完整单元 →
04 / 阅读 → 预测 → 运行 → 解释

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 测量,后两者仍属阅读。

打开完整单元 →
05 / 阅读 → 预测 → 运行 → 解释

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,第二次提款被拒绝。

打开完整单元 →
06 / 阅读 → 预测 → 运行 → 解释

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 不进入表。

打开完整单元 →

检索结构化资源清单

下载结构化清单 JSON

2026:检索的数据版本血缘

检索/向量构建应记录语料快照、Schema、变换版本与模型版本。Iceberg 实验验证固定语料行集合哈希与变化的 latest 指针,不生成向量、不评测 RAG。

MIT Spring 2026 / Lecture 17 / Embeddings, RAG, and Vector DBs

GFS 是 2003 年经典文献。所选 MIT 2026 讲义已有公开 PDF 并已核验可读,没有把计划或推测当成完成资料。教程可能更新,实际兼容版本另有记录。