我想執行一些簡單的計算,同時在我的Rails應用程序中保持數據庫不可知性。DB不可知計算:存儲計算結果是否好?如果是,有什麼更好的方法來做到這一點?
我有三個型號:
.---------------. .--------------. .---------------.
| ImpactSummary |<------| ImpactReport |<----------| ImpactAuction |
`---------------'1 *`--------------'1 *`---------------'
Basicly:
ImpactAuction
持有約...拍賣(價格,數量和這樣的)數據。ImpactReport
擁有許多拍賣以及其他屬性的月度報告;它還顯示了一些基於拍賣的計算結果。ImpactSummary
包含一組報告以及一些關於特定年份的信息,還顯示了基於另外兩個模型的計算結果。
我打算做的是存儲的相關表格中這些非常簡單的計算(只是意味着,資金等)的結果,因此,閱讀這些將是快速的,並且在某種程度上我可以輕鬆地對計算結果執行查詢。
存儲計算結果是否很好?我很確定這不是一件好事,但它可以接受嗎?
它是有用的,或者我應該不打擾和執行計算在飛行?
如果這是良好的做法和有用的,有什麼更好的方式來實現我想要的?
那就是棘手的部分。 首先,我實現了一個簡單的回調鏈,它可以在保存時更新父模型的計算字段(也就是說,當創建或更新拍賣時,它會在其報表上標記some_attribute_will_change!
並保存它,這會觸發它自己的回調等)。
這種方法在創建/更新單個記錄時很合適,但是如果我想處理多個記錄,它將觸發整個鏈上的計算,以記錄每條記錄......所以我突然發現自己被迫放了一個條件在回調...取決於如果我有一個或多個記錄,我不知道如何(使用可以調用關係的類方法?在每個記錄上使用實例屬性@skip_calculations
?只是使用outdated
字段以標記父記錄以供以後計算?)。
歡迎任何建議。
獎金問題:如果我用數據庫視圖實現這一點,會被視爲DB不可知論嗎?
存儲似乎矯枉過正,但緩存可能適合 – apneadiving 2011-12-23 15:19:08
是的,我想過這個。我對緩存並不是很熟悉,你知道關於這個的很好的「noob doc」嗎?此外,它不會幫助我以數據庫不可知的方式查詢結果......如果我需要選擇計算標準的摘要,會發生什麼情況? – 2011-12-23 15:23:55
好吧,我會試試這個。只是繼續學習:D – 2011-12-27 13:01:57