实现报表数据的可控缓存

使用缓存可以提升报表性能是一个共识,一般高端报表工具都会提供报表缓存功能,将整个报表计算结果缓存在文件系统中,以便用户下次访问参数相同的报表时可以快速读取缓存结果进行展现。润乾报表作为报表工具的领军品牌,当然也具有这种常规的缓存功能。

但在有些情况下,报表开发人员还希望进一步控制缓存的内容,比如对于缓存内容,可能只想缓存一部分而不是整个报表结果,或者能够让其它报表或程序复用缓存内容,又比如对于超时设置,可能希望为不同的缓存结果设置不同的超时时间。这些需求都来自于实际业务中需要应对的数据量和实时性方面的不同情况,也是一般报表工具的缓存功能无法满足的。

润乾报表内置了可编程的数据计算引擎(结合集算器实现),允许开发人员灵活控制缓存内容,称为可控缓存。可控缓存能够带来更大的灵活性,下面就前面提到的三点展开介绍。

1、缓存部分结果

在报表开发中,有时并不希望将所有报表结果进行缓存,避免耗费过高的缓存成本(磁盘空间和应用服务器资源开销)。另外,当报表中的部分数据实时性要求很高,需要实时与数据库交互进行数据查询,那么就并不适合进行缓存。这种情况下,通过润乾报表的可控缓存可以将变化不太频繁的中间结果缓存起来。当报表再次请求时,实时性要求高的数据仍然从数据库中读取,同时结合缓存中的非实时数据进行报表计算,得到最终报表结果集。常规缓存方案中没有这种缓存部分结果的功能,只能设置整个报表是否进行缓存,这样报表在涉及数据的不同时效性时就必须平衡两者的矛盾,而润乾报表在这方面显然更加灵活,效率更高。

2、缓存结果复用

润乾报表中可控缓存是可以复用的,一个报表的缓存结果(部分或全部)可以被其他报表或程序读取并使用,而不必像常规报表缓存方案那样重复缓存同样的结果,这显然也会大幅度提高缓存的整体效率。当其他报表或程序使用某个报表的缓存结果时,只需从缓存(一般是磁盘文件)中读取,并与报表中其他数据来源(可能是 DB、文件,或是另一个报表的缓存)进行混合运算,就能得到报表需要的结果集,处理方式和缓存部分结果的方式类似。常规的报表缓存以报表模板为单位进行缓存,彼此无法复用,会造成相当的资源浪费,增加不小的性能开销,而润乾报表在这方面同样体现了灵活和高效。

3、设置不同超时时间

缓存机制中一定会有超时时间,过时的缓存会被清除,报表再访问时再重新缓存。一般报表工具的缓存超时时间在配置文件中设置,如通常的 3600s 或 7200s,这种设置往往作用于对单张报表的所有参数,有时甚至作用于所有报表。换句话说,整个报表甚至整个系统都必须使用同样的设置。

这种做法显然性能不高,如果能够针对不同的报表场景设置不同的超时时间,自然会更有效。比如,针对大量历史数据进行查询的报表,由于历史数据一般很少变化,我们希望报表的缓存结果可以保存较长时间,相应地设置较长的超时时间;而针对数据变化频繁,实时性要求较高的报表则设置较短的超时时间,以便满足数据的实时性要求。

润乾报表的结果缓存允许开发人员针对不同的报表设置不同的超时时间,以应对不同的报表场景。这种做法同样提供了更高的灵活性,使得报表缓存成为真正意义上的可控。

举例

可控缓存的具体实现可以参考润乾报表的相关文档资料,这里只是通过一个简单的例子说明一下结果缓存的使用方法:

首先使用润乾报表内置的集算器编写脚本生成和读取缓存文件,这个过程处于报表数据源的计算阶段。

 ABC
1E:\work\esProc\/ 缓存目录 
2=“sales_”+string(d_date)/ 缓存文件名,报表名 + 参数 (dfxName_ParamName) 
3=file(A1+A2)  
4if A3.exists()&& interval@s(A3.date(),now())<3600result A3.import@b()end
5=connect(“demo”)  
6=A5.cursor(“SELECT 客户 ID,sum( 单价 * 数量) 订单总额 FROM 订单, 订单明细 WHERE 订单. 订单 ID= 订单明细. 订单 ID and year(订购日期)>? group by 客户 ID order by 订单总额 desc”,d_date)  
7=A6.fetch(5)>A5.close() 
8=A3.export@b(A7)/ 生成缓存文件 
9return A7/ 为报表返回结果集 

上述脚本首先指定缓存目录,并根据参数设置缓存文件名称,再根据文件名查找缓存文件是否存在(A4)。若存在且未超时则直接读缓存,否则直接连接数据库取数运算,并将计算结果生成缓存文件。

对比一下,如果报表中不使用缓存,那么脚本只需要这样编写:

 AB
1=connect(“demo”) 
2=A1.cursor(“SELECT 客户 ID,sum( 单价 * 数量) 订单总额 FROM 订单, 订单明细 WHERE 订单. 订单 ID= 订单明细. 订单 ID and year(订购日期)>? group by 客户 ID order by 订单总额 desc”,d_date) 
3=A2.fetch(5)>A1.close()
4return A3 

