以事件为思考方式
本文探讨了事件溯源架构的核心思维方式——"以事件思考",即不再将数据视为静态的状态快照,而是看作一系列不可变的事件流。文章阐述了这种思维方式如何从根本上改变系统设计、调试和演进的方式,帮助开发者构建更具弹性、可追溯性和灵活性的软件系统。
背景速读
- Event Sourcing 是一种软件架构模式,核心思想是:不记录系统的“当前状态”,而是记录每一个“发生过的事件”。事件是不可变的、按时间顺序存储的日志,当前状态由这些事件重放(replay)推导出来。
- 这篇文章出自 EventSourcingDB,一个专门为事件溯源设计的数据库项目。它不同于传统数据库(如 PostgreSQL 或 MongoDB)那样直接存储和更新行/文档,而是原生地存储事件流。
- 该文章批评了开发者在采用 Event Sourcing 时常犯的错误:仍然用“实体—状态”的思维去设计事件,而非真正用“事件”本身来建模。比如,本应记录“用户改了地址”这个事件,却记录成了“用户ID 123 的地址字段现在是 X”——后者本质上还是状态快照,不是事件。
- 读者需要了解的背景:传统 CRUD 应用(创建-读取-更新-删除)直接修改数据库中的记录,导致丢失了“如何到达当前状态”的历史。Event Sourcing 解决了审计、时间旅行调试、复杂领域建模等痛点,但学习曲线陡峭,因为开发者必须彻底改变思考方式。
- 该文章属于“技术最佳实践”类内容,面向已了解 Event Sourcing 基础、但实践中有困惑的工程师。它不介绍“什么是 Event Sourcing”,而是纠正“怎么正确地做”。