外观
表生命周期怎么管(保留 / 归档 / 下线 / 恢复演练)
难度与前置
难度:进阶
前置:知道分区与分层;能列出一张表的下游依赖(调度任务 / ADS / BI)。
读完能做什么:按「保留策略 → 冷热归档 → 下线清单 → 误删恢复演练」填完仓侧可勾选流程,并留下带数字的验收记录(不是对象存储产品课)。
适用场景
- 热存储费用爬升,大量历史分区无人认领、无人敢删
- 产品下线 / 表合并 / 重复主题表,需要正式停写停读并留痕
- 合规或合同要求「明细只保留 N 天」,到期要可审计地转冷或销毁
- 事故演练要求「误删分区后能在约定 RTO 内恢复」
不适用:
- OSS / S3 / HDFS 等存储产品课与控制台点击教程(原则可映射,本文不堆厂商 API)
- 云账号账单分账与计算配额总框架(见 成本治理)
- 改口径 / 改主键前的影响评估专文(见 改表前影响评估)
- ADS 切流与发布门禁本身(见 ADS 出数验收)
真实场景(一条)
短剧投放组有一张 dwd_ad_spend_detail(投放消耗明细,按 dt 分区)挂了两年热存储:业务只看近 90 天;财务偶查近 13 个月;更早分区几乎零查询。无人写 TTL;有人随手 DROP PARTITION 清空间,下游 ADS 补数窗口内缺 7 天,投放日报空白。
按本清单重来:表定级「业务明细 + 财务留存」→ 热 90 天 / 温 13 个月可查归档 / 更早只留合规销毁记录 → 下线旧重复表走血缘签字 → 在 test 做「删分区 → 从归档恢复」演练(禁止无备份真删生产)。三月热存体量 −40%,零「误删不可恢复」工单。
怎么做(步骤清单)
1. 保留策略:分级 + TTL(先写纸再动刀)
每张表(或每类表模板)必须有书面保留策略,禁止「先删再说」。
text
表保留策略单(最小)
对象:库.表 ________
负责人 / 备份联系人:________
数据分级(可与访问脱敏 L0–L3 对齐):□公开聚合 □业务明细 □敏感明细 □合规冻结
业务查询窗口(热):____ 天(谁还在查:________)
审计 / 财务 / 合规窗口:____ 天或 ____ 月
到期动作:□转温/冷可查 □只备份不可交互查 □销毁(须双人)
分区键 / 时间口径:________(与分区专篇一致)
例外:诉讼冻结 / 监管抽查 → □暂停 TTL分级示意(按团队改名,数字可改但必须有数):
| 层级 / 用途 | 热(交互可查) | 温/冷(可恢复查询) | 销毁 |
|---|---|---|---|
| L0 公开聚合 | 如 180 天 | 更早可压缩归档 | 按产品定 |
| L1 业务明细 | 如 90 天 | 13 个月常见财务窗 | 窗外按策略 |
| L2 敏感明细 | 尽量短;权限收紧 | 归档同样走 访问与脱敏 | 销毁留审计 |
| L3 合规冻结 | 默认不开放 | 按法规,不随意转热 | 仅合规流程 |
口诀:TTL 写在表注释 / 元数据 / 策略单三处一致;改 TTL = 变更,不是运维随手改脚本。
分区落地与删分区前提见 分区策略;敏感表转冷不代表可以放开权限。
2. 冷热归档:谁可查、成本怎么算
归档不是「扔进某个桶就不管」,要回答三件事:谁还能查、怎么查、贵在哪。
| 态 | 典型条件(示例) | 谁可查 | 成本关注 |
|---|---|---|---|
| 热 | 未超业务查询窗 | 原角色矩阵 | 存储单价高;扫全表最贵 |
| 温/冷可查 | 超热窗、未超审计窗 | owner / 审批后只读;分析师默认不扫 | 存储低;取回/扫描可能另计 |
| 备份不可交互 | 仅恢复用途 | 恢复演练账号;禁止当日常数仓读 | 备份费用 + 恢复演练成本 |
| 已销毁 | 超合规窗且无冻结 | 无人 | 保留销毁审计,不保留数据 |
落地约定:
- 按分区推进,不整表「某一天突然全冷」吓下游;公告窗口(如提前 14 天)
- 冷数据查询走审批或专用队列,避免「归档了仍被全表扫」把节省吃光(对接 成本治理)
- 归档产物若含 PII,权限与脱敏不降级;导出仍走脱敏门禁
- 元数据标状态:
hot | warm | archived | pending_drop | dropped;调度对pending_drop停写
与环境:生产归档策略在 prod 执行;恢复演练优先在 环境隔离 的 test/staging 用脱敏或合成分区验证流程。
3. 下线清单:血缘签字(停写 ≠ 已下线)
下线表 / 合并重复表 / 停主题,走清单,禁止只关调度。
text
表下线清单(最小,可与影响评估单合并)
对象:库.表 ________ 变更类型:□下线 □合并到 ____ □改名保留跳转期
上游:________ 下游任务数:____ ADS/BI/导出:____
影响评估单号:________(见 lineage-impact)
停写日:________ 只读窗口至:________ 删数/删表日:________
签字:
□ 数据 owner
□ 主要下游负责人(可多人)
□ 调度/平台(停任务、拆依赖)
□ 合规(若 L2/L3 或销毁)
回滚点:只读窗口内可恢复调度;删数前备份位置:________执行顺序(可勾选):
- 改表前影响评估 填完,破坏性勾「下线」
- 公告 + 只读:停新写入,保留查询一个约定窗口
- 下游改切到新表 / 新 ADS;旧依赖清零(含幽灵「只读不调度」)
- 备份或归档达标后,再删分区 / 删表;审计日志保留
- 字典与地图式索引更新:状态
deprecated→dropped
若下线的是 ADS 出口,发布与观察窗口仍走 ADS 出数验收;回刷相关见 幂等 / 幂等回刷。
4. 误删恢复演练:演练 ≠ 真删生产无备份
目标:证明「约定 RTO/RPO 内能恢复」,不是在生产赌一把。
text
恢复演练单(最小)
场景:□误删分区 □误删表 □错误 TTL 批量掉冷后需回热
演练环境:□test/staging(默认) □prod(须变更单 + 双人;禁止无备份)
备份来源:________ 备份时间点:________ RPO 目标:____ RTO 目标:____
步骤摘要:隔离 → 从备份/归档恢复到演练库 → 行数/金额抽检 → 权限矩阵复核
禁止项:□无备份对 prod 真删 □演练账号用个人高权限长期挂起
结果:恢复耗时 ____;diff ____;问题单号 ____
签字:owner + 值班 日期:________演练节奏建议:
- 核心事实表 / 财务相关表:每半年至少 1 次分区级恢复演练
- TTL 批量任务上线前:在 test 对「即将删除的分区集合」做一次 dry-run 列表 + 恢复抽样
- 演练记录进验收表;失败则先修备份链路,再放开更激进的 TTL
口诀:先有可恢复证明,再缩短热窗;没有演练记录的「节省存储」不算验收通过。
常见坑(至少这些)
只有「删分区脚本」,没有书面 TTL 与负责人
人一走,谁也不敢动或乱删。归档后仍被当热表全表扫
存储省了,取回与计算更贵。下线只停调度,不挡下游读、不拆依赖
幽灵依赖,半年后补数才爆。敏感明细冷归档后权限放开
生命周期变成绕过脱敏的暗道。在生产无备份演练「误删」
演练直接变成事故。TTL 与分区时间口径不一致
按入库日删、业务按入账日查,删错窗。销毁无双人、无审计,合规抽查交白卷
把本篇写成 OSS/S3 生命周期规则对照表,勾了厂商项却无仓侧签字单
如何验收(带数字的前后对比)
| 项 | 改前(示例) | 改后(目标) |
|---|---|---|
| 有书面保留策略的核心表占比 | 如 < 30% | 100%(核心清单内) |
| 超审计窗仍占热存储的分区量 | 如 ≥ 40% 表体积 | ≤ 约定(如 < 10%) |
| 无血缘签字的下线/删表次数 | ≥ 1 | 0 |
| 误删后不可恢复事故 | 有或未知 | 观察期 0;有演练记录 |
| 恢复演练 RTO(抽样分区) | 未测 | ≤ 约定(如 4h)且有记录 |
| 冷数据违规明文导出 | 未知 | 抽检 0;权限矩阵有效 |
text
表生命周期验收记录(可复制)
对象:库.表 / 表模板
策略:热 ____ 天;温/冷 ____;销毁 ____;冻结例外:有/无
归档:状态标签 ____;可查角色 ____;成本备注 ____
下线:影响单号 ____;停写日 ____;只读至 ____;删数日 ____;签字齐:是/否
演练:环境 ____;RPO/RTO ____ / ____;耗时 ____;diff ____
热存体量前后:____ → ____(或分区数前后)
签字(数据 owner):________ 日期:________Checklist:
- [ ] 保留策略单含分级、TTL、到期动作、负责人
- [ ] 冷热态有「谁可查」与成本注意;敏感权限不降级
- [ ] 下线走血缘签字与只读窗口;停写≠已下线
- [ ] 恢复演练在隔离环境或有备份的变更单下完成,有 RTO/RPO 数字
- [ ] 链到分区 / 成本 / 脱敏 / 影响评估 / 环境隔离 / ADS / 幂等,不重写专篇
- [ ] 无未公开公司项目名与真实内部表名风格泄露
- [ ] 未写成存储厂商生命周期产品手册
相关专篇(互链,不重写)
| 你要做的事 | 看哪篇 |
|---|---|
| 分区键、删分区前注意点 | 分区策略 |
| 存储分层与闲置回收总框架 | 云上成本治理 |
| 敏感表归档后谁能看 | 访问与脱敏 |
| 下线前下游与签字 | 改表前影响评估 |
| 演练落在哪套环境 | 环境隔离 |
| 下线的是对外出口时 | ADS 出数验收 |
| 回刷 / 重跑覆盖 | 离线幂等、幂等回刷 |
| 本篇 | 只定仓侧保留→归档→下线→恢复演练清单,不替代上述专篇 |
相关面试题
题库小程序链接待定;先用站内锚点占位。
- [ ] 题:核心表书面保留策略最少要写清哪些字段才算达标?(考察点:分级/TTL/到期动作/负责人;核心清单 100%)→ 占位:
#todo-interview-table-lifecycle-retention - [ ] 题:热转冷后「谁可查」与脱敏权限为何不能降级?(考察点:冷热态权限矩阵;抽检明文导出=0)→ 占位:
#todo-interview-table-lifecycle-cold-acl - [ ] 题:下线为何不能「停写即删」?签字与只读窗口如何验收?(考察点:血缘签字齐;停写≠已下线)→ 占位:
#todo-interview-table-lifecycle-decommission - [ ] 题:误删恢复演练怎样才算过?(考察点:隔离环境;RTO/RPO 有数字;观察期不可恢复事故=0)→ 占位:
#todo-interview-table-lifecycle-restore-drill
改写说明:清单体例对齐访问脱敏 / 测试样例集;保留 → 归档 → 下线 → 恢复演练四步;刻意不写 OSS/S3/HDFS 产品课。虚构通用短剧投放明细例,无未公开公司数据。