2014-06-18 106 views
2

我正在使用ZK框架,Hibernate,Spring和Mysql的項目。使用JPA(休眠)VS存儲過程

我需要從Mysql數據庫生成一些圖表,但是在計算了我需要計算這些圖表值的對象數量後,我發現它有1400多個對象和相同數量的查詢和事務。

所以我想如果在Mysql中使用存儲過程來計算這些值並將它們保存在單獨的表中(使用接近數據倉庫的架構),然後使用我的Web應用程序來讀取這些表的值並顯示他們作爲圖表。

我想知道速度和性能,哪些方法更好?

謝謝

回答

2

沒有辦法告訴,真的,沒有更多的細節。然而:

你想要做的就是所謂的非規範化。這是加速報告並使其更容易的公認技術。 (如果沒有,你denormalisation失敗!)當它工作它具有以下優點:

  • 報告跑得更快
  • 報告代碼更容易編寫

在另一方面:

  • 報告數據是過時的,只包含數據的時候,你 最後做了計算

這樣做的一種極端形式是採用OLTP數據庫(標準數據庫)並將其導出到Analysis數據庫(又名Cube或OLAP數據庫)中。

非規範化問題之一是a)它通常是一項重大的工作,b)它增加了額外的代碼,增加了複雜性,從而增加了支持成本,c)它可能沒有足夠的(或任何)差異。因此,通常不會這樣做,直到你知道你有問題。當您完成基本數據庫的報告並發現它們太難寫入和/或運行速度太慢時,就會發生這種情況。我強烈建議,只有當你達到那個點時,你纔會去反規範化。

有些時候你不需要那樣做,但在25年的發展中我只看到過1個這樣的例子;該決定得益於管理層爲了政治目的而使用OLAP數據庫的願望。