報表應用的計算中介層,報表計算中介層

來源:互聯網
上載者:User

報表應用的計算中介層,報表計算中介層

        在傳統的報表應用中,來源資料的計算一般有三種方式:1、報表工具直接連接資料庫取數,來源資料的計算是提交SQL由資料庫完成的;2、報表工具利用自身的計算能力(單元格函數或格間計算),實現部分資料計算;3、報表工具通過API調用Java程式實現資料計算。

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

        首先,來看資料庫計算。

        資料庫計算的優勢是:資料一致性較好,安全性較高。

但是,採用資料庫計算報表來源資料的問題也比較多:1、報表工具從資料庫中取出資料時,要通過JDBC,因為需要做資料流的對象轉換,所以關聯式資料庫的JDBC都比較慢,這是一個始終沒有解決的問題;2、簡單SQL語句執行的速度較快,但複雜SQL則不容易最佳化。如果是預存程序中用for迴圈來fetch計算的話有可能要比Java慢;3、資料庫是扁平結構,不能以多級目錄的形式來管理資料,只適合管理數量較少的表。資料庫計算會產生大量相互關聯的中間表,出現很多容易混淆的表名,可管理性較差。4、Sql存在:不支援分步計算、集合化不徹底、缺乏有序集合、不支援對象引用的問題。這就造成SQL和預存程序不符合自然思維習慣,編程比較困難。5、資料庫的建設和維護成本都比較高。

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

        由於資料庫計算方案的上述不足,很多報表程式員會直接利用報表工具的單元格函數和格間計算等方式來實現來源資料計算。報表工具計算的不足是:1、為了完成計算,報表不得不採取隱藏行列的方式儲存中間結果,會增加記憶體消耗,降低效能;2、報表單元格除了儲存單元格值,還保留了很多顯示格式屬性(比如:字型、大小、背景色等等),帶著這些屬性計算,也會降低效能;3、有些複雜計算是報表工具本身無法完成的,比如:不規則運算、需要多個步驟完成的計算等。

        第三,來看Java程式計算。

       Java程式計算的優勢是在資料庫和報表工具之間形成了中間計算層,好處是:1、可以訪問檔案中的資料,並採用多線程計算,能夠提升報表效能和容量;2、支援多樣性資料來源;3、有效減輕資料庫負擔;4、實現T+0大資料即時查詢,可以在報表中看到最新產生的資料。但是,由於Java程式在結構化和半結構化計算方面的類庫較少,實現上述計算很複雜。而且,Java程式和報表範本是分離的,在代碼管理上也很麻煩。如果是對資料集的少量調整計算,也要折騰Java的開發環境、代碼管理、打包部署等,就太麻煩了。

      因此,Java程式計算實際上形成了報表應用的計算中介層,是三個方式中比較具備優勢的。但是,Java程式計算問題也還是很多。

      可以考慮採用潤乾集算報表的來源資料計算方案,可以在報表應用和資料庫之間形成顯式的計算中介層,具備上面所說的Java程式的4個優勢。同時,集算報表又解決了Java程式計算的不足,體現在:1、集算指令碼提供了大量的結構化和半結構化計算類庫,特點是:分步計算、完全的集合運算、有序集合運算和對象引用機制等,更接近自然思維,編程更簡單,代碼量更少。2、集算指令碼可以直接在報表檔案中編寫,也可以儲存為dfx檔案和報表檔案成對存放在目錄中,代碼管理簡單。3、集算指令碼是解釋執行的,無需編譯、打包。4、集算指令碼封裝了Java的多線程編程,化繁為簡,提高了開發效率。

      潤乾集算報表和傳統方案的結構對比如下:


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.