2015-09-28 51 views
2

我已閱讀了CQRS上的多個博客,他們都解釋說,在寫端事件持久存儲在事件存儲中,並且在請求時,事件將在聚合中檢索並重播。CQRS - 讀取端的事件重播

我的問題是爲什麼在閱讀方不需要事件在聚合上重播?

回答

5

因爲您的閱讀方不使用聚合。

閱讀方實現爲投影,它通過聚集命中的事件流計算當前狀態,並將當前狀態保存在某個存儲區或內存中。閱讀方面的一個時間點是爲客戶提供一個當前狀態。

0

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

讓我們假設您使用事件採購爲一個銀行賬戶建模。該帳戶上的每項操作都會導致事件持續存在。幾年後,您有數百個與該銀行賬戶相關的事件。現在,如果你想顯示該賬戶的餘額,你會重播所有事件來計算餘額?如果有很多賬戶,重播事件只是爲了計算餘額,將會是應用程序的性能瓶頸。我們甚至沒有提及從銀行賬戶顯示並描述當前賬戶狀態所需的其他信息。

這就是爲什麼我們將聚合狀態的快照存儲在讀取端,因爲主要是讀取端用於演示目的。我們希望保持我們系統的這一部分簡單。