数据规范
公开教程 · 无需登录

数据规范

后端开发规范管的是代码怎么分层,这一页管的是被这些代码读写的数据:怎么命名、怎么迁移、怎么分级、留存多久、删的时候连哪些副本一起删。数据一旦上线就很难改,命名与迁移纪律是这一类里回报最高的两条。

1这一页管什么

结构、生命周期与分级;查询放在哪里不在这里重复。

  1. 管数据的结构与生命周期。命名与类型、主键与外键、审计字段、迁移纪律、数据字典、敏感分级、留存与删除、跨存储的一致性。
  2. 不交由这一页。查询写在数据访问层属后端开发规范;备份与恢复演练属部署运维规范;备份介质也要删则是两页共同的责任,本页写明「删除时要列出副本清单」。
  3. 两种落法。命名、审计字段、迁移纪律写进规则;「按规范做一次数据变更」写成技能。
对应的课程知识点:数据建模与规范化、迁移即代码(migrations as code)与向前兼容、软删除与数据留存、数据分级与最小化收集、跨存储一致性与补偿。在包含向量库与对象存储的项目里,「删干净」比「存进去」难得多,这是本页最容易被忽略的部分。

2规范条目

九条,按「建 → 改 → 分级 → 删」的顺序排列。

条目要写清什么,为什么这样规定怎么检查
命名与类型表名与字段名的单复数、时态统一;时间统一用 UTC 存储;状态用枚举并写清取值含义。命名不一致会让查询语义随作者变化数据字典与实现比对;出现两种命名风格即判缺陷
主键与外键主键类型统一;外键与级联行为写清;跨资源引用必须带归属字段。缺归属字段时,逐资源授权判定就无处落地抽查涉及资源的表,是否都能一次取到归属
审计字段创建时间、更新时间、创建人必填;变更留痕只增不改。没有审计字段就无法回答「这条记录谁改的」抽查若干表是否齐备;缺少即补齐后再上线
迁移纪律迁移文件只增不改;语句条件化可重跑;每次迁移写明回滚动作。上线后再改迁移文件会让环境之间不可比迁移脚本审查;执行一次回滚验证可逆
数据字典表与字段的含义只写一处,入库并随结构变更更新。含义分散时,同一个字段在不同模块有不同解释变更说明与数据字典对照
敏感数据分级按公开 / 内部 / 敏感 / 个人信息分级,敏感字段清单与脱敏规则集中定义。分散定义的结果总是有遗漏抽查日志与响应,含敏感原值即判失败
留存与删除写明每类数据的保留期与到期清理方式;收到删除请求时列出全部副本(业务库、向量库、对象存储、缓存、备份)执行一次删除演练,逐项核对副本清单
跨存储一致性同一份数据存在多处时,写明写入顺序与删除顺序,以及失败后的补偿动作在删除中途制造失败,检查是否有残留与重试
测试数据生产数据不进测试环境;需要样本时脱敏后导出。带真实数据调试本身就是一次泄露抽查测试环境数据;含未脱敏的生产记录即判事故

3本课先写到哪

下列五件完成,数据层就具备可回滚与可清理的能力。

  1. 最小集合五件。命名与审计字段、迁移只增且可回滚、数据字典、敏感分级清单、留存期。
  2. 写清副本清单。把一处数据存在哪几个地方列成表,删除时按表逐项执行。
  3. 先做一次删除演练。建一条数据、删除、再检查各处副本是否清空。
  4. 把敏感分级接进日志与响应。与安全开发规范里的脱敏规则引用同一份定义。
这类规范的价值在事后才显现:命名与迁移纪律在第一次上线时几乎看不出差别,而在第六次改结构、或第一次收到删除请求时,差别是「一小时」与「一周」。