在报表项目中,经常会碰到数据库压力非常大影响整个系统性能的问题。由以下的传统方案的结构示意图能够看出。所有数据存储和源数据计算都放在数据库完毕。当并发訪问量较大的时候,尽管每一个报表的数据量不大,还是会造成数据库压力过大。成为性能的瓶颈。多数数据库厂商提供的jdbc接口数据传输比較缓慢。在并发量较大的情况,对报表系统性能的影响也非常明显。

这样的情况时能够考虑採用润乾集算报表提供的本地计算方案。

所谓本地计算,是将一部分计算任务从数据库中移出到报表server中完毕。

大多数有一定规模的应用系统中。数据库和应用server一般会部署在不同的物理机器上。当中,数据库处于中心地位,要为各个应用系统提供服务。假设运算大部分由数据库完毕,则会导致数据库压力过大。而数据库的扩容成本和难度都相当高。而应用server则不同,不同应用会有不同的应用server硬件,且easy集群扩容。

假设能将一部分运算移出数据库。转而由与应用server一起部署的报表server完毕,则会非常大程度地减小数据库压力,而且充分利用应用server所在机器的计算能力,提升系统性能。

集算报表方案结构示意图例如以下:

从上图能够看出,润乾集算报表能够将部分数据从数据库转移到报表应用server的本地硬盘。这部分数据能够是计算的中间结果。也能够是部分基础数据。

集算报表内置了集算引擎。能够通过简洁的脚本进行本地化的数据计算。因此。从数据存储和计算双方面都能够减少数据库压力。

部分数据和计算从数据库转移到报表应用server上,能够充分利用应用server集群的存储和计算能力。应用server不管是单机升级(纵向扩展)或者添加集群数量(横向扩展)都要比数据库server的成本低非常多。在本地硬盘上读取数据的速度要比数据库jdbc快非常多,能够解决这个瓶颈问题。

集算引擎还能够进行多线程的并行计算,能够充分发挥应用server多cpu、多核的计算能力。因此。润乾集算报表方案是低成本提高报表应用系统性能的优选方案。

以下,通过“某公司客户累计销售额与去年全年销售额对照报表”的制作。来看一下集算报表是怎样实现本地化计算的。报表例如以下图:

这张报表中的客户、订单数、销售额都是直接从数据库中计算的2010年1月-10月的数据。

2009年全年的订单数、销售额是从报表应用server文件系统中的temp2009sales.b文件里读取。“销售额/去年销售额”则是今年和去年的数据共同计算的。

报表上部的查询button是集算报表提供的“參数模板”功能,详细做法參见教程,这里不再赘述。

首先,要提前用集算器从数据库中读取2009年等各个年份的销售数据,计算好之后。以集算器的二进制编码导出到temp2009sales.b文件里,每年一个文件。中间数据制作好之后,数据库中2009年的数据就能够移除备份了,不再占用数据库的空间。

第二,编写集算器脚本salesProportion.dfx例如以下:

注意,脚本的參数是:argyear(要查询的年份),argmonth(要查询的月份)。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM4ODQ5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

A1:连接预先配置好的数据源demo。

A2:从数据库中计算取出要查询的年份订单数、销售额。

A3:从前一年的数据文件里取出数据。

A4:将A3中的数据依照A2中的CLIENT字段对齐,A2中有A3中没有的补空行。

A5:利用A2来生成新的续表。

