我正在使用CQRS開展我的第一個項目,有些事情對我來說並不是很清楚。CQRS - 讀取端數據庫的外鍵
假設我在我的模型中有一些客戶,每個客戶都有一個訂單列表。
在我的閱讀模型(由標準關係數據庫支持)中,我將對所有客戶的列表進行投影。此外,我會對所有訂單列表進行預測。
在這第二個預測中,是否有一個外鍵與所有客戶建立關鍵表?還是立即更好地進行非規範化處理,並在訂單的表格中存儲客戶的所有相關數據?
我正在使用CQRS開展我的第一個項目,有些事情對我來說並不是很清楚。CQRS - 讀取端數據庫的外鍵
假設我在我的模型中有一些客戶,每個客戶都有一個訂單列表。
在我的閱讀模型(由標準關係數據庫支持)中,我將對所有客戶的列表進行投影。此外,我會對所有訂單列表進行預測。
在這第二個預測中,是否有一個外鍵與所有客戶建立關鍵表?還是立即更好地進行非規範化處理,並在訂單的表格中存儲客戶的所有相關數據?
我認爲這取決於您的要求。
一個學派的思想是對所有視圖模型的數據進行非規範化處理,只要你有一個一個視圖。在頻譜的另一端,你可以保持一個高度規範化的數據庫來支持你的觀點。你也可以選擇在兩者之間的某個地方。在這些決策中,在速度,存儲容量,易用性和可擴展性方面存在權衡。例如,如果您擁有數百個非常相似的視圖模型,那麼擁有更規範的數據模型可能更有意義。另一個例子可能是某個視圖比其他視圖產生更多流量的數量級 - 您可能希望比其他視圖更優化這個特定視圖。沒有一個真正的萬能解決方案。
這個瘋狂的想法如何?都做;)看看你更喜歡與他們一段時間的工作後。關於CQRS的一個偉大的事情是你有自由做出這些決定。如果您將此與事件採購和重建視圖的能力相結合,那麼您可以稍後改變主意:)