如何处理域模型更新和存储事件的不变性?

时间:2015-12-10 13:16:45

标签: domain-driven-design cqrs event-sourcing

我知道不应允许事件采购中的事件发生变化。但内存状态呢?如果域模型需要以某种方式更新,那么旧的模型仍然不应该重播旧模型吗?我的意思是不应该总是重播事件并获得与以前相同的完全状态,或者只要存储的事件保持不变,这种状态是否也可以接受?理想情况下,我认为我希望能够获得一个状态,因为它的旧模型,规则和不是。但除此之外,我当然也希望将旧事件重播为新模型。理论对此有何看法?

1 个答案:

答案 0 :(得分:3)

预测事件结构更改

您应该始终尝试反映事件在事件应用程序机制中具有不同结构的事实(即,您在何处读取事件并将其应用于模型)。 毕竟,事件的早期结构当时是一个有效的结构。

这意味着你需要为这种情况做好准备。设计足够灵活的事件应用程序机制,以便您可以支持这种情况。

迁移存储的事件

只有作为最后的手段才能迁移存储的事件。如果你这样做,请确保你了解后果:

  • 哪些其他系统消耗了遗留事件?
  • 如果我们更改存储的事件,我们是否有问题?
  • 迁移是否适用于我们的系统(在具有完整数据集的QA环境中验证)?