2

我知道聚合根通常会重播所有事件以使自己处于正确的状态。这可能会变得低效,因此人们建议使用备忘录模式来创建聚合根的快照。我的理解是域模型与持久性无关。我也认为快照与读取模型无关。有人可以这么好心并指出快照通常保存在哪里吗?谢谢。

4

1 回答 1

1

有很多方法可以做到这一点,具体取决于您用于存储事件的实现。

大多数抽象的事件存储库(那些使用不可知的持久性存储,如 MySQL、MongoDB、Redis 等的人)通常会自己做。

如果您实现自己的机制,您可以提供快照服务和快照策略。

例如,您可能希望为每个事件或每n 个修订创建一个快照。

另一种解决方案是让您的 EventStore 实现在一些您可以订阅和异步构建快照的管上发布事件。

您也可以不时运行计划任务来构建快照。

如果您使用 EventStore 持久性存储,它是一个内置的事件存储,您可能不需要快照,并且您很可能会使用投影来构建事件流的计算状态。

作为一般建议,快照有缺点。通过使用它,您正在重新使用状态持久性而不是一系列事件。确保您确实需要它,并且没有更好的解决方案来优化您的性能。

事件通常是小型消息对象并且加载速度很快。

于 2014-06-03T09:45:21.717 回答