2015-09-28 52 views
2

我已阅读了CQRS上的多个博客,他们都解释说,在写端事件持久存储在事件存储中,并且在请求时,事件将在聚合中检索并重播。CQRS - 读取端的事件重播

我的问题是为什么在阅读方不需要事件在聚合上重播?

回答

5

因为您的阅读方不使用聚合。

阅读方实现为投影,它通过聚集命中的事件流计算当前状态,并将当前状态保存在某个存储区或内存中。阅读方面的一个时间点是为客户提供一个当前状态。

0

我想添加Jakub Konecki解释的例子。

让我们假设您使用事件采购为一个银行账户建模。该帐户上的每项操作都会导致事件持续存在。几年后,您有数百个与该银行账户相关的事件。现在,如果你想显示该账户的余额,你会重播所有事件来计算余额?如果有很多账户,重播事件只是为了计算余额,将会是应用程序的性能瓶颈。我们甚至没有提及从银行账户显示并描述当前账户状态所需的其他信息。

这就是为什么我们将聚合状态的快照存储在读取端,因为主要是读取端用于演示目的。我们希望保持我们系统的这一部分简单。