← [ BACK_TO_NOTES ]

BodySense 数据库工程深化课程 MOC

以 BodySense 真实 PostgreSQL/GORM/Repository/JobRuntime 为实验载体的 20 课数据库工程深化课程;映射 Full Stack Open Part 13 与 TECH SCHOOL backend 节点,并用 PostgreSQL 官方语义和 CMU 数据库系统内容补齐底层心智模型。

#moc #growing #backend #database #postgresql #bodysense

[!info] related notes

BodySense 数据库工程深化课程 MOC

课程定位

[!important] 完整教学稿标准 这套课程现在按照与 Redis 课程相同的标准维护:任何重要概念第一次出现,都要先解释是什么、为什么出现、最小工作模型、例子、机制与失败边界,再进入 BodySense 代码。 related notes 是复习/延伸入口,不负责替课程补缺失的前置知识。

因此课程允许为了教学连续性重复稳定定义;不能为了“知识库去重”压缩成只有结论的提纲。Prediction 默认放在完整讲解之后,Answer 必须解释因果。

这不是第二套独立的数据库大纲,而是 BodySense Master Course 的数据库深化教学层。它把 Full Stack Open Part 13 的关系数据库应用层、TECH SCHOOL 的 Go/PostgreSQL 工程主线、PostgreSQL 官方文档的产品语义,以及 CMU 15-445/645 的数据库系统底层心智模型重新编排成一条可以直接在 BodySense 上验证的学习路径。

为什么这样设计

来源本课程吸收什么不机械照搬什么
Full Stack Open Part 13关系数据库、ORM、migration、关联、transaction 的应用开发视角不为了课程把 BodySense 改成 Sequelize/Node
TECH SCHOOL Backend Master ClassGo + PostgreSQL 的 schema、migration、transaction、lock、deadlock、isolation、DB error、test不把 sqlc/Asynq 等工具强行替换现有 GORM/JobRuntime
PostgreSQL 官方文档PostgreSQL 18 的事务、锁、索引、EXPLAIN、VACUUM、恢复等产品事实不靠教程口诀代替产品语义
CMU 15-445/645Page/Buffer、Index、Query Execution/Optimization、Concurrency、Logging/Recovery 的底层模型不要求为了后端求职去实现完整 DBMS

[!important] 课程目标 重点不是“会写 SQL”,而是能回答:

这个 Schema 为什么能阻止非法状态?
这条 SQL 实际会怎么执行?
这个 Index 为什么有用或没用?
两个并发事务为什么会冲突?
这段 Go 代码的 transaction boundary 在哪里?
数据库 crash 后为什么能恢复?
慢查询、锁等待、bloat、连接耗尽如何定位?

与 BodySense Master Course 的关系

这套 20 课会尽量复用现有 canonical exercise:

FSO Part 13
├─ database layer structure
├─ foreign key / join
├─ relational querying / projections
├─ migration-model separation
├─ transactional owned insert
├─ direct DB inspection
└─ eager vs lazy load

TECH SCHOOL
├─ #1 schema
├─ #3 migration
├─ #5 DB test
├─ #6 transaction
├─ #7/#8 lock + deadlock
├─ #9 isolation
├─ #15 constraints
├─ #16 DB error
└─ #54 durable job

课程笔记是教学界面;BodySense Master Course ledger 仍然是正式 mastery / placement 的 source of truth。

课程总览

filters:
  and:
    - 'file.ext == "md"'
    - 'file.inFolder("z")'
    - 'file.path.startsWith("z/bodysense-database-course-")'
    - 'file.path != this.file.path'
formulas:
  knowledge: 'file.asLink(title)'
properties:
  formula.knowledge:
    displayName: 课程
  note.lesson:
    displayName: Lesson
  note.lesson_status:
    displayName: Status
  note.description:
    displayName: Description
views:
  - type: table
    name: 数据库深化课程
    order:
      - note.lesson
      - formula.knowledge
      - note.lesson_status
      - note.description
    columnSize:
      note.lesson: 56
      formula.knowledge: 360
      note.lesson_status: 110
      note.description: 680

20 课结构

Phase A · 关系模型与应用数据访问

#主题
1[[bodysense-database-course-01-data-ownership
2[[bodysense-database-course-02-schema-constraints-normalization
3[[bodysense-database-course-03-sql-relational-querying
4[[bodysense-database-course-04-go-data-access-boundary
5[[bodysense-database-course-05-schema-migration

Phase B · 存储、索引与查询性能

#主题
6[[bodysense-database-course-06-storage-pages-buffer-pool
7[[bodysense-database-course-07-postgresql-indexes
8[[bodysense-database-course-08-query-planner-explain
9[[bodysense-database-course-09-orm-query-shape
10[[bodysense-database-course-10-connection-pool-capacity

Phase C · Transaction 与并发正确性

#主题
11[[bodysense-database-course-11-transaction-boundary-acid
12[[bodysense-database-course-12-isolation-anomalies
13[[bodysense-database-course-13-postgresql-mvcc
14[[bodysense-database-course-14-locks-deadlocks
15[[bodysense-database-course-15-concurrency-control-patterns

Phase D · Durability、运维与生产治理

#主题
16[[bodysense-database-course-16-wal-recovery
17[[bodysense-database-course-17-vacuum-autovacuum
18[[bodysense-database-course-18-backup-pitr-replication
19[[bodysense-database-course-19-security-privacy-lifecycle
20[[bodysense-database-course-20-capstone

建议学习方式

每一课统一:

概念与系统模型
→ BodySense 真实代码/Schema 锚点
→ Prediction(先回答)
→ 折叠 Answer / 解析
→ SQL / Go Lab
→ Failure Injection
→ Explain-back / L4 Gate

[!tip] Prediction 的答案默认折叠。先写自己的判断和理由,再展开答案。已有知识笔记负责长期复习;课程笔记允许为了教学连续性重复必要结论。

BodySense 主要代码锚点

apps/api/internal/database/database.go
apps/api/internal/database/transaction.go
apps/api/internal/database/migrate.go
apps/api/migrations/000001_vnext_baseline.up.sql

apps/api/internal/repository/*
apps/api/internal/model/*

重点案例:
BodyState revision / SELECT ... FOR UPDATE
JobRuntime claim / lease
RuntimeEvent durable log
Treatment immutable revision
KnowledgeLibrary / pgvector
Privacy erasure

课程结束后的能力目标

  1. 从业务 invariant 设计 PK/FK/UNIQUE/CHECK 与关系;
  2. 不依赖 ORM 猜测,能写和读真实 SQL;
  3. 用 EXPLAIN (ANALYZE, BUFFERS) 解释查询成本;
  4. 从访问模式设计索引,而不是“字段常查就加索引”;
  5. 复现并解释 lost update、lock wait、deadlock、serialization failure;
  6. 在 Go 中设计清晰 transaction boundary;
  7. 解释 PostgreSQL MVCC、WAL、VACUUM 为什么彼此相关;
  8. 定位 connection pool、slow query、lock、bloat 等生产问题;
  9. 设计 migration / backup / restore / privacy erasure 的工程边界;
  10. 对 BodySense 一条完整数据链做数据库架构审计。

外部参考

  • Full Stack Open Part 13:Relational databases
  • TECH SCHOOL simplebank:Working with database [Postgres] 与后续可靠性课程
  • PostgreSQL 18 Documentation:Indexes / Concurrency Control / EXPLAIN / Routine Vacuuming / Backup & Recovery
  • CMU 15-445/645:Indexes、Query Execution / Optimization、Concurrency Control、Logging / Recovery
创建于 2026/9/18 更新于 2026/9/18
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本