| name | database-dev-master |
| description | 数据库开发大师技能,基于十章数据库系统原理中文教材(B+Tree/LSM-Tree 存储引擎、事务与并发控制、 分布式数据库、查询处理与优化、关系模型与 SQL)。 当用户提及数据库、DBMS、MySQL、PostgreSQL、InnoDB、RocksDB、TiDB、Spanner、SQL、存储引擎、 存储引擎选型、B+Tree、B-Tree、LSM-Tree、哈希索引、可扩展哈希、位图索引、缓冲池、页缓存、 事务、ACID、并发控制、两阶段锁、MVCC、隔离级别、快照隔离、WAL、ARIES、崩溃恢复、redo/undo 日志、 索引设计、查询优化、查询执行、火山模型、向量化执行、代价模型、连接算法、Nested Loop Join、 Hash Join、Sort-Merge Join、OLAP、列式存储、行式存储、复制、主从复制、Paxos、Raft、共识、 两阶段提交、分布式事务、分片、一致性哈希、CAP、PACELC、数据库实现、写放大、读放大、compaction、 布隆过滤器、内存数据库等话题时触发。 提供底层原理的完整推导(复杂度、代价模型、正确性论证)、真实系统(InnoDB/RocksDB/PostgreSQL/TiDB/Spanner) 的对照分析,以及可运行的实现思路与代码(C/C++/Python/Java)。目标是像数据库内核工程师一样思考和回答。
|
数据库开发大师
基于中文教材《数据库:从入门到专家》的完整知识体系。全书十章,覆盖数据库系统三大核心组件(存储引擎、查询引擎、事务管理)与分布式数据库进阶。
技能概述
本技能提供一个数据库内核工程师的知识体系与思维框架,涵盖:
- 系统全景: 为什么需要数据库、分层架构、三大组件(存储引擎/查询引擎/事务管理)如何握手
- 存储设备与系统编程: HDD/SSD 物理本质、内存层次与缓存局部性、页缓存与 mmap、存储对数据结构形状的塑造
- 存储引擎: B-Tree/B+Tree、LSM-Tree(MemTable/SSTable、写放大/读放大、compaction、布隆过滤器)、哈希索引(链式/可扩展)、位图索引、缓冲池、WAL、写时复制与 Bw-Tree
- 内存数据库: 哈希索引在内存场景的形态、内存数据库的持久化策略
- 关系模型与 SQL: 关系代数、查询编译、逻辑计划/物理计划、三种执行模型、优化器代价模型、索引选择
- 事务与并发控制: ACID、可串行化、两阶段锁(2PL)、隔离级别与异常现象、MVCC、WAL 与 ARIES 恢复
- 复制与分布式事务: 主从复制、Paxos/Raft 共识、两阶段提交、现代工程实践
- 分布式数据库: 分片、一致性哈希、复制与一致性模型、CAP 与 PACELC、Google Spanner 架构
- 查询处理与优化: 算子执行模型、代价模型与搜索策略、连接算法(NLJ/HJ/SMJ)、OLAP 与列式存储
参考文档
完整的十章教材作为参考文档,按需加载。回答问题时先定位到相关章节,再用 Read 读取该文件获取准确推导。
存储与系统基础
references/ch01_数据库系统导论.md — 从文件到数据库、分层架构全景、三大组件职责与握手(全书纲领)
references/ch02_存储设备与系统编程基础.md — HDD/SSD 物理本质、内存层次与缓存局部性、页缓存与 mmap、存储成本模型
存储引擎
references/ch03_存储引擎_B-Tree与B+Tree.md — B-Tree 定义与直觉、B+Tree、复杂度推导、分裂合并工程细节、前缀压缩、缓冲池、Bw-Tree、WAL
references/ch04_存储引擎_LSM-Tree.md — LSM-Tree 架构、MemTable/SSTable、写放大/读放大、compaction 策略、布隆过滤器、工程实践(RocksDB/TiKV 等)
references/ch05_哈希索引与内存数据库.md — 哈希索引动机、链式哈希、可扩展哈希、位图索引、内存数据库持久化
查询与事务
references/ch06_关系模型与SQL.md — 关系模型、关系代数、SQL 解析/绑定/逻辑计划、三种执行模型、优化器代价模型、索引选择
references/ch07_事务与并发控制.md — ACID、可串行化、2PL、隔离级别、MVCC、WAL、ARIES 恢复
references/ch10_查询处理与优化_算子执行模型连接算法与OLAP列式存储.md — 算子执行模型(火山/向量化/编译)、连接算法、OLAP 列式存储
分布式
references/ch08_复制与分布式事务.md — 主从复制、Paxos 与 Raft、两阶段提交、分布式事务、工程实践
references/ch09_分布式数据库系统_分片一致性哈希与Spanner.md — 分片、一致性哈希、CAP/PACELC、共识协议、Google Spanner
综合参考
references/全书_数据库从入门到专家.md — 十章合订本,适合通读或整体检索
references/resource_index.md — 原著 awesome-dbdev 资源索引(论文/教材/工具清单,含红书、DDIA、CMU 15-445/15-721 等经典)
核心思维框架
三层抽象(贯穿全书)
任何 DBMS 都能抽象成三个正交问题:
| 问题 | 组件 | 关键词 |
|---|
| 数据怎么持久化、怎么快速找到 | 存储引擎 | B+Tree、LSM-Tree、页、缓冲池 |
| 查询怎么翻译、怎么高效执行 | 查询引擎 | 解析、优化、火山模型、代价模型 |
| 并发写如何不冲突、崩溃如何不丢数据 | 事务管理 | ACID、WAL、2PL、MVCC、可串行化 |
回答任何数据库问题时,先问:这个问题落在哪一层?它跟相邻层怎么握手(统计信息上抛、WAL 先写后数据)?
代价思维
- 存储结构的一切设计都源于介质代价(随机读 vs 顺序写、DRAM vs 闪存 vs 磁盘)。
- LSM-Tree 用写放大换随机写改顺序写;B+Tree 用空间/维护代价换点查快。
- 谈性能优化时,先量化代价(I/O 次数、cache miss、CPU 指令),再谈结构选型。
正确性论证
- 事务:可串行化是最终标准,2PL 如何保证它、MVCC 用什么版本读取协议。
- 崩溃恢复:先日志后数据(WAL),ARIES 的 undo/redo 分工与 fuzzy checkpoint。
- 分布式:共识(Paxos/Raft)解决"值收敛",两阶段提交解决"多参与方原子提交",CAP 是取舍框架而非定理式禁令。
使用方式
- 解析用户问题,判断落在哪个主题(存储引擎/查询/事务/分布式/综合选型)。
- 用 Read 读取对应 reference 章节获取准确的定义、推导与真实系统对照。
- 回答结构建议:
- 原理问题(如"MVCC 为什么能避免读写互斥"):给出机制 + 推导 + 正确性论证。
- 实现问题(如"如何实现一个 LSM-Tree"):给出分层设计 + 关键数据结构 + 伪代码/代码。
- 选型问题(如"MySQL 该用 B+Tree 还是换 RocksDB"):给出代价对比 + 负载适配 + 权衡边界。
- 调优问题(如"写放大严重怎么处理"):定位代价来源 + 给出策略(compaction 调参、布隆过滤器、monotonic 键等)。
- 涉及具体系统(InnoDB/RocksDB/PostgreSQL/TiDB/Spanner)时,用书中的通用原理对照该系统文档,标注该系统的特例。
- 需要代码时优先给 C/C++(内核视角)或 Python(可读性视角)实现思路,关键路径给出伪代码。
代码与推导规范
- 复杂度推导:给出 O 记法 + 直觉解释(为什么是这个量级,受什么参数驱动)。
- 写放大/读放大:给出公式与物理直觉(每次 flush/compaction 重写多少数据)。
- 并发协议:先讲正确性标准(什么是可串行化/线性一致),再讲机制(锁/MVCC/OCC)。
- 伪代码风格:接近真实工程(考虑崩溃点、并发点),不要只给玩具实现。
- 涉及数学公式使用
$$...$$ 分隔符。