防伪系统承载的表面是「查询一次真伪」,实际承担的是「在纠纷场景下证明某件商品未被仿冒」。这两者对存储架构的要求差异极大,而这正是很多系统在上线时未加区分的地方。
物理覆盖的问题
最常见的实现方式是:一条编码对应一条记录,状态变更时直接 UPDATE 覆盖。这种模式在功能上完全正常,但在举证场景下有一个致命缺陷——它无法证明记录未被修改过。因为覆盖之后,旧值不留痕迹,而「旧值是什么」往往正是争议焦点。
版本化与事件溯源
版本化架构的核心思路是:把每一次状态变更视为一个独立事件,追加写入而非覆盖。这样,任何时刻的数据状态都可以由该时刻之前的事件序列重放得到。更进一步的做法是引入哈希链,让每个事件包含前序内容的摘要,从而使篡改可被检测。
查询端的呈现要求
存储架构的严谨性需要在查询端才能体现价值。如果查询端只展示当前状态,那么版本化带来的完整性证明能力就浪费了。合理的做法是让单条标识具备可查看的完整历史,同时保持消费者主流程的简洁——专业能力在那里,但不占据主路径。
- 写入侧:事件追加式,禁止物理覆盖与物理删除
- 完整性:哈希链或等效机制使篡改可检测
- 读取侧:消费者视图简洁,验证视图可查完整历史