XBRL的缓存的实现方法技术

技术编号:19057531 阅读:33 留言:0更新日期:2018-09-29 12:18
本发明专利技术公开了XBRL的缓存的实现方法,涉及XBRL系统中使用redis缓存和Spring AOP实现业务方法对缓存读取操作。包括以下内容:缓存操作接口和Redis实现类;缓存注解标记;缓存操作切面类;XBRL引用切面类并配置redis数据相关信息和声明切面JavaBean;在需要缓存数据具体业务方法使用标记。本发明专利技术降低了数据库查询和XML文件读取的压力,增加单位时间内系统的处理能力,提高了系统响应时间。使用户能快速的得到系统响应,增加了交互体验。

【技术实现步骤摘要】
XBRL的缓存的实现方法
本专利技术属于财务自动化软件
涉及XBRL系统中使用redis缓存和SpringAOP实现业务方法对缓存读取操作,特别是在分类标准和实例文档中的具体应用,解决XBRL系统数据读取和处理效率较慢等问题。
技术介绍
XBRL(eXtensibleBusinessReportingLanguage),可扩展商业报告语言是一门用于商业信息进行电子交换的语言,有助于商业信息的编制、分析和交换。XBRL技术框架分为XBRL规范、XBRL分类标准和XBRL实例文档三部分。其中涉及大量的元素读取和XML文件操作,在之前XBRL平台中是直接进行数据库和文件操作,而这种数据库和文件操作受到磁盘性能的影响,目前大多数服务器采用机械硬盘,,机械硬盘一般读写速度为60-120M/s,因此文件越小越多速度越慢,这成为处理大量的数据库和文件操作任务的瓶颈。传统的解决方案是使用缓存技术对系统修改频率较高的数据进行缓存,而目前系统主要业务逻辑已经趋于稳定,如果使用传统的缓存添加方法就会破坏原有的业务逻辑,带来一定的缺陷和风险。原有XBRL系统中存在问题:首先介绍原有XBRL系统中性能瓶颈,经过分析在分类标准和实例文档中存在大量的连表查询和XML文件操作,这些操作非常耗时且消耗的服务器资源巨大。例如在分类标准中查询国标元素,数据总量为1万条查询时间大于1分钟,而且这种操作很频繁。这就造成其他很多任务等待该查询的执行,降低系统处理性能,增加了数据库系统负担。所以急需在数据库之上覆盖一层缓存,将大量的不频繁修改的数据在内存中进行缓存,来降低数据库系统的压力。缓存框架选取和使用弊端:系统缓存中间件市面上具有很多种类,我们主要考察ehcache、memcache、redis这三种缓存产品,通过信息收集和分析,对以上的三种产品进行比较如下:综合分布式集群和数据类型的考虑,选择使用redis作为缓存方案。在对现有的XBRL系统进行缓存改造时,我们经常遇到如下两场景:第一对于单条数据查询步骤:①首先根据参数拼装出一个缓存Key;②根据缓存Key查询缓存;③如果缓存未命中,则查询数据库或HTTP调用或进行RPC远程调用获取数据;如果缓存命中则直接读取缓存数据;④如果未命中,读取到数据之后需要写入缓存然后返回给调用者。第二对于批量数据查询步骤:①首先根据传入的参数列表,进行遍历并组装缓存Key;②根据缓存Key查询缓存;③遍历查询结果查询那些数据未被缓存,那些数据已经缓存;④查询数据库或HTTP调用或进行RPC远程调用获取未被缓存的数据;⑤将未被写入缓存的数据添加到缓存;⑥为调用者返回数据查询结果。上面的这几个步骤非常简单,但是在具体实施过程中却很难。因为添加缓存的方法模式一致且步骤繁琐,如果每个需要缓存数据的方法都需要这么操作,那么会产生如下几个问题。第一:破坏了原有的正确的业务逻辑,可能产生新的错误;第二:添加缓存的方法太多,工作量巨大且繁琐;第三:不同的开发人员命名缓存Key,缓存Key不便于管理且可能出现Key的冲突;第四:可扩展性差,如果以后出现性能更加好缓存服务,需要替换以前的缓存服务或者由于以后服务性能提高,减少或者移除缓存使用,则都会面临项目较大改动。
技术实现思路
本专利技术的目的是如何在现有的XBRL平台上,在不影响原有的业务流程代码的情况下,通过对系统扩展缓存功能,来降低系统数据库和磁盘IO读取操作次数和系统等待时间,从而提高系统的项目运行速度和单位时间内的任务作业量。为了达到上述的技术效果,本专利技术采取以下技术方案:XBRL的缓存的实现方法,包括以下内容:缓存操作接口和Redis实现类;缓存注解标记;缓存操作切面类;XBRL引用切面类并配置redis数据相关信息和声明切面JavaBean;在需要缓存数据具体业务方法使用标记。进一步的技术方案是:使用高速存取性能的redis数据作为缓存中间件存储数据,对缓存的数据进行存取。进一步的技术方案是:使用面向切面编程的方法将核心关注点和横切关注点进行分离。进一步的技术方案是:使用SpringAOP注解的方式使用缓存功能,创建缓存操作注解。本专利技术将缓存处理方法和原有的业务逻辑进行分离,在执行业务逻辑处理之前调用动态执行缓存操作方法。这样就有效的避免上述的问题,而这种处理方法就是使用面向切面编程思想。XBRL项目是基于Spring框架构建,而Spring框架默认实现一套非常实用的AOP模式,Spring框架中的AOP实现主要基于XML配置文件和注解两种方式实现。XML配置方式是需要在项目Spring配置文件中申明每一个方法的切面,配置较为繁琐,而且方法较多时配置不易于管理。注解方式需要首先创建缓存读取和删除的注解,在需要使用缓存的业务逻辑方法上打上该注解标记既可。综上所述选择注解的方式来实现缓存的动态添加,具体的实现原理如下。首先将缓存相关的业务代码进行抽取,经过使用过程的总结发现,缓存接口操作主要有,根据Key读取缓存数据、写入缓存数据、根据Key删除缓存数据。并对缓存方法进行具体实现,具体实现使用jedis(jedis:Java操作redis的客户端程序)提供的API进行操作。其次创建注解标签和切面。注解是JDK1.5引入的一种新特性,与类、接口在同一层次,用于对元素进行说明和注释。创建缓存注解类和缓存过期注解类,并申明其中所属的特性;在SpringAOP中对横切关注点的抽象就是切面,对业务数据的读取写入缓存的操作就是切面,在XBRL中定义一个类作为为切面,并实现缓存读取和写入的注解方法,缓存读取是发生在业务逻辑代码执行之前、而缓存写入发生在执行业务逻辑方法之,所以采用SpringAOP的@Around通知类型,保证在业务逻辑代码执行前后动态织入缓存操作。而缓存移除则需要拼装缓存Key之后执行所以采用@After通知类型。最后在项目中使用缓存则变的相当简单,步骤如下:①在项目的Spring配置文件中配置redis连接池参数并申明切面类,便于Spring注入当前的切面类;②在确定要使用缓存的方法打上缓存注解即可;③在执行完毕移除缓存的方法上打上移除缓存注解即可。本专利技术与现有技术相比,具有以下的有益效果:针对使用缓存技术和面向切面编程技术,来解决不修改原有业务逻辑的情况下实现系统缓存添加。本专利技术降低了数据库查询和XML文件读取的压力,增加单位时间内系统的处理能力,提高了系统响应时间。使用户能快速的得到系统响应,增加了交互体验。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。在XBRL项目中实现缓存框架主要通过以下5个步骤实现,下面详细描述本专利技术的具体实施方案:1.缓存操作接口(ICache)和Redis实现类(RedisPoolCache)首先创建统一的缓存操作接口ICache用于统一所有的缓存产品的实现方法,ICache接口中方法的具体说明如下:该接口统一缓存框架操作方法,为了保持通用性拥有的接入XBRL项目的缓存产品必须要实现该接口,redis产品的具体操作类RedisPoolCache也需要实现该接口。并使用redis提供的API本文档来自技高网
...

【技术保护点】
1.XBRL的缓存的实现方法,其特征在于,包括以下内容:缓存操作接口和Redis实现类;缓存注解标记;缓存操作切面类;XBRL引用切面类并配置redis数据相关信息和声明切面JavaBean;在需要缓存数据具体业务方法使用标记。

【技术特征摘要】
1.XBRL的缓存的实现方法,其特征在于,包括以下内容:缓存操作接口和Redis实现类;缓存注解标记;缓存操作切面类;XBRL引用切面类并配置redis数据相关信息和声明切面JavaBean;在需要缓存数据具体业务方法使用标记。2.根据权利要求1所述的XBRL的缓存的实现方法,其特征在于:使用高速存取性能...

【专利技术属性】
技术研发人员:刘兴伟许岩龙刘东高向军
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1