我試圖編寫一個「撤消」或「回滾」類型的場景。我的一部分人認爲我已經過分複雜化了,而且之前一定已經解決了。用數據庫撤消
背景:我有一個產品(例如一本書),該產品有20個領域。產品具有媒體類型(PDF,硬拷貝,EPUB),每種媒體類型有多個定價(價格,地點,即歐洲,亞洲,美國)。
看着前面的問題,這個紀念圖案似乎是最接近的,但我不知道如何去做多層次。
例如,變化1 - 創建產品「編碼傻瓜」,它是在硬拷貝可用,適用於$ 100在歐洲和$ 75亞洲
變化2 - 改變歐洲硬拷貝價格到90美元。添加PDF,它的成本爲歐洲$ 90和$ 75亞洲
變化3 - 刪除硬拷貝記錄
更改3是一個錯誤,我想回滾到更改2.
Lookingatpreviousquestions,Mementopattern似乎是最接近的,但我會重複一個可怕的很多數據。即在變更2 & 3中,您正在重複產品,媒體和定價。
我使用的數據集有近1,000,000個產品。 (上面的例子被簡化了)實際上,一個產品有大約50個字段,媒體類型有大約15個字段
有沒有更好的方法?
我說過數據庫,因爲你必須將數據存儲在某個地方。我讀過的很多例子都過於簡化,並且說「只是像xml一樣方便地將數據序列化」。在這種情況下,在xml中保存狀態是不現實的 – 2010-07-20 23:05:41
數據是指數據的變化嗎?如果兩種模式都這樣,那麼存在可以在數據庫中保存的「更改對象」(通過orm f。ex。)。如果磁盤空間有問題,可能需要注意刪除最早的某個時間點。但除此之外,我會將其視爲正常數據。 – hackbert 2010-07-20 23:25:31