【数据蒋堂】第10期:报表的数据计算层

我们在上一期已经解释了报表应用结构中数据计算层的必要性,以及可以使用报表工具自定义数据源接口来实现计算层。在计算层中要完成一些复杂的计算逻辑,因此要有可编程的能力,而基于自定义接口可以采用报表工具的宿主语言(即用于开发报表工具的程序设计语言)进行开发,在功能方面没有问题,不过,实际应用中却仍有不少缺陷。更好的方式是实现一个显式的数据计算层,在其中提供可解释执行的脚本功能,把数据源计算独立出来。

我们从四个方面来分析后者的优势。

代码编写

报表工具的宿主语言一般是Java、C#等高级语言,这类语言针对结构化数据集的支持很有限,虽然都能做,但却非常繁琐,简单做个求和运算都需要写数行代码的循环来实现。而报表数据源处理则大量涉及批量数据运算,采用高级语言开发时会导致动辄数百行的冗长代码,编写和调试都很困难。

专门为数据计算设计的脚本则能够提供丰富的结构化数据集运算功能,可以很方便地实现批量数据计算。代码更短不仅是工作量更少、调试方便,而且还有利于整体了解和把握算法。如果语言设计得好,大多数报表的数据源准备算法都可以在一屏内实现,整个算法过程一目了然。

应用耦合

报表的呈现式样是由报表工具绘制的模板来控制,报表模板一般以文件形式存放在文件系统中。如果数据准备采用自定义数据源实现,这部分代码将作为应用程序的一部分被一起编译和打包。呈现模板和数据集算法作为同一个报表的两个关键要素必须合理配合才能正常工作,但物理上却会分存于两处,甚至可能是不同人员开发的,这给修改维护报表带来麻烦,需要刻意去保持两处的一致性。

独立计算层的计算脚本和报表模板一样,都是解释执行的,脚本也可以文件形式与和报表模板放在一起,报表维护时很容易保证这两部分一致,这方面不存在应用耦合问题。

热切换

报表的数据集算法如果使用自定义数据源实现,那就会成为应用程序的一部分,发生修改时就需要和整个应用程序一起重新编译打包,并且在大多数情况时需要将应用停机后再重启。而报表是个业务稳定性相对较差的功能,经常会增加和修改,这样就会导致应用程序频繁重启。虽然Java等开发机制也支持热加载,但使用复杂,大多数应用程序员难以掌握。而且一旦加载后的程序就不会被清除,即使不再有用也会一直占据内存,热加载技术并不很合适应用于报表数据源。

类似地,热切换对于使用独立计算层的脚本也不再是问题,有报表修改只要修改呈现模板和相应的计算脚本。因为脚本是解释执行的,应用程序本身并不需要改变,也就没有必要停机重启。被修改的报表在访问时临时计算即可。

开发人员

使用Java等高级语言实现报表数据集准备时,需要在代码中引用数据库连接、基础类库等各种环境信息,还要了解和遵循整个应用程序的代码规范以保持协调,这常常是项目组中的专业程序员才能掌握的技能。而开发报表数据集只要了解数据结构和运算逻辑,其实用户方有不少技术人员都拥有这个能力,但苦于难以理解开发环境而很难自由实现新的报表。

有独立计算层时,报表开发需要的各种环境信息可以事先在应用程序中配置好,使用脚本编程时也不必关心整个应用的代码规范,报表开发人员只要关心数据结构和运算逻辑,可以用于开发报表的人员更多,以适应报表频繁修改的业务特性。

原文发布时间为:2017-6-8

本文作者:蒋步星

本文来自合作伙伴“数据蒋堂”,了解相关信息可以关注“数据蒋堂”微信公众号

时间: 2024-08-07 21:37:47

【数据蒋堂】第10期:报表的数据计算层的相关文章

开源大数据周刊-第12期

阿里云E-Mapreduce动态 E-Mapreduce团队 1.3.4版本 (已经发布) 升级jdk到1.8 升级Hadoop到2.7.2 添加python2.7.1及python3.4版本 添加numpy库 支持Presto.phoenix.jstorm.oozie 支持Hadoop跟Hbase混合部署 支持深圳.上海机房 1.4版本(正在研发): 用户执行计划及集群运行状态自定义报警 1.4.1版本 集群整体运行情况的仪表盘 集群状态监控报警 资讯 5W1H(六何分析法)全景洞察大数据 我

开源大数据周刊-第15期

阿里云E-Mapreduce动态 E-Mapreduce团队 1.4版本(已经发布) 作业运行失败报警 作业并行提交 添加sqoop.shell类型的作业 1.4.1版本(正在研发) 完善失败报警 完善定时任务,增加小时.分钟定时任务 1.5.0版本 (正在研发) 集群整体运行情况的仪表盘 集群状态监控报警 1.5.0版本 交互式查询(支持hive.spark) 资讯 中国大数据发展10大趋势5大挑战 中国大数据发展10大趋势5大挑战,如:大数据的首席数据官开始崛起.可视化推动大数据平民化.智能

