我们公司希望为我们的金融系统实施事件采购/CQRS。
对于只读模型,我们应该应用数据库约束吗?我知道约束不应该在写事件存储端。只读模式方面如何?
包括:
发布于 2017-08-16 13:27:36
对于只读模型,我们应该应用数据库约束吗?我知道约束不应该在写事件存储端。只读模式方面如何?
那可能没什么用处。
从根本上讲,有两个案例。一是读取模型中的约束与域模型的约束不一致。如果域模型是权威的,那么读取模型是错误的。
另一个是约束是对齐的,但是read模型认为约束被违反了,因为它对正在发生的事情有一个不完整的视图。IE,域模型发出事件[A,B,C,D]
,但读取模型现在只看到[A,B,C]
。
现在,读取模型中的数据应该被理解为陈旧;因此,只有在域的新的、一致的视图可用时才更新读取模型并不是不合理的。
但即便如此,仍然不清楚该约束是由数据存储还是由填充存储的事件使用者强制执行。
我不确定数据库约束会在正常操作期间为您购买任何东西。
在异常操作期间,它们可能是一个有用的指南;如果有人试图“手工”修补读取模型,那么数据库中的约束的冗余副本可能会防止数据输入错误。(读取模型的通常恢复过程是销毁缓存副本并重新构建它;但如果这需要相当长的时间,则可以通过修复现有副本来更好地服务SLO,直到新副本可用为止)。
发布于 2017-08-24 18:42:37
我在读取模型上使用db约束。
您知道,您可以将db约束用于多个目的,它们都与写入模型中使用的业务约束无关。
https://stackoverflow.com/questions/45698761
复制相似问题