事实表的四种形态
事实表按业务形态分四类:事务事实表(一次事件一行,只追加)、周期快照(固定周期末的状态,按周期追加)、累积快照(一个流程实例一行,随阶段推进更新)、无事实事实表(只记录关系或事件发生,没有金额类度量)。选型不是技术偏好问题,而是由「要回答什么问题」决定的——问每日存量就要用快照,拿事务表全历史累加既慢又容易算错。
基本信息
| 事务事实表 | 一次事件一行,只追加,粒度最细 |
|---|---|
| 周期快照 | 某周期末的状态,按周期追加 |
| 累积快照 | 流程实例一行,随阶段推进更新 |
| 无事实事实表 | 只记录关系或事件发生,无金额度量 |
典型使用场景
- 交易流水建模:下单、支付、退款用事务事实表
- 存量分析:每日库存、账户余额用周期快照
- 流程效率:订单从下单到签收各阶段耗时用累积快照
- 行为与关系记录:浏览、参会、活动覆盖用无事实事实表
- 选型评审:拿业务问题反推该建哪类表,避免一张表包打天下
选型提问
选型提问
要统计发生了什么、有多少笔? → 事务事实表
要统计每天有多少存量、余额多少? → 周期快照
要分析各阶段耗时与流转效率? → 累积快照
只关心事件是否发生、无金额度量? → 无事实事实表四类事实表对照
| 类型 | 一行代表 | 典型业务 | 更新方式 |
|---|---|---|---|
| 事务事实表 | 一次业务事件 | 下单、支付、退款 | 只追加 |
| 周期快照 | 某周期末状态 | 每日库存、账户余额 | 按周期追加 |
| 累积快照 | 一个流程实例 | 订单从下单到签收 | 随阶段推进更新 |
| 无事实事实表 | 一个关系或事件记录 | 参会、浏览、覆盖条件 | 只追加 |
同一业务过程可以同时存在多种事实表:库存既做事务流水也做每日快照,各自服务不同问题,不需要二选一。
累积快照要预留每个阶段的进入时间戳,否则流程分析只能算总时长,无法定位到底卡在哪一环。