专利名称::一种快速生成电子报表的系统构架及其实现方法
技术领域:
:本发明涉及商业智能数据应用领域,尤其涉及一种快速生成电子报表的系统构架及其实现方法。
背景技术:
:传统报表技术实现具有一个特性,在报表打开时,有较大的数据量交互,有较多的IO操作,较长的时间等待,尤其是涉及到大数据量时,将获得更长的等待时间,在表现形式上也分别对应为固定型报表和多维分析型报表(0LAP报表)。报表数据一般直接通过SQL(StructuredQueryLanguage)语言从关系型数据库中获取。客户端程序结果通过客户端程序或者Web程序显示。更高级处理方式就是将查询结果按照一定的调度算法放在缓存中,下一次同样的查询语句无需在提交给数据库处理,直接从缓存中获取数据即可;或者数据通过MDX(MultiDimensionalExpressions)语言从多维数据库中获取,这两种技术能获得较好的查询响应性能,而因为缓存大小有限制,决定了报表在处理数据时,也要花费较长的时间。对于商业智能数据应用领域而言,报表也是具有一般报表的所有特性,而且历史数据量更大,一般都报表会存放几年历史数据,记录数都会有上亿条,所以系统需要从这多的数据中,做查询、统计、汇总,查询响应性能可想而知,客户感知差,尤其是关键的业务报表,在开发设计时的重要指标就是就是响应时间,控制在多少时间内是系统交付时的重要条件。
发明内容本发明为克服现有技术中存在的不足之处,目的在于提供一种快速生成电子报表的系统构架,该系统构架在控制层增设了内存,用Java语言编写的缓存系统形成的缓存机制,以用于在内存中存储数据;系统根据登录用户的角色和权限直接从内存中读取对应的报表数据,避免了数据从模型层的硬盘读取到内存带来的耗时,大大提高了响应时间,解决了现有技术中存在的问题。本发明的另一目的在于,提供一种快速生成电子报表的方法,该方法采用内存报表技术,在报表系统初始化时,将所有关键业务数据从数据库预读到内存中,用户在访问报表时,系统根据登录用户的角色和权限直接从内存中读取对应的报表数据,避免了数据从硬盘读取到内存带来的耗时,解决了现有技术中存在常规报表延时高、响应慢引致客户端感知非常差等一些列问题。本发明是通过以下技术方案达到上述目的一种快速生成电子报表的系统构架,包括数据层、控制层和展示层三层;数据层,包括用于定义和存放数据模型结构和内存报表结构信息的业务指标配置库和用于存放业务数据业务指标数据库;控制层,用于周期性的根据指标定义算法、规则,从数据层提取业务数据加载到内存中;用于提供数据结果给展示层;展示层,位于面向系统管理人员和报表用户的最前端,用于负责提交系统管理人员和用户的指令、查询要求和参数,等待控制层处理完成后,返回指令结果或按配置格式展现报表。所述的控制层中有用Java语言编写的缓存系统形成的缓存机制,以用于在内存中存储数据。作为优选,控制层中使用lru算法,当内存缓存区域满时,首先删除最近最少使用的缓存数据。作为优选,业务指标配置库包括指标定义,指标刷新SQL定义,指标组定义及指标与组的关系定义,在客户端需要展现业务内容的配置和定义。—种快速生成电子报表的实现方法,包括如下步骤1)配置基础指标位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置最基本的、脚本直接生成的指标、同时定义基础指标的刷新SQL等相关信息;2)定义指标组位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置指标组的名称、所属关系和对应作业的脚本程序;3)配置指标、指标组、指标组内项关系位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置指标与指标组内项的关系,指标组与指标组内项的关系;4)内存配置位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库中定义内存的最大对象数及对内存调度的LRU算法;5)控制层按照业务指标库中的刷新SQL将业务指标数据库中的数据刷入内存;6)控制层通过LRU算法,在内存中查询是否有需要清掉的数据并执行指令;7)控制层将最新的数据对象刷入内存;8)展示层发出查询SQL时,优先从内存中查询数据;9)如果内在中没有客户需要的数据,则从业务指标数据库查询数据;10)将查询结果返回给展示层。作为优选,所述步骤1)中的主要配置内容包括指标编号,单位,指标名称,指标刷新SQL,指标刷新周期,指标预警上下限。作为优选,所述步骤2)中配置内容包括指标组编号,指标组名称,指标组描述,指标组刷新作业名称。作为优选,所述步骤3)中的配置内容包括指标组内项编号,指标组内项名称,指标组内项单位,所属指标组,包含指标,显示标题,排序规则,是否可用。本发明的有益效果本发明在控制层增设了内存,用Java语言编写的缓存系统形成的缓存机制,以用于在内存中存储数据;系统根据登录用户的角色和权限直接从内存中读取对应的报表数据,避免了数据从模型层的硬盘读取到内存带来的耗时,大大提高了响应时间,业务报表响应时间基本控制在500毫秒以内,实现零延时,优于普通报表技术的访问响应时间,提升了用户感知,解决了现有技术中存在常规报表延时高、响应慢引致客户端感知非常差等一些列问题。图1是本发明的系统构架示意图。具体实施例方式实施例1:下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此如图1所示一种快速生成电子报表的系统构架,包括数据层、控制层和展示层三层;数据层,包括用于定义和存放数据模型结构和内存报表结构信息的业务指标配置库和用于存放业务数据业务指标数据库;业务指标配置库包括指标定义,指标刷新SQL定义,指标组定义及指标与组的关系定义,在客户端需要展现业务内容的配置和定义。控制层,用于周期性的根据指标定义算法、规则,从数据层提取业务数据加载到内存中;用于提供数据结果给展示层;所述的控制层中有用Java语言编写的缓存系统形成的缓存机制,以用于在内存中存储数据。控制层中使用lru算法,当内存缓存区域满时,首先删除最近最少使用的缓存数据。展示层,位于面向系统管理人员和报表用户的最前端,用于负责提交系统管理人员和用户的指令、查询要求和参数,等待控制层处理完成后,返回指令结果或按配置格式展现报表。—种快速生成电子报表的实现方法,按如下步骤1)配置基础指标位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置最基本的、脚本直接生成的指标、同时定义基础指标的刷新SQL等相关信息;主要配置内容包括指标编号,单位,指标名称,指标刷新SQL,指标刷新周期,指标预警上下限。2)定义指标组位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置指标组的名称、所属关系和对应作业的脚本程序;配置内容包括指标组编号,指标组名称,指标组描述,指标组刷新作业名称。3)配置指标、指标组、指标组内项关系位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置指标与指标组内项的关系,指标组与指标组内项的关系;配置内容包括指标组内项编号,指标组内项名称,指标组内项单位,所属指标组,包含指标,显示标题,排序规则,是否可用。4)内存配置位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库中定义内存的最大对象数及对内存调度的LRU算法;5)控制层按照业务指标库中的刷新SQL将业务指标数据库中的数据刷入内存;6)控制层通过LRU算法,在内存中查询是否有需要清掉的数据并执行指令;7)控制层将最新的数据对象刷入内存;8)展示层发出查询SQL时,优先从内存中查询数据;9)如果内在中没有客户需要的数据,则从业务指标数据库查询数据;10)将查询结果返回给展示层。下面以某报表中"宽带计费用户数"指标组内项生成过程为例,对发明提供报表生成方法的具体实施方式和过程进行详细阐述>指标定义<table>tableseeoriginaldocumentpage7</column></row><table>1>指标定义,"宽带计费用户数"所属"用户发展"组<table>tableseeoriginaldocumentpage7</column></row><table>>指标、指标组、指标组内项关系这里要说明的是"包含指标"配置字段,它是有一个若干个指标合成,格式如下所示"200501:3;200502:3;200501:6;200502:6;200503:3",每个指标具有一定的格式,AAAAA:BB,AAAAAA表示指标ID,BB表示指标的计算方式,如3代表基础指标,6代表环比等,<table>tableseeoriginaldocumentpage8</column></row><table>这样WEB持续在读取这些格式时,自动解析对应的指标值。实际应用过程中,200501指标代表CDMA发展量,200502代表固定电话发展量,200503代表有点宽带发展量,3代表当日值,6代表环比增长率,所以对"200501:3;200502:3;200501:6;200502:6;200503:3"就解析为一组指标"CDMA当日发展量;固定电话当日发展量;CDMA当日发展量环比增长率;固定电话当日发展量环比增长率;宽带当日发展量";>内存配置配置cache,ccf文件,定义最大对象数,内存调度算法(LRU算法)定义cacheattributes.MaxObjects=1000cacheattributes.MemoryCacheName=memory,lru.LRUMemoryCache>刷新到内存通过LRU方法,在缓存区域中(一个组织起来的命名空间用于容纳一组缓存对象,需要在配置文件中定义缓存区域来实现在一块单独的内存空间中存储数据,管理缓存数据的有效期限)查询是否有需要清掉的数据对象,如果有则通过cleanBlog方法从内存中清除一个指定的数据对象,然后通过setBlog方法将数据对象放在缓存中,该方法使用传入的信息创建一个新的数据对象,然后将这个对象数据放在内存中。>结果返回在内存中查询数据与在数据库中查询数据一样,直接查询内存中的数据对像,通过loadCacheObject()来重载缓存中的对象,返回给客户端。以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。权利要求一种快速生成电子报表的系统构架,其特征在于包括数据层、控制层和展示层三层;数据层,包括用于定义和存放数据模型结构和内存报表结构信息的业务指标配置库和用于存放业务数据业务指标数据库;控制层,用于周期性的根据指标定义算法、规则,从数据层提取业务数据加载到内存中;用于提供数据结果给展示层;展示层,位于面向系统管理人员和报表用户的最前端,用于负责提交系统管理人员和用户的指令、查询要求和参数,等待控制层处理完成后,返回指令结果或按配置格式展现报表。2.根据权利要求1所述的一种快速生成电子报表的系统构架,其特征在于所述的控制层中有用Java语言编写的缓存系统形成的缓存机制,以用于在内存中存储数据。3.根据权利要求1或2所述的一种快速生成电子报表的系统构架,其特征在于控制层中使用Iru算法,当内存缓存区域满时,首先删除最近最少使用的缓存数据。4.根据权利要求3所述的一种快速生成电子报表的系统构架,其特征在于业务指标配置库包括指标定义,指标刷新SQL定义,指标组定义及指标与组的关系定义,在客户端需要展现业务内容的配置和定义。5.—种快速生成电子报表的实现方法,其特征在于包括如下步骤1)配置基础指标位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置最基本的、脚本直接生成的指标、同时定义基础指标的刷新SQL等相关信息;2)定义指标组位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置指标组的名称、所属关系和对应作业的脚本程序;3)配置指标、指标组、指标组内项关系位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库配置指标与指标组内项的关系,指标组与指标组内项的关系;4)内存配置位于展示层的管理人员根据报表展现的需要,向控制层发出指令,在数据层的业务指标配置库中定义内存的最大对象数及对内存调度的LRU算法;5)控制层按照业务指标配置库中的刷新SQL将业务指标数据库中的数据刷入内存;6)控制层通过LRU算法,在内存中查询是否有需要清掉的数据并执行指令;7)控制层将最新的数据对象刷入内存;8)展示层发出查询SQL时,优先从内存中查询数据;9)如果内在中没有客户需要的数据,则从业务指标数据库查询数据;10)将查询结果返回给展示层。6.根据权利要求5所述的一种快速生成电子报表的实现方法,其特征在于所述步骤1)中的主要配置内容包括指标编号,单位,指标名称,指标刷新SQL,指标刷新周期,指标预警上下限。7.根据权利要求6所述的一种快速生成电子报表的实现方法,其特征在于所述步骤2)中配置内容包括指标组编号,指标组名称,指标组描述,指标组刷新作业名称。8.根据权利要求7所述的一种快速生成电子报表的实现方法,其特征在于所述步骤3)中的配置内容包括指标组内项编号,指标组内项名称,指标组内项单位,所属指标组,包含指标,显示标题,排序规则,是否可用。全文摘要本发明涉及商业智能数据应用领域,尤其涉及一种快速生成电子报表的系统构架及其实现方法,该系统构架,包括数据层、控制层和展示层三层;数据层,包括业务指标配置库和业务指标数据库;控制层,用于周期性的根据指标定义算法、规则,从数据层提取业务数据加载到内存中;用于提供数据结果给展示层;展示层,返回指令结果或按配置格式展现报表。本发明的有益效果本发明大大提高了响应时间,业务报表响应时间基本控制在500毫秒以内,实现零延时,优于普通报表技术的访问响应时间,提升了用户感知。文档编号G06F17/30GK101777079SQ20101012230公开日2010年7月14日申请日期2010年3月11日优先权日2010年3月11日发明者严伟强,吕孙,田文,胡黎玮申请人:浙江鸿程计算机系统有限公司