知识卡片

事件溯源把命令转为纯函数

普通读书笔记卡 · 1976.w

内容

多数命令有副作用;若把聚合状态变更视为事件,就能把命令转换为纯函数Command→Event,这就引入事件溯源。它改变领域模型的建模方式,也改变资源库实现——资源库需通过事件存储获取过去的事件,实现聚合重建与更新。但CQRS对事件溯源有约束:命令模型资源库不支持查询、事件溯源本身也难支持查询,故命令端资源库既要追加事件、还需把聚合持久化到业务库以满足查询端;为避免分布式事务,事件存储与业务数据应同库。发散:Command→Event是把”状态”重述为”状态变更的历史”。

参考来源

- 位置:《解构领域驱动设计》第18章《领域驱动设计的战略考量》18.3.4(源文件:_epub-src/OEBPS/031.xhtml) - 结论依据:原文说明把状态变更视为事件即Command→Event引入事件溯源,并指出CQRS约束下命令端资源库需同时持久化聚合、事件存储与业务数据同库。 - 原始内容:如果将聚合状态的变更视为一种事件,就可以将命令操作转换为一种纯函数:Command->Event……为了避免引入不必要的分布式事务,事件存储与业务数据应放在同一个数据库。