为了准备将来的应用程序设计,我已经开始研究CQRS风格的应用程序,特别是Ncqrs。
虽然大多数概念都很清楚,但我对快照的概念感到有点困惑。
我可以理解为什么从它的事件重建一个对象是非常消耗资源的,但是由于反规范化程序将使用实体的最新状态(或者实际上是视图所需的最新值)来构建读取模型,所以为什么要为从快照重建对象的概念而烦恼呢?
我认为这样的场景只会零星和按需发生,主要是在升级版本或调试之后发生,这样的想法正确吗?
如果不是,在什么情况下拍摄快照比较好?
发布于 2011-07-31 20:59:18
我必须承认,我不是一个事件采购的大用户(或者至少,我没有充分利用它),但快照在重建聚合时有助于提高系统的性能。您只需重新构建到最后一个快照,而不是从时间0开始重新构建所有事件。因此,如果您的系统中有大量事件,并且让您的事件源重新构建您的聚合开始影响您的命令端的性能,您可以考虑使用快照。
看看他去年教过的notes from a Greg Young DDD/CQRS class;它可能会让你对他在快照方面的一些想法有所了解。
希望这能有所帮助。祝好运!
发布于 2011-08-02 05:35:28
当聚合根有大量事件(也许是1000+?)时,快照很有用。但要考虑的是,在大多数情况下,您的聚合是短暂的,因此只有少量的事件;在这种情况下,快照可以被视为早期优化;这不一定是一件好事。
https://stackoverflow.com/questions/6883134
复制相似问题