天天看点

实现高端报表工具的缓存功能

    高端的报表工具都提供了缓存机制,避免报表重复计算带来额外性能开销,节省CPU资源,实现结果共享。报表在计算过程中,大部分时间(85%以上)都消耗在数据源(准备)上,集算器可以用简单的方法实现数据源的缓存复用,让普通报表工具也拥有缓存机制。

    实现数据源缓存有两个关键,根据报表不同的参数和宏生成不同的报表缓存;缓存超时时间需要重新计算。下面以实例说明。

    报表描述

    根据销售记录表计算各销售人员本年销售额和上年销售额,及其增长率,统计客户数与大客户数(订单金额超过10000)。报表样式如下:

实现高端报表工具的缓存功能

    该报表供公司多人查看,如果能实现现有报表工具中没有的缓存机制,能够极大地提升用户体验。

    集算器实现

实现高端报表工具的缓存功能

    A5:判断以报表名和参数命名的缓存文件是否存在,若存在并且缓存文件未超时,直接读取缓存文件,并返回结果。上述代码设置的超时时间为3600秒,该时间可设置单独的配置文件,使用时直接读入,以方便配置维护;

    A6-B21:当缓存文件不存在或超时时,则根据计算逻辑重新计算结果;

    B22:根据计算结果,生成缓存文件;

    A23:通过集算器JDBC为报表输出数据。

    可以看到实现缓存功能的实际代码只有3、4行,简单清晰。

    报表调用

    集算器封装了标准的JDBC接口供报表工具调用集算器脚本,以润乾报表为例,调用过程如下: