知识卡片

事件溯源仅支持主键查询要提升须同时存储聚合

普通读书笔记卡 · 1980.v

内容

IssueRepository的实现暴露事件溯源在查询上的限制:仅支持基于主键的查询,这由事件存储机制决定。要提升聚合查询能力,唯一有效方案是在存储事件的同时存储聚合——聚合按领域对象数据结构设计管理,可满足复杂查询;事件真实反映状态变迁,用于满足会引起状态变化的命令请求。事件与聚合的分离即命令与查询的分离,正是CQRS模式的设计初衷:查询模型用查询视图模式直接查业务库获聚合,命令模型用事件溯源模式由聚合处理命令与创建事件,需同时操作事件库(存事件)与业务库(更新/创建聚合)。发散:事件溯源不擅长即席查询,遇到复杂读需求就该引入读模型/CQRS,而非硬在事件流上做查询。

参考来源

- 位置:《解构领域驱动设计》附录B B.2.5(源文件:_epub-src/OEBPS/035.xhtml) - 结论依据:原文指出事件溯源仅支持主键查询、需同存聚合、这即CQRS初衷。 - 原始内容:事件溯源在聚合查询功能上存在的限制:仅仅支持基于主键的查询……事件与聚合的分离,意味着命令与查询的分离,实际上就是命令查询职责分离(CQRS)模式的设计初衷。