最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

報表應(yīng)用的計算中間層

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 14:07:20
文檔

報表應(yīng)用的計算中間層

報表應(yīng)用的計算中間層:在傳統(tǒng)的報表應(yīng)用中,源數(shù)據(jù)的計算一般有三種方式:1、報表工具直接連接數(shù)據(jù)庫取數(shù),源數(shù)據(jù)的計算是提交SQL由數(shù)據(jù)庫完成的;2、報表工具利用自身的計算能力(單元格函數(shù)或格間計算),實現(xiàn)部分?jǐn)?shù)據(jù)計算;3、報表工具通過API調(diào)用Java程序?qū)崿F(xiàn)數(shù)據(jù)計算。 下面
推薦度:
導(dǎo)讀報表應(yīng)用的計算中間層:在傳統(tǒng)的報表應(yīng)用中,源數(shù)據(jù)的計算一般有三種方式:1、報表工具直接連接數(shù)據(jù)庫取數(shù),源數(shù)據(jù)的計算是提交SQL由數(shù)據(jù)庫完成的;2、報表工具利用自身的計算能力(單元格函數(shù)或格間計算),實現(xiàn)部分?jǐn)?shù)據(jù)計算;3、報表工具通過API調(diào)用Java程序?qū)崿F(xiàn)數(shù)據(jù)計算。 下面

在傳統(tǒng)的報表應(yīng)用中,源數(shù)據(jù)的計算一般有三種方式:1、報表工具直接連接數(shù)據(jù)庫取數(shù),源數(shù)據(jù)的計算是提交SQL由數(shù)據(jù)庫完成的;2、報表工具利用自身的計算能力(單元格函數(shù)或格間計算),實現(xiàn)部分?jǐn)?shù)據(jù)計算;3、報表工具通過API調(diào)用Java程序?qū)崿F(xiàn)數(shù)據(jù)計算。 下面

在傳統(tǒng)的報表應(yīng)用中,源數(shù)據(jù)的計算一般有三種方式:1、報表工具直接連接數(shù)據(jù)庫取數(shù),源數(shù)據(jù)的計算是提交SQL由數(shù)據(jù)庫完成的;2、報表工具利用自身的計算能力(單元格函數(shù)或格間計算),實現(xiàn)部分?jǐn)?shù)據(jù)計算;3、報表工具通過API調(diào)用Java程序?qū)崿F(xiàn)數(shù)據(jù)計算。

下面,我們比較一下這三種方式,并探討最佳方案。

首先,來看數(shù)據(jù)庫計算。

數(shù)據(jù)庫計算的優(yōu)勢是:數(shù)據(jù)一致性較好,安全性較高。

但是,采用數(shù)據(jù)庫計算報表源數(shù)據(jù)的問題也比較多:1、報表工具從數(shù)據(jù)庫中取出數(shù)據(jù)時,要通過JDBC,因為需要做數(shù)據(jù)流的對象轉(zhuǎn)換,所以關(guān)系數(shù)據(jù)庫的JDBC都比較慢,這是一個始終沒有解決的問題;2、簡單SQL語句執(zhí)行的速度較快,但復(fù)雜SQL則不容易優(yōu)化。如果是存儲過程中用for循環(huán)來fetch計算的話有可能要比Java慢;3、數(shù)據(jù)庫是扁平結(jié)構(gòu),不能以多級目錄的形式來管理數(shù)據(jù),只適合管理數(shù)量較少的表。數(shù)據(jù)庫計算會產(chǎn)生大量相互關(guān)聯(lián)的中間表,出現(xiàn)很多容易混淆的表名,可管理性較差。4、Sql存在:不支持分步計算、集合化不徹底、缺乏有序集合、不支持對象引用的問題。這就造成SQL和存儲過程不符合自然思維習(xí)慣,編程比較困難。5、數(shù)據(jù)庫的建設(shè)和維護(hù)成本都比較高。

第二,來看報表工具計算。

由于數(shù)據(jù)庫計算方案的上述不足,很多報表程序員會直接利用報表工具的單元格函數(shù)和格間計算等方式來實現(xiàn)源數(shù)據(jù)計算。報表工具計算的不足是:1、為了完成計算,報表不得不采取隱藏行列的方式儲存中間結(jié)果,會增加內(nèi)存消耗,降低性能;2、報表單元格除了存儲單元格值,還保留了很多顯示格式屬性(比如:字體、大小、背景色等等),帶著這些屬性計算,也會降低性能;3、有些復(fù)雜計算是報表工具本身無法完成的,比如:不規(guī)則運算、需要多個步驟完成的計算等。

第三,來看Java程序計算。

Java程序計算的優(yōu)勢是在數(shù)據(jù)庫和報表工具之間形成了中間計算層,好處是:1、可以訪問文件中的數(shù)據(jù),并采用多線程計算,能夠提升報表性能和容量;2、支持多樣性數(shù)據(jù)源;3、有效減輕數(shù)據(jù)庫負(fù)擔(dān);4、實現(xiàn)T+0大數(shù)據(jù)實時查詢,可以在報表中看到最新產(chǎn)生的數(shù)據(jù)。但是,由于Java程序在結(jié)構(gòu)化和半結(jié)構(gòu)化計算方面的類庫較少,實現(xiàn)上述計算很復(fù)雜。而且,Java程序和報表模板是分離的,在代碼管理上也很麻煩。如果是對數(shù)據(jù)集的少量調(diào)整計算,也要折騰Java的開發(fā)環(huán)境、代碼管理、打包部署等,就太麻煩了。

因此,Java程序計算實際上形成了報表應(yīng)用的計算中間層,是三個方式中比較具備優(yōu)勢的。但是,Java程序計算問題也還是很多。

可以考慮采用潤乾集算報表的源數(shù)據(jù)計算方案,可以在報表應(yīng)用和數(shù)據(jù)庫之間形成顯式的計算中間層,具備上面所說的Java程序的4個優(yōu)勢。同【本文來自鴻網(wǎng)互聯(lián) (http://www.68idc.cn)】時,集算報表又解決了Java程序計算的不足,體現(xiàn)在:1、集算腳本提供了大量的結(jié)構(gòu)化和半結(jié)構(gòu)化計算類庫,特點是:分步計算、完全的集合運算、有序集合運算和對象引用機(jī)制等,更接近自然思維,編程更簡單,代碼量更少。2、集算腳本可以直接在報表文件中編寫,也可以保存為dfx文件和報表文件成對存放在目錄中,代碼管理簡單。3、集算腳本是解釋執(zhí)行的,無需編譯、打包。4、集算腳本封裝了Java的多線程編程,化繁為簡,提高了開發(fā)效率。

潤乾集算報表和傳統(tǒng)方案的結(jié)構(gòu)對比示意圖如下:

\

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

報表應(yīng)用的計算中間層

報表應(yīng)用的計算中間層:在傳統(tǒng)的報表應(yīng)用中,源數(shù)據(jù)的計算一般有三種方式:1、報表工具直接連接數(shù)據(jù)庫取數(shù),源數(shù)據(jù)的計算是提交SQL由數(shù)據(jù)庫完成的;2、報表工具利用自身的計算能力(單元格函數(shù)或格間計算),實現(xiàn)部分?jǐn)?shù)據(jù)計算;3、報表工具通過API調(diào)用Java程序?qū)崿F(xiàn)數(shù)據(jù)計算。 下面
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top