History
更新形成新版本,版本全部保留,删除以实体为单位
数据只有两种变化方式:更新和删除。更新形成新版本,旧版本保留;只有删除会移除内容。
| 操作 | 用途 | 已有的版本 |
|---|---|---|
| 更新 | 补全或纠正同一个实体 | 全部保留 |
| 删除 | 移除用户选中的实体 | 全部移除,不可恢复 |
更新
HISTORY-1 更新即新版本
定义
更新一个实体,就是形成它的新版本。
HISTORY-2 补全与纠正
执行方:后端
新版本可以补全,也可以纠正,例如延长 endAt、填写未知的值、修正错误的边界或时区。后端只检查每个版本自身是否合法。
保留
HISTORY-3 保留全部版本
执行方:后端
未删除的实体保留全部版本。读取方可以读任何一个版本,也可以沿 previousVersionId 看到实体的全部变化。
HISTORY-4 原始材料
执行方:写入方
保存哪些原始材料由业务规则决定。原始材料是来源提供、尚未按业务规则解释的数据。它所需的字段在 EntitySchema 中声明,可以放在观测内容的字段里,也可以保存为独立的实体,由观测内容引用。
删除
HISTORY-5 用户可删除
执行方:后端
用户可以删除任何实体。
HISTORY-6 按实体删除
执行方:后端
删除以实体为单位,移除选中实体的全部版本。引用了这些版本的其他实体保持原样。需要成组删除时,逐个列出要删的实体。
HISTORY-7 不可复活
执行方:后端
被删除的实体不能复活:它不再接受新版本,重放它的旧版本也无法恢复它。
HISTORY-8 引用保留,内容不可读
执行方:后端、读取方
引用了被删除版本的版本保留这些引用。被删除的内容不留副本,所以读取或追溯到这里时,读取方把目标列为不可读取,并说明结果不完整。
HISTORY-9 有数据的 EntitySchema 不能删
执行方:后端
还有业务版本引用某个 EntitySchema 的任何一个 Schema 版本时,不得删除这个 EntitySchema。要删除一种类型的全部数据,先删除数据,再删除 EntitySchema。