2011-07-29 41 views
3

我每馬丁福勒斯最近的文章中試圖總結我的周圍CQRS(命令查詢響應分離)主管:CQRS在Rails環境中?

http://martinfowler.com/bliki/CQRS.html

給定一個項目:

Main Database (Postgres): 
    Product has many Sales 
    User has many Sales 

Reporting Database (NoSQL - Mongodb) 
    Transaction (A Product and a Sale and a User) 

而產生的要求一個特定月份每天交易美元的圖表。

  • 我需要報告什麼控制器?
    • 一個報告控制器的意見和部分
    • 一個圖形控制器從報告數據庫拉圖形的特定信息?
  • 在這種情況下,DTO(數據傳輸對象)會是什麼?
  • 這真的是CQRS嗎?
    • 我是這麼認爲的,因爲從報表DB創建的報表/圖形不會改變狀態,只是主DB上的一個視圖?

謝謝!

+1

你也許也想讀這個:http://www.udidahan.com/2011/04/22/when-to-avoid-cqrs/ –

回答

2

如果您仍然對使用Rails調查CQRS感興趣,請查看rcqrs我創建的具有Event Sourcing庫的Ruby CQRS。

還有一個Rails 3 plugin與您的Rails應用程序集成在一起,可以使用CQRS模式來簡化用於創建命令,事件和控制器的常見任務。

最後,有一個非常簡單的示例博客Rails應用程序,以瞭解如何在Rails中使用CQRS(請參閱我的GitHub帳戶以獲取更多詳細信息)。

+0

我也可以衷心推薦LuismiCavallé的演示文稿[「CQRS飲食」](http://www.slideshare.net/cavalle/the-cqrs-diet),其中介紹了將CQRS應用於Rails應用程序的基本步驟原則。 –

+0

很酷,看起來不錯 –

2

我想你需要先閱讀更多關於CQRS的信息,然後再嘗試應用它。由於CQRS不是命令查詢響應分離,而是命令和查詢責任分離。

我建議從Greg Yuong cqrs info以及Udi Dahan和Martin Fowler的任何關於cqrs的文章開始閱讀。之後,看看cqrs的存在實現。

隨着cqrs,你通常會有兩個數據庫:讀取和寫入。 寫入數據庫通常是標準化的存儲。讀取數據庫 - 將以非規範化形式包含數據的數據庫,以最大限度地減少獲取給定數據集所需的連接數。

+0

是的,你是正確的我混淆了名字。感謝參考資料,但這並不能真正解決我提到的實現是否符合CQRS和DTO在其中的作用這一核心問題。 –

+0

您的CQRSInfo鏈接在語義上被破壞。這不是正確的鏈接,因爲域被劫持。我們在architecture.jayway.com上有一些指導。 – Henrik