性能不在是工程师所担心的话题
客户面临的问题
随着用户的市场发展,业务应用的持续增加,其IT基础设施的架构越来越复杂,报表的需求也越来越多样化、复杂化,做报表现在已经不在是开发工程师的项目需求中的难点。随便在网上一搜,国内外报表工具比比皆是,但是随着用户业务数据越来越多,所要抽取数据和运算的展现郊率上,才是现在工程师所担心的真正问题。
那么,究竟什么报表工具才可以在真正的在面临此种需求时可以迎刃而解,成为开发工程师对症状下药的良方呢?
润乾的解决方案
让我们看一下国内有着十多年报表行业的龙头老大润乾报表,在面对需要解决的性能问题上,所提供的一整套性能优化机制,是如何帮我们解决此种需求的。
润乾报表为简单报表单独提供了行式报表模型,所谓行式报表,是指以行为存储和计算单元,而不是以格为存储和计算单元。因此大大减少了内存的占用,加快了计算的速度。同时在输出展现的时候,一边计算一边展现输出,从而避免了客户端的等待时间。
数据量较大的报表中,常常可见多源关联的报表。多源是指一个报表的数据来源来自多个物理数据表(或类似数据体),甚至是多个物理数据库。这里的”多个”常常不是两个三个,而是七八个乃至十几个。多源往往带来分片。分片是指报表的纵向或横向或双向同时被分成了多个区域,每个区域规则不同,而又可能相互运算。
润乾报表采用了多源关联模型,可以把多个物理表单独取到报表里,取之前先进行group运算,到了报表里再进行关联,不需要叉乘的过程,运算复杂度大大降低。
在报表对目标数据进行综合计算之前,首先对请求的报表进行检查,把涉及常量,数据集字段,单元格引用的部分先计算或映射出来,从而避免计算报表时的重复计算或重复映射。
润乾报表的分页计算方案,巧妙地利用起始行和结束行参数,结合多数据集的报表模型,可以很轻松地实现比较复杂的报表边计算边输出,同时也能够在打印的时候实现边计算边打印,从而在根本上解决了大数据量内存溢出的问题。
润乾报表的分页计算模型,可以灵活运用和发挥,对报表样式没有限制,只要能够把起始行和结束行参数利用得当,很复杂的报表也可以进行分页计算。
目前润乾报表能够实现分页计算的报表样式,除了简单报表,还包括分组报表、表头合计、主子报表、多源分片等。
润乾报表提供的大报表运算中断的方案,可以由管理员访问运算中的报表列表,然后选择特定的报表执行中断。从而避免了客户端不希望继续运算时,服务器仍旧在计算的问题。也可以人为地把某个严重占用服务器端资源的报表给终止了,使得大量的小报表可以快速运算。
润乾报表4.0提供的缓存机制,既考虑了参数和宏对报表的影响,还考虑了运算前的报表、运算后的报表、分页后的报表,从三个层面对报表进行了缓存控制,可以说是全方位的控制,非常周到、详尽。
润乾报表采用的是嵌入式集成方式,以jar包的方式供用户集成,因此没有独立的服务器,可以共享应用服务器的集群能力。从这个意义上说,应用服务器的集群能力代表了润乾报表的集群能力。
作为专业的服务器厂商,应用服务器的集群能力是比较完美的,因此可以最大限度地满足用户对集群的要求。
静态并发控制是指传统的固定并发数,凡是超过并发数时,多余的线程排队等待。静态并发控制可以和动态并发控制结合使用,也可以单独使用。在没有达到动态并发控制前,以静态并发数为准。
润乾报表引入了动态并发控制的概念。由用户根据服务器硬件的配置,预先设置一个允许并发运算的最大格子数,然后由服务器运算的过程中,动态的智能判断当前并发访问的格子数是否达到预设值,如果达到,则控制新进访问线程,使之等待,等有空闲时接着计算。这种动态并发控制,避免了传统报表工具简单呆板的并发数控制,更加灵活,更加合理。
调度器是用来控制任务的自动执行的。润乾报表提供的调度器,就是用来控制报表自动计算、自动导出和自动填报的调度程序。
解决方案总结
润乾报表在报表展现、报表运算、并发、缓存、调度、API、用户体验等各个阶段以及各个方面提供一套完整的性能优化解决方案,使润乾报表更有能力解决困难问题,并且明显的降低成本与提高效率,真正实现商业智能的随需而动。
参考文章:《润乾报表性能优化》