报表应用结构优化之数据分库存储

报表项目中,可能会出现报表源数据来自于不同数据库的情况。

这是由于同一张报表可能会从多个业务系统取数据。比如:员工信息从人力资源系统中取出,销售数据从销售系统中取出。另一种可能是,同一应用系统的数据库负载太大,不得已分成多个数据库的情况。比如:销售系统数据分成当前库和历史库。

报表工具须要连接的可能是相同类型的数据库。比方都是oracle或者db2;也可能是不同类型的数据库。

报表应用中,数据分库存储的解决的方法有:1、建设专门的数据仓库。2、利用跨库訪问的技术。

专门数据仓库的建设和管理比較复杂。假设数据量非常大效率会非常低。并且要不断的ETL去各个应用系统同步数据。并且数据仓库利用的也是传统数据库的技术,假设负载较大的时候,也面临分库的问题。

数据仓库方式结构示意图例如以下:

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

假设用跨库訪问的技术,比如Oracle的透明网关、DB2的联合查询等。也有不少局限。比較共性的问题是:1、配置起来比較麻烦,并且往往须要数据库写权限。

2、要为跨库的表配置别名。3、不同类型的数据库数据类型不一致的情况。比較难处理。4、sql语句受到限制,比較难实现复杂的计算。

这样的方式的结构示意图例如以下:

这样的情况能够考虑使用润乾集算报表,其内置的集算引擎能够连接多个数据库,取数之后统一进行数据计算,能够较好的解决报表数据来自于不同数据库的问题。集算报表解决分库存储问题的结构示意图例如以下:

这里,通过“销售人员销售报表”,看一下集算报表解决数据分库存储问题的过程。

报表例如以下图:

报表中的销售订单数据来自于销售系统的db2数据库,员工信息来自于人力资源系统的db2数据库。使用润乾集算报表开发这张报表的步骤例如以下:

首先在集算报表和集算器中分别配置两个数据源,销售系统数据库“db2sales”,人力资源数据库“db2HR”。

第二,在集算器中定义网格參数state,并编写计算脚本:

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

A2:连接预先配置好的db2HR数据源。

A3、A4:分别从两个数据源中读取sales序表和employee序表。

A5:使用集算器的对象引用机制。将sales序表和employee序表通过sellerid=eid关联。

A6:依照參数state="California"过滤序表。

A7:生成一个新的序表。得到须要的字段。

A8、9:关闭数据库连接。

A10:返回给集算报表。

第三。在报表设计器中定义參数argstate。配置集算数据集:

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



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

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

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

时间: 2024-12-28 01:03:09

报表应用结构优化之数据分库存储的相关文章

实现报表数据分库存储

报表项目中,常常会出现报表源数据来自不同数据库的情况,也就是同一张报表可能会从多个业务系统读取数据.例如:员工信息从人力资源系统中取出,销售数据从销售系统中取出.当然,还有一种可能,同一应用系统的数据库负载太大,不得已分成多个数据库,例如:销售系统数据分成当前库和历史库. 在数据库类型方面,报表工具可能连接同样类型的数据库,比如都是 oracle 或者 db2:也可能是不同的类型. 报表应用中针对这种数据分库存储的解决办法有两种:1.建设专门的数据仓库:2.利用跨库访问的技术. 专门数据仓库的建

润乾集算报表优化应用结构之数据分库存储

报表项目中,可能会出现报表源数据来自于不同数据库的情况.这是因为同一张报表可能会从多个业务系统取数据.例如:员工信息从人力资源系统中取出,销售数据从销售系统中取出.还有一种可能是,同一应用系统的数据库负载太大,不得已分成多个数据库的情况.例如:销售系统数据分成当前库和历史库. 报表工具需要连接的可能是同样类型的数据库,比如都是oracle或者db2:也可能是不同类型的数据库. 报表应用中,数据分库存储的解决办法有:1.建设专门的数据仓库:2.利用跨库访问的技术. 专门数据仓库的建设和管理比较复杂

Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据

原文:Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据 本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了.今天重新来写这篇文章.今天我们就一起来探讨下如何重写Ocelot配置文件的存储方式以及获取方式. 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html 很多人都说配置文件的配置很繁琐,如果存储在数据库就方便很多,可以通过自定义UI界面在后台进行路由的配置,然后通过调用Admini

性能优化之数据存储&DOM编程

数据存储 ·在javascript中,数据存储的位置会对代码整体性能产生重大的影响. ·数据存储共有4种方式:字面量.变量.数组.对象成员. ·要理解变量的访问速度,就要理解作用域.由于局部变量处于作用域的起始位置,因此访问速度比访问跨域作用域变量(即除起始位置之外的外层作用域变量)更快.即变量处在作用域的位置越深,访问速度越慢.这也就说明,访问全局变量的速度是最慢的. 总的来说,字面量和局部变量的访问速度快于数组和对象成员的访问速度. 因此,常见的一些提高数据访问速度的方法有: ①避免使用wi

非结构化数据的存储与查询

当今信息化时代充斥着大量的数据.海量数据存储是一个必然的趋势.然而数据如何的存储和查询,尤其是当今非结构化数据的快速增长,对其数据的存储,处理,查询.使得如今的 关系数据库存储带来了巨大的挑战.分布存储技术是云计算的基础,主要研究如何存储.组织和管理数据中心上的大规模海量数据.由于面临的数据规模和用户规模更加庞大,在可扩展性.容错性以及成本控制方面面临着更加严峻的挑战[1]. 对于大量的半结构化数据(semi-structure data)和非结构化数据,对其存储和并发计算以及扩展能力而设计出了

菜单数据(树形)结构的使用-- ---数据的列存储转换为行存储

一.菜单数据表中的存储结构 二.转换后的数据结构 三. 转换过程 1.确定菜单数据的最大级别 /// <summary> /// 获得Nature定义的最大目录级别,以便于确定Nature的DataTable表结构中的列数目 /// </summary> /// <returns></returns> public int GetMaxNatureLevel() { if (dtNature == null && dtNature.Rows.

Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结

Atitit.各种  数据类型 ( 树形结构,表形数据  ) 的结构与存储数据库 attilax  总结 1. 数据结构( 树形结构,表形数据,对象结构 ) 1 2. 编程语言中对应的数据结构 java c# php ( Dic/Map      List    datatable ) 1 3. 数据库存储数据  1 4. 数据的表形显示( 多条记录 与单条记录 ) 2 5. ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormVie

MySQL数据库如何解决大数据量存储问题

利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开关量历史数据表,这两张表字段设计的很简单(OrderNo,Value,DataTime).基本上每张表每天可以增加几千万条数据,我想问如何存储数据才能不影响检索速度呢?需不需要换oracle数据库呢?因为我是数据库方面的新手,希望可以说的详细一点,万分感谢!!?-0-#暂时可以先考虑用infobri

淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道

时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的人了解和使用分析大数据,CSDN独家承办的大数据技术大会于今日在北京中旅大厦召开.本次大会汇集Hadoop.NoSQL.数据分析与挖掘.数据仓库.商业智能以及开源云计算架构等诸多热点话题.包括百度.淘宝.新浪等业界知名专家与参会者齐聚一堂,共同探讨大数据浪潮下的行业应对法则以及大数据时代的抉择. 淘