title, type, tags, sources, last_updated
| title |
type |
tags |
sources |
last_updated |
| Event Sourcing |
concept |
| architecture |
| data-modeling |
| patterns |
|
|
2026-04-27 |
Definition
事件溯源(Event Sourcing)是一种软件架构模式——不直接存储数据的当前状态,而是将所有状态变更作为不可变事件序列持久化,通过重放事件来重建任意时间点的状态。源自 Martin Fowler 的经典模式。
Core Principles
- 唯一真实来源(Single Source of Truth):事件日志是唯一真实来源,当前状态由事件推导得出,而非直接存储
- 不可变性(Immutability):事件一旦写入,永不修改或删除,只能追加新事件
- 全历史可追溯(Audit Trail):天然具备完整审计日志,可回溯任何历史变更的"为什么"
- 时间旅行调试:任意时刻的状态可精确重建,便于复现 BUG 和分析决策上下文
Event Sourcing vs Traditional State Storage
| 维度 |
传统状态存储 |
事件溯源 |
| 存储内容 |
当前状态快照 |
状态变更事件序列 |
| 历史保留 |
通常不保留或有限保留 |
完整保留(无上限) |
| 变更原因 |
通常不记录 |
完整记录每次变更的原因 |
| 回滚能力 |
依赖备份 |
通过反向事件补偿天然支持 |
| 审计合规 |
需额外构建 |
内置,无需额外开发 |
Key Event Types
- Progress:任务向前推进的里程碑事件
- Blocker:阻塞/障碍事件,通常触发状态 → "blocked"
- Decision:关键决策事件,记录决策理由和背景
- Pivot:转向/重大调整事件,记录原因和备选方案
- Completion:完成事件,触发状态 → "completed"
Applications in Project Management
Project State Management 是事件溯源在个人/团队项目管理中的具体应用:
- 用自然语言对话替代手动拖拽看板卡片
- 每句话("完成了X"/"被Y阻塞")作为独立事件持久化
- 当前状态由事件序列自动推导,无需手动维护
- 查询"项目为什么这样"等同于"重放这个项目的所有事件"
Connections