闭卷说明“需求、用例与数据不变量”的对象、成立条件和一个失败反例。
数据库系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷说明“逻辑模式与迁移计划”的对象、成立条件和一个失败反例。
闭卷说明“查询契约与索引预算”的对象、成立条件和一个失败反例。
闭卷说明“事务边界与幂等接口”的对象、成立条件和一个失败反例。
闭卷说明“测试金字塔与故障注入”的对象、成立条件和一个失败反例。
闭卷说明“观测、容量与上线门禁”的对象、成立条件和一个失败反例。
闭卷说明“答辩、复盘与下一步演进”的对象、成立条件和一个失败反例。
应覆盖:从 ER 与依赖得到逻辑模式后,还要给版本迁移、回填、双读写边界和回滚;生产变更不能假设停机重建;规则:迁移每一步应向前兼容当前与相邻版本,并有行数、校验和及回滚点;并能围绕“把 order.status 拆成状态历史表:先建新表、回填、双写校验、切读、停止旧写,最后延迟删除旧列”给出可执行或可计算的反查。
应覆盖:先列参与者、命令、查询、并发冲突和合规要求,再把不可破坏的事实写成可测试不变量;规则:每条不变量都要对应数据库约束、事务算法或监控,不能停在需求文档口号;并能围绕“订单项目规定库存不得为负、支付幂等、订单总额等于明细快照之和、用户只能看自己的订单”给出可执行或可计算的反查。
应覆盖:事务应围绕一个业务不变量闭合,外部调用通常不能长时间占着数据库锁;幂等键让重试不重复产生效果;规则:幂等 = 稳定请求身份 + 唯一约束 + 可重放结果;超时不等于失败;并能围绕“创建支付先以 request_id 唯一约束登记意图,提交后异步调用支付方,再用状态机处理回调”给出可执行或可计算的反查。
应覆盖:为每个 API 写输入、输出粒度、排序、最大结果量和延迟目标,再按代表性数据设计少量索引;规则:索引预算同时记录读收益、写放大、空间、构建时间和弃用条件;并能围绕“订单列表按 tenant、created_at 游标分页,详情按 order_id 聚合;分别验证复合索引与主键访问”给出可执行或可计算的反查。
应覆盖:数据库观测包含吞吐、尾延迟、慢查询、锁等待、缓冲命中、复制延迟、磁盘与连接池;平均值会隐藏尖峰;规则:Little 定律用于核对并发,SLO 用百分位与错误预算定义,而不是只看平均响应;并能围绕“上线前用预期峰值两倍压测,检查 p95/p99、锁等待和 I/O;设容量水位与回滚阈值”给出可执行或可计算的反查。
应覆盖:除普通样例外还要测约束反例、并发历史、迁移兼容、性能分布和恢复;测试库规模过小会掩盖计划问题;规则:测试覆盖正常路径、边界、非法状态、竞争、故障与恢复,并保存可重复脚本;并能围绕“用两个连接同时抢库存验证只一人成功,杀进程后重启核对已提交订单,制造重复回调检验幂等”给出可执行或可计算的反查。
应覆盖:项目答辩要展示决策依据、失败实验、权衡和证据;演进从已观测瓶颈出发,不为炫技提前分布式化;规则:完成标准是另一位工程师能从空环境复现、验证关键不变量并按手册恢复;并能围绕“提交模式图、迁移脚本、查询计划、并发测试、恢复记录和监控面板,现场解释一个没采用的方案”给出可执行或可计算的反查。