在准备未来的应用程序设计时,我已经开始对CQRS样式的应用程序进行一些调查,特别是Ncqrs。
虽然大多数概念都很清楚,但我对快照的概念感到有些困惑。
我可以看到为什么从其事件中重建对象可能会耗费大量资源,但是因为非规范化器将使用实体的最新状态(或实际上是视图所需的最新值)来构建读取模型,为什么还要麻烦从快照重建对象的概念?
我是否认为这种情况只是偶尔发生并且按需发生,主要是在升级版本或调试之后?
如果没有,拍摄快照会有什么好处?
答案 0 :(得分:2)
我不得不承认我不是事件采购的大用户(或者至少,我没有充分利用它),但快照有助于在重建聚合时系统的性能。您只需要重建回到上一个快照,而不是从0时刻重建所有事件。因此,如果系统中有大量事件并且事件源代码重建,则聚合开始影响命令端的性能,您可以考虑使用快照。
去看看他去年教过的notes from a Greg Young DDD/CQRS class;它可能会给你一些关于快照来自哪里的想法。
希望这会有所帮助。祝你好运!
答案 1 :(得分:0)
当您的聚合根有大量事件(可能是1000+?)时,快照很有用。但需要考虑的是,在大多数情况下,您的聚合是短暂的,因此会有少量事件;在这种情况下,快照可以被视为早期优化;这不是一件好事。