然后,只需要在润乾报表中调用上述集算脚本,编辑报表表达式就可以完成报表制作了。

需要注意的是,润乾报表的可控缓存也有其适用场景,并不能完全取代常规缓存。常规缓存手段会连同报表计算结果以及呈现属性一起保存,而这里的可控缓存只缓存数据,在呈现时还要再次进行外观计算,因此更适用于数据计算强度较高,外观计算强度较低的场景。实际应用中,两者可以结合使用。

转载于:https://my.oschina.net/u/3980313/blog/3040128

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 开源的仓储对账快递的Java实现是一种基于开源技术的快递仓储对账系统的编写和开发过程。在Java语言中,我们可以使用诸如Spring、Hibernate等开源框架和库来实现这个系统。 首先,我们可以使用Spring框架来构建该系统的基本框架和结构。Spring提供了依赖注入、AOP、ORM等功能,使得系统的开发更加简单和高效。我们可以使用Spring MVC来构建系统的前后端交互接口,使用Spring Boot来实现系统的自动化配置和部署。 其次,对于仓储对账功能的实现,我们可以使用Hibernate框架来实现数据库的操作和管理。Hibernate是一个优秀的对象关系映射工具,它可以将Java对象和关系数据库中的数据进行映射,并提供了强大的查询和持久化功能。我们可以使用Hibernate来创建对账单对象和仓储物品对象的映射,以及实现对这些对象的增删改查操作。 此外,为了提高系统的安全性和性能,我们还可以使用其他开源工具和技术。例如,我们可以使用Spring Security框架来实现系统的权限管理和用户认证功能;使用Swagger来生成系统的API文档;使用Log4j来记录系统的运行日志;使用缓存技术如Redis来提高系统的性能等等。 总结来说,开源的仓储对账快递的Java实现基于开源技术和框架,可以快速、灵活地开发出功能强大、高效稳定的系统。通过使用Spring、Hibernate等工具,我们可以实现系统的结构、业务逻辑和持久化操作,并通过其他开源工具来增强系统的安全性和性能。这些开源技术在Java技术领域中得到了广泛应用和成熟的生态系统支持,为仓储对账快递的Java实现提供了可靠的基础。 ### 回答2: 开源的仓储对账快递Java实现是一种使用Java语言编写的开源软件,它用于仓储和快递行业的对账业务。下面我将从几个方面介绍其实现。 首先,它通过Java语言实现了快递和仓储业务的核心功能,例如管理订单、入库、出库等。它使用了Java的面向对象编程特性,通过定义类、接口和继承等方式进行了模块化设计。这样,我们可以更好地组织和管理代码,提高代码的可维护性和重用性。 其次,它采用了Java的网络编程技术,使得仓储和快递系统可以与其他系统进行通信。例如,它可以与物流系统对接,实现物流跟踪和状态更新。同时,它还可以与订单系统对接,实现订单数据的同步和更新。通过使用Java的网络编程技术,可以方便地实现与其他系统的交互。 第三,它使用了Java的数据库技术,对仓储和快递的相关数据进行存储和管理。例如,它可以使用Java的JDBC库连接数据库,进行数据的增删改查操作。通过使用数据库技术,可以更好地管理和操作仓储和快递的数据,提高系统的性能和可扩展性。 另外,它还可以使用Java的日志库对系统的运行情况进行记录和跟踪。这样,在系统出现问题时,我们可以通过查看日志文件来定位问题的所在,提高系统的可靠性和稳定性。 总之,开源的仓储对账快递Java实现通过使用Java语言的特性和相关技术,实现了仓储和快递业务的核心功能,并能与其他系统进行通信和数据交互。它的开源特性还使得开发者可以根据自己的需求对其进行修改和扩展。 ### 回答3: 开源的仓储对账快递java实现,即通过使用Java编程语言,实现一个开源的仓储对账系统,用于快递行业的物流仓储管理和对账,以下是该系统的主要特点和功能: 1. 仓储管理:系统可以记录快递公司的仓储信息,包括仓库的位置、容量、存储量等相关信息。通过该系统,用户可以方便地管理仓库信息,并进行查找、筛选等操作。 2. 对账功能:系统可以实现对快递公司和仓储供应商之间的对账,包括入库、出库、运输等环节的对账,确保账目准确无误。通过系统的对账功能,可以有效地避免因账目错误导致的纠纷和损失。 3. 数据统计与分析:系统可以提供丰富的数据统计与分析功能,用户可以通过系统生成报表和图表,对仓储物流的各项指标进行分析和评估,以优化仓储管理和物流运营。 4. 库存管理:系统可以实时跟踪仓库中的存货情况,根据实际情况自动计算库存量,当库存不足时,系统会提醒用户及时补货,以保证供应链的畅通。 5. 安全管理:系统具备完善的权限控制和数据加密功能,保障用户的数据安全和隐私。 6. 可定制性:该系统采用Java开发,具有良好的可扩展性和可定制性,用户可以根据自身需求对系统进行二次开发和定制,以满足不同的业务需求。 综上所述,开源的仓储对账快递Java实现是一款功能强大、安全可靠的仓储管理系统,可以有效提升快递行业的物流效率和管理水平。使用该系统,用户可以更加方便地进行仓储管理、对账和数据分析,提高运营效益和客户满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值