SuperAPI AI 工具集

cqrs-aggregate-modeling

通用与其它

查看项目

更新于 10-16 09:56

技能介绍

用途:本技能说明 CQRS/ES 对聚合边界定义与建模的影响。核心原则是引入 CQRS 后,聚合只需保存命令执行所必需的最小状态,读取(查询)职责完全从聚合中移除,交给读模型承担,从而支持过大聚合的轻量化、聚合边界的重新定义以及通过事件管理状态。

主要能力:以 Thread 聚合为例说明问题——传统聚合同时保存成员、全部消息正文与时间戳,追加一条消息需要读取含大量消息的整个聚合再整体回写,导致更新放大。文中给出的判断依据是「该数据是否用于命令校验」:成员 ID 列表用于校验发送者是否为成员,消息 ID 列表用于校验是否重复,因此保留在聚合中;消息正文、发送者名仅用于展示,属于查询专用数据,应移入读模型。重构后的聚合仅保留 ID 列表等最小状态,追加消息时只追加一条事件(如 MessageAdded),不产生全量更新。

使用方式:按「集聚合肥大 → 逐字段分类为命令校验用或查询用 → 将查询用数据移入读模型 → 聚合仅保留 ID 列表与状态标志 → 用事件记录状态变更并由事件构建读模型」的流程操作。读模型侧通过消费事件(示例使用 DDB Streams)构建针对查询优化的 DTO,并可用偏移/分页方式部分获取数据。文中还给出 Before/After 对比表与评审检查清单,覆盖聚合肥大、CQRS/ES 再设计、边界妥当性;并提示与 aggregate-design、cqrs-to-event-sourcing、cqrs-tradeoffs 等技能配合阅读。

适用场景:CQRS/ES 架构下的领域建模,尤其是聚合加载慢、更新时出现全件 SQL、聚合内混入分页逻辑、DTO 与聚合结构高度相似等信号出现时。

限制:资料为面向 CQRS/ES 前提的建模变革说明,未提供可直接运行的完整工程、安装命令或性能数据;文中代码片段仅作示例,具体字段命名与基础设施选型需结合自身项目。是否采用强一致性需按命令语义重新评估,结果一致性足以满足的数据应从聚合中分离。具体工具版本、许可与收费信息暂未提供。