2013-03-27 37 views
7

我已經看到很多關於EventStores的內容,但所有文章都與關於CQRS的討論結合在一起。沒有CQRS的EventStore

我們希望使用EventStores來集成有界的上下文,但想要堅持使用傳統的ORM來讀/寫聚合,以避免命令/查詢和單獨的讀模型,這在我們的例子中會增加太多的複雜性。

由於它很受歡迎,所以一起討論這兩個概念,人們相信它們意味着一起生活 - 與實施用於聚合/ CQRS /閱讀的EventStores相比,在不使用CQRS的情況下執行EventStore'lite'模型也是?

+1

爲了使用事件存儲方法,你八九不離十需要有所有*數據更改*操作由導致系統命令併產生一個事件(然後您可以存儲和重放)。這在CQRS環境中非常合適 - 但我不明白爲什麼你自己也無法創建這樣一個系統 - 它只是需要紀律來處理通過命令和觸發事件的所有數據更改來報告什麼是發生了。 – 2013-03-27 09:48:09

回答

4

運行至NoSql Distilled - 您幾天內不做任何事就可以節省大量時間,但讀取它並繪製出您要做的事。如果你是「閱讀/寫作聚合」,你應該考慮RavenDB這樣的數據庫。

注意,事件存儲標籤是針對JOliver事件存儲,它具有爲重點的建築概念

你也有東西在略微向後去生產活動,您的域名被建在一個特定的方便的方式。關鍵的東西,你在你的問題斷定事情的方式對比(套用嚴重和/或不公平的:我想用事件賣場剛剛店內活動 - 我可以做其他自己)

  1. 事件批處理總計 - 其事件管理的實際單位

  2. 調度到某事。

如果您不想要事件源域模型,請調查隊列管理解決方案。這是一件非常合理的事情 - 只是不要假裝Event Store是一個廣義的事件pub sub隊列。

將Dispatcher項目引入構建Read Model的Denormalizers是一件容易的事情 - 您可以使用各種奇特的東西,但使用熟悉的工具(如SQL SB)和簡單的數據庫層(如PetaPoco)都可以。

你真的用CommonDomain和EventStore做了一個秒殺嗎?您是否閱讀過nuget中的自述文件?你看過 JOliver視頻嗎?

+0

魯本感謝您的寶貴回覆,我找到了一個視頻http://vimeo.com/31153808可以請你把我連接到其他(你提到有2) - 找不到其他的! – g18c 2013-03-30 14:32:53

+0

@ g18c編輯英寸IIRC你找到的是最好的單身,但其他人是值得一看 – 2013-03-30 21:28:30

+0

感謝這些鏈接 - 是的視頻是偉大的,真正幫助我的理解。由於joliver以這種有條不紊的方式編寫代碼,所以實現命令和處理程序不會有太多開銷,因爲它可能會爲ORM映射節省很多時間。我敲了一個快速演示(有一個小問題)http://stackoverflow.com/questions/15723640/why-is-my-command-event-string-field-being-retrieved-as-null但到目前爲止對這個圖書館印象非常深刻 – g18c 2013-03-30 21:32:21

1

我們想用EventStores整合的限界上下文

它可以使用事件存儲作爲消息隊列與額外的好處,這是持久的和新的訂戶可以要求所有的往事。

,但要與傳統的ORM堅持讀取/寫入聚集, 避免命令/查詢和獨立的讀取模式在我們的例子 會增加太多的複雜性。

另外,通過簡單地使用單獨的read-model而不是您的行爲模型,您仍然可以獲得CQRS的一些好處。

總體而言,您可以在不使用event sourcing的情況下使用EventStore,但應確保它支持集成方案的所有要求。除了事件存儲之外,您可能還需要其他組件。更一般地說,事件存儲可以用來存儲任何時間序列數據。