当中添加了A4的相应行数据,比方A4(#).C:lastCOUNT就是A4的相应行(#是A2的当前行号)中取出C字段。

A6:关闭数据库连接。

A7:向报表返回结果集。

第三,在集算报表中定义报表參数(argyear、argmonth)和计算数据集:

上图中。參数名是指dfx定义的參数名称,參数值是指报表提交给集算引擎的值。

这里是将报表的两个參数的值传递给集算器的同名參数。

第四,设计报表,例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM4ODQ5Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

输入參数计算后。就可以得到前面希望的报表。

优化报表系统结构之报表server计算的更多相关文章

  1. Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项

    本文是关于CRM 2013报表开发入门介绍,包括开发工具的使用,以及不同于普通Reporting service的相关注意事项. 一.CRM报表简介 报表有两种,SQL-based报表和Fetch-b ...

  2. ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表

    本篇文章将介绍区域报表和页面报表的常见使用场景.区别和选择报表类型的一些建议,两种报表的模板设计.数据源(设计时和运行时)设置.和浏览报表的区别. ActiveReports 报表控件官方中文入门教程 ...

  3. 使用VS自带的报表RDLC结合报表控件ReportViewer使用

    1.新建一个报表,设置报表之后,使用强类型的DataSet  xsd 配置数据源,对报表中的使用最常用的是文本框和表格控件 2.新增WebForm窗体,拖一个ReportViewer控件,在WebFo ...

  4. Reporting Services 钻取报表、子报表

    一.钻取报表 1.概念 钻取报表是指用户通过单击其他报表中的链接打开的报表.钻取报表通常包含某原始汇总报表中所包含的某项的详细信息. 例如,在此图中,销售额汇总报表列出了销售订单和总额.当用户单击该汇 ...

  5. 水晶报表,快速报表,rdlc报表

    感觉自己脑子里只剩下报表了,o(╥﹏╥)o.因为最近新换了公司,业务上有需要报表打印,水晶报表,快速报表,rdlc报表这三种以后可能都会用到.所以在没了解好业务流程,熟悉代码之前,就是看看这三种报表怎 ...

  6. [xms]西软xms试算平衡报表-穿透明细报表-增加储值卡卡号列

    只能呵呵哒 [xms]西软xms试算平衡报表-穿透明细报表-增加储值卡卡号列 pospay ' and hotelid='${hotelid}'; hhaccount ' and hotelid='$ ...

  7. FineReport报表和水晶报表的比较

    FineReport报表和水晶报表的比较 FineReport报表软件针对复杂格式的报表数据及Web报表的展现,通过多源分片.不规则分组.双向扩展来轻松拖拽做复杂格式的报表,制作报表从此摆脱了复杂的S ...

  8. 免费报表工具 积木报表(JiMuReport)的安装

    分享一b/s报表工具(服务),积木报表(JiMuReport),张代浩大佬出品. 官网:http://www.jimureport.com/ 离线版官方下载:https://github.com/zh ...

  9. 能无缝嵌入Excel的报表工具,报表轻松做!

    现在很多人做数据分析会被推荐选择去用编程R和Python.PowerBI.Tableau.Qlik.Smartbi... 从目前数据分析的行业来说,Excel是世界上使用人数最多的报表分析工具,没有之 ...

随机推荐

  1. CRM实施中应避免的5大问题

    越来越多的人认识到,杂乱的客户信息应该统一管理.曾经人们用excel表格甚至是纸笔来记录客户信息,可是假设想知道这个客户我们销售接触过几次?邮件里都谈了什么?在线客服都和客户聊了什么?报价单发的啥价格 ...

  2. android:padding 与 android:margin的差别

    android:padding    Padding 为内边框,指该控件内部内容,如文本/图片距离该控件的边距 android:margin   Margin 为外边框,指该控件距离边父控件的边距

  3. POJ 3905 Perfect Election(2-sat)

    POJ 3905 Perfect Election id=3905" target="_blank" style="">题目链接 思路:非常裸的 ...

  4. 移动端H5页面编辑器开发实战--经验技巧篇

    很久前的写的文章了,转载下发到这里 原本地址: https://blog.csdn.net/tech_meizu/article/details/52484775

  5. 关于TCP的三次握手和四次分手 专题

    客户端TCP状态迁移:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSE ...

  6. vscode 插件推荐 - 献给所有前端工程师

    VScode现在已经越来越完善.性能远超Atom和webstorm,你有什么理由不用它?在这里,我会给你们推荐很多实用的插件,让你对 vscode 有更深刻的体会,渐渐地你就会知道它有多好用. 走马观 ...

  7. Hibernate框架学习(三)——实体规则、对象状态、一级缓存

    一.Hibernate中的实体规则 1.实体类创建的注意事项 1)持久化类提供无参数构造,因为在Hibernate的底层需要使用反射生成类的实例. 2)成员变量私有,提供公有的get和set方法,需提 ...

  8. Powerpivot PowerBI相关组件下载安装(附操作截图)

    加载方式:com加载项加载方法: 点击Excel界面[文件]→[选项]→[加载项]→[COM加载项]→[转到] Excel2013加载PowerView Excel216PowerQuery不需要加载 ...

  9. js input 只能输入数字

    HTML网页上这么写 <input type="text" style="ime-mode:disabled;" onpaste="return ...

  10. iOS性能优化专题

    http://wereadteam.github.io/2016/05/03/WeRead-Performance/ https://www.cnblogs.com/oc-bowen/p/599999 ...