我的應用程序中有一些實體類。我想將所有更改保存到歷史記錄表中的這些實體和一些發生的事件。問題是實體類是不同的,建立在不同的原語和不同的關係之間。設計模式適合許多實體歷史?
例如在購物應用程序中可以有:用戶,物品,交易,手錶。我希望能夠表現出一定的活動日誌的用戶是這樣的:
- 16:00您已經在事務2468購買「指環王」,
- 15:30您已經添加了「霍比特人「到您的監視列表中,
- 15:00觀看項目的」Silmarillion「已將價格從15降至12,50歐元,
- 14:30您已將名稱從」Tomasz「更改爲」Tom「。
有參與此日誌很多東西:
- 新的交易實體2468與物品「魔戒」,與項目「霍比特人」和我的帳戶鏈接
- 新觀察實體,
- 更新的項目價格(但是舊價格和新價格都存儲),
- 已更新用戶名(包括舊的和新的存儲的)。
我的主要問題是如何跟蹤這些數據?
- 我應該擁有許多與許多實體表一樣多的表來保持其更改嗎? UserVersions,ItemVersions等?
- 我應該查詢所有版本表,加入並排序結果來生成這個日誌?
- 或者也許應該有一個表版本與列「實體」,「OldValue」,「NewValue」 - 約束和外鍵?這不是太骯髒的解決方案嗎?
- 是否有這樣的設計模式?
- 最後如果你知道 - Facebook如何做到這一點? :)
謝謝你,我認爲你的答案現在是最完整的,它鏈接到許多相關的資料來源,並提供進一步的解釋。 –
參見http://cqrsinfo.com/documents/ –