數據庫要從 Oracle 換成 MySQL,以前報表都是存儲過程寫的,怎麼遷移呢?

存儲過程沒法移植,差不多都要重新了。既然重寫,還不如從根本上解決移植問題。

原來存儲過程是“不得不用”,因爲前端的報表工具不具備複雜計算能力,而爲報表準備數據的邏輯又很複雜,用存儲過程方便些。

但存儲過程的缺點實在太多,除了不好調試,沒法擴展,無法移植,還容易造成報表應用跟數據庫的高耦合,改報表就得去數據庫裏創建 / 修改存儲過程。估計用戶也是因爲這個禁止使用存儲過程了。

一個方案是:用 JAVA 硬編碼來做複雜計算,然後給報表做呈現;但這種做法的複雜度太高了,對於報表開發來說就要很多高級程序員參與才行,不太划算。

比較好的選擇是使用帶腳本計算能力的報表工具,在報表裏就直接搞定原來存儲過程的那些計算(庫外存儲過程),而且相對簡單,原來的報表開發人員就都能搞定。
畫了一個簡圖,可以感受一下:

png

新型報表應用結構中,存儲過程挪到庫外做了以後,數據庫還是要承擔一點計算任務的,比如過濾、分組之類,主要是爲了減少取數的 IO 消耗。

另外,新結構的庫外“存儲過程”支持異構庫或外部數據混合計算,比原來數據庫的存儲過程功能還擴展了;重要的是解決了報表應用和數據庫的緊耦合,以後應用可以任意擴展,數據庫更換也不怕了。

這裏詳細介紹了帶腳本計算能力的報表工具如何完成庫外存儲過程,供參考: 怎樣減少報表開發中對存儲過程的依賴

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章