2012-04-12 26 views
-1

所以我有一個設計決定。我正在建立一個網站,所以速度將是最重要的。我的價值取決於其他價值。我有兩個選項:什麼更方便資源明智:在運行時生成值或保存生成的值到數據庫?

1-從數據庫中檢索我的對象,然後生成依賴值/對象。

2-檢索已存儲在數據庫中的依賴值的對象。

我在實體框架中使用ASP.NET MVC。

我應該考慮哪些因素?

+0

您需要更具體地瞭解您所生成數據的性質。這兩種方式都沒有區別是很有可能的。 – 2012-04-12 23:34:32

回答

1

問自己這個問題:

基於業務規則的相關值?

如果是這樣,那就不要把它們存儲在數據庫中 - 不是因爲你不能不應,而是因爲這是很好的做法 - 你應該只擁有業務規則數據庫如果這是最好的或唯一的地方,不僅僅是因爲你可以

將對象序列化到數據庫通常比在普通編譯代碼中創建對象要慢。數據庫訪問通常很快,這是序列化的行爲很慢。但是,如果你有一個耗時的複雜對象創建過程,那麼序列化可能會更快,特別是如果使用自定義序列化方法。

Sooooo ....如果你的'對象'是一些計算/派生值相對正常的數據對象,那麼我建議你將'對象'的值存儲在數據庫中,從數據庫中讀取這些值,然後將它們映射到在編譯代碼*中創建的數據對象,然後計算您的相關值。 *請注意,這是標準數據檢索 - 有些人使用ORM,有些人手動將值映射到對象。

3

在存儲派生值時,您幾乎肯定不會看到性能優勢。顯然,如果依賴關係非常複雜或依賴於大量數據,這可能會發生變化,但是您沒有提及關於數據的任何具體內容,所以我只能說泛泛而談。

換句話說,不存儲,因爲它們引入更新異常(換句話說是完全導數值,一個人必須有知識約和更新數據時,而不是它是爲代碼,這些依賴儘可能明確和清楚)。

+0

OTOH,「計算列」或「物化視圖」可以用來乾淨地解決這個問題的某些形式...... – 2012-04-12 23:44:35