首页 文章

如何处理CQRS中的外键读取端故障?

提问于
浏览
0

在SQL数据模型中有表A和表B,表A具有表B的外键 . 现在,您希望将CRUD体系结构迁移到CQRS . 想象一下以下场景:

  • 您收到一个命令,用于保留A的新条目

  • 您写入追加日志并处理它以更新您的州

  • 读取端拾取它并且无法插入数据库中

在这种情况下,您的写入方和读取方将永远不会达到一致性 . 您如何处理CQRS中的读取侧约束?是否应该在写入方面进行验证?

1 回答

  • 1

    我相信你可以从中得到一些灵感:

    How to handle set based consistency validation in CQRS?

    缺点是,新的A聚合需要由另一个聚合创建,比方说C(创建者) . 在这种情况下,C保存所有A的ID列表,以便可以在聚合级别而不是视图模型上完成检查 .

    如果你的问题更通用,并且你问“你如何处理视图模型更新失败”,那么它真的取决于 . 这可能是一个设计问题(例如不正确的事件序列,缺乏前置条件或不变检查),或者是错误 . 我通常做的是,如果没有自动补救措施,我会锁定这些实体并将它们发送到需要手动干预的实体列表 .

相关问题