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

时间:2017-10-22 20:15:42

标签: cqrs

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

  • 您收到一个命令,用于保留A
  • 的新条目
  • 您写入附加日志并处理更新您的州
  • 读取端拾取并无法插入数据库

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

1 个答案:

答案 0 :(得分:1)

我相信你可以从中获得灵感:

How to handle set based consistency validation in CQRS?

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

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