zoukankan      html  css  js  c++  java
  • 报表应用结构优化之数据分库存储

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

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

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

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

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

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


            假设用跨库訪问的技术,比如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。配置集算数据集:

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

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

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


  • 相关阅读:
    Android_Spinner_example
    23.pyspider安装
    22.Windows及linux下gerapy使用
    21.scrapy爬虫部署
    12.利用kakatips对网站数据信息监控
    11.启信宝数据二次筛选解密(字符串的分割与拼接及正则匹配)-2
    10.Ubuntu操作系统及python2.7、3.5 exe
    9.数据库多表一起查询
    8.代理ip使用
    7.阿布云代理服务器试用
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7147317.html
Copyright © 2011-2022 走看看