开源大数据周刊-第13期

阿里云E-Mapreduce动态 E-Mapreduce团队 1.3.4版本 (已经发布) 升级jdk到1.8 升级Hadoop到2.7.2 添加python2.7.1及python3.4版本 添加numpy库 支持Presto.phoenix.jstorm.oozie 支持Hadoop跟Hbase混合部署 支持深圳.上海机房 1.4版本(正在研发): 用户执行计划及集群运行状态自定义报警 1.4.1版本 集群整体运行情况的仪表盘 集群状态监控报警 资讯 从Hadoop Summit 2016看

开源大数据周刊-第17期

阿里云E-Mapreduce动态 E-Mapreduce团队 1.4版本(已经发布) 作业运行失败报警 作业并行提交 添加sqoop.shell类型的作业 1.4.1版本(已经发布) 完善失败报警 完善定时任务,增加小时.分钟定时任务 1.5.0版本 (正在研发) 集群整体运行情况的仪表盘 集群状态监控报警 1.6.0版本 交互式查询(支持hive.spark) 资讯 大数据投资人必读:中国大数据发展与投资分析报告 随着大数据蕴涵价值的逐步释放,使其成为IT信息产业中最具潜力的蓝海.大数据正以一

开源大数据周刊-第16期

阿里云E-Mapreduce动态 E-Mapreduce团队 1.4版本(已经发布) 作业运行失败报警 作业并行提交 添加sqoop.shell类型的作业 1.4.1版本(正在研发) 完善失败报警 完善定时任务,增加小时.分钟定时任务 1.5.0版本 (正在研发) 集群整体运行情况的仪表盘 集群状态监控报警 1.6.0版本 交互式查询(支持hive.spark) 资讯 Apache Spark 2.0.0 发布,APIs 更新 该版本主要更新APIs,支持SQL 2003,支持R UDF ,增强

开源大数据周刊-第14期

阿里云E-Mapreduce动态 E-Mapreduce团队 1.4版本(正在发布): 作业运行失败报警 作业并行提交 添加sqoop.shell类型的作业 1.4.1版本 集群整体运行情况的仪表盘 集群状态监控报警 资讯 创业公司如何构建数据指标体系? 对于庞大的创业群体和数据运营新手来说,这将是一篇非常具有参考价值的干货贴,作者将在文章中深入阐述两套构建指标体系的方法,即关键指标法和海盗指标法. 怎样选择数据平台的建设方案 文中对比了MPP.Hadoop传统的数据库等不同方案的优缺点,值得一

Teradata大中华区CEO:大数据未到爆发期

Teradata天睿公司大中华区首席执行官辛儿伦新浪科技讯 10月9日上午消息,Teradata天睿公司大中华区首席执行官辛儿伦日前接受新浪科技专访时指出,大数据确实已经成为IT行业的新热点,但目前还没有到达应用爆发阶段.中小企业需要大数据随着云计算技术的发展,"大数据"目前成为IT行业讨论的热点,很多IT公司也顺势推出了大数据分析解决方案.作为一家专注数据分析和商业智能的厂家,Teradata天睿公司在大中华区.美国和其他国际市场正积极参与大数据时代带来的新机遇.辛儿伦表示,随着大数

开源大数据周刊-第29期

阿里云E-Mapreduce动态 E-Mapreduce产品即将发布的版本信息如下: 1.5.2版本 增加预定制配置,如试用型/入门型/计算型/内存型等 增加包年包月自动续费功能 1.6.0版本 交互式查询(支持Hive.Spark) 资讯 CIO时代学院院长姚乐:大数据的行业应用策略 关于大数据的发展,CIO时代学院院长姚乐认为有三个趋势值得我们关注:第一.数据资源鉴权问题:第二.与云计算的深度融合:第三.与人工智能的深度融合. 美国大选背后的个人隐私与大数据 美国总统竞选从来都是一项注重公众

【数据蒋堂】第3期:功夫都在报表外-漫谈报表性能优化

应用系统中的报表,作为面向业务用户的窗口,其性能一直被高度关注.用户输入参数后都希望立即就能看到统计查询结果,等个十几二十秒还能接受,等到三五分钟的用户体验就非常恶劣了. 那么,报表为什么会慢,又应当从哪里入手进行性能调优呢? 数据准备 当前应用中的报表大都用报表工具开发,当报表响应太慢时,不明就里的用户就会把矛头指向使用报表工具的开发人员或者报表工具厂商.其实,大多数情况报表的慢只是个表现,背后的原因是数据准备太慢,在数据进入报表环节之前就已经慢了,这时再去优化报表开发或压迫报表工具并没有用处