0

0

报表应用的计算中间层

php中文网

php中文网

发布时间:2016-06-07 16:13:24

|

1361人浏览过

|

来源于php中文网

原创

在传统的报表应用中,源数据的计算一般有三种方式:1、报表工具直接连接数据库取数,源数据的计算是提交sql由数据库完成的;2、报表工具利用自身的计算能力(单元格函数或格间计算),实现部分数据计算;3、报表工具通过api调用java程序实现数据计算。 下面

在传统的报表应用中,源数据的计算一般有三种方式:1、报表工具直接连接数据库取数,源数据的计算是提交sql由数据库完成的;2、报表工具利用自身的计算能力(单元格函数或格间计算),实现部分数据计算;3、报表工具通过api调用java程序实现数据计算。

下面,我们比较一下这三种方式,并探讨最佳方案。

首先,来看数据库计算。

数据库计算的优势是:数据一致性较好,安全性较高。

但是,采用数据库计算报表源数据的问题也比较多:1、报表工具从数据库中取出数据时,要通过JDBC,因为需要做数据流的对象转换,所以关系数据库的JDBC都比较慢,这是一个始终没有解决的问题;2、简单SQL语句执行的速度较快,但复杂SQL则不容易优化。如果是存储过程中用for循环来fetch计算的话有可能要比Java慢;3、数据库是扁平结构,不能以多级目录的形式来管理数据,只适合管理数量较少的表。数据库计算会产生大量相互关联的中间表,出现很多容易混淆的表名,可管理性较差。4、Sql存在:不支持分步计算、集合化不彻底、缺乏有序集合、不支持对象引用的问题。这就造成SQL和存储过程不符合自然思维习惯,编程比较困难。5、数据库的建设和维护成本都比较高。

第二,来看报表工具计算。

由于数据库计算方案的上述不足,很多报表程序员会直接利用报表工具的单元格函数和格间计算等方式来实现源数据计算。报表工具计算的不足是:1、为了完成计算,报表不得不采取隐藏行列的方式储存中间结果,会增加内存消耗,降低性能;2、报表单元格除了存储单元格值,还保留了很多显示格式属性(比如:字体、大小、背景色等等),带着这些属性计算,也会降低性能;3、有些复杂计算是报表工具本身无法完成的,比如:不规则运算、需要多个步骤完成的计算等。

第三,来看Java程序计算。

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载

Java程序计算的优势是在数据库和报表工具之间形成了中间计算层,好处是:1、可以访问文件中的数据,并采用多线程计算,能够提升报表性能和容量;2、支持多样性数据源;3、有效减轻数据库负担;4、实现T+0大数据实时查询,可以在报表中看到最新产生的数据。但是,由于Java程序在结构化和半结构化计算方面的类库较少,实现上述计算很复杂。而且,Java程序和报表模板是分离的,在代码管理上也很麻烦。如果是对数据集的少量调整计算,也要折腾Java的开发环境、代码管理、打包部署等,就太麻烦了。

因此,Java程序计算实际上形成了报表应用的计算中间层,是三个方式中比较具备优势的。但是,Java程序计算问题也还是很多。

可以考虑采用润乾集算报表的源数据计算方案,可以在报表应用和数据库之间形成显式的计算中间层,具备上面所说的Java程序的4个优势。同【本文来自鸿网互联 (http://www.68idc.cn)】时,集算报表又解决了Java程序计算的不足,体现在:1、集算脚本提供了大量的结构化和半结构化计算类库,特点是:分步计算、完全的集合运算、有序集合运算和对象引用机制等,更接近自然思维,编程更简单,代码量更少。2、集算脚本可以直接在报表文件中编写,也可以保存为dfx文件和报表文件成对存放在目录中,代码管理简单。3、集算脚本是解释执行的,无需编译、打包。4、集算脚本封装了Java的多线程编程,化繁为简,提高了开发效率。

润乾集算报表和传统方案的结构对比示意图如下:

\

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.6万人学习

Excel 教程
Excel 教程

共162课时 | 12万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号