`
datamachine
  • 浏览: 161848 次
社区版块
存档分类
最新评论

将数据放至数据库外或文件系统来提高报表系统性能

阅读更多

         在报表应用中,针对历史数据查询的报表占比很大,这类报表的特点是:第一,数据变化小,查询的历史数据几乎不会发生变化;第二,数据量大,数据量随时间跨度增大而不断增加。如果数据始终存放在数据库中,由于大多数数据库的JDBC性能都很低下(JDBC取数过程要做数据对象转换,比从文件中读取数据会慢一个数量级),这时涉及数据量较大或在并发较多的时候,报表的性能会急剧下降。如果能将这些变化不大的历史数据移出数据库,采用文件系统存储,将可能获得比数据库高得多的IO性能,从而提高报表的整体性能。

         但是,报表并不是直接使用原始数据进行呈现,还需要做进一步的运算。而文件本身没有计算能力,这种情况数据量一般也较大,不可能靠报表呈现端的计算能力实现。

         集算报表在内置集算引擎的帮助下可以基于库外文件做计算,支持的文件类型包括:文本、ExcelJSON格式文件等,还支持效率更高的二进制文件。将较大数据量的历史数据从数据库中剥离,这样除了可以满足历史查询类报表的性能需求外,还可以借助集算报表对混合数据源(文件+数据库)的支持,进行大数据量的实时数据查询,从文件系统中读取往期较大的历史数据,从数据库中读取当期较小的实时数据进行混合计算。这样的做法可以避免数据库的IO瓶颈,快速提升报表性能,增大数据查询范围。同时,这也是优化数据库的过程,将历史数据移出,数据库可以专注于保证业务系统数据的一致性,而不是耗费资源在大量的历史查询任务上。

         具体使用上,当用户将数据保存到文件系统中后,即可使用集算报表进行数据查询和计算,集算报表内置的集算引擎可以基于文件(和数据库)进行数据计算。使用时,可以参考如下步骤(举例说明):

1 将数据库中历史数据导出到文件

用户可以自行选择适当的方法将历史数据导出到文件,当然这个过程也可以使用集算器来做,可以将数据导出到文本,如果希望更高的性能,集算报表还可以支持更高效的二进制文件格式(比文本能快出2-5倍)。在集算器(用免费版本即可)中执行类似如下代码可将文本文件转换成二进制格式。

file("E:/订单明细.b").export@b(file(“E:/订单明细.txt”.cursor())

 

2 使用集算报表内置的集算引擎读取数据文件

当数据外置后,采用集算报表就如同使用文件数据源做报表了,比如根据订单明细数据按客户统计订单数量和订单金额,由于原始订单数据非常大,所以读入文件时采用流式(文件游标)的方式逐步读入。

 

脚本中使用的参数及其含义如下:



 

脚本:



 

A1:通过文件游标采用流式处理的方式读入大源文本数据;

       A2:按照指定的多个维度进行数据过滤,结果仍然是游标;

       A3:根据选出的结果,按照客户ID汇总订单数量和订单金额;

        A4:为报表返回结果集。

        

         如前面提到的,集算报表既可以针对单独的文件(历史数据)进行查询计算,还可以进行文件+数据库混合运算,进行大数据量实时查询。



   
A1-A3:与上一个脚本一样,汇总历史数据;

        A5:根据指定参数执行sql,汇总当期数据;

        A6:将两部分汇总数据合并(纵向拼接);

        A7:根据合并后的历史和当期汇总数据再次汇总,得到各客户的订单数量和订单金额。

 

3 在集算报表中调用集算脚本,编辑报表表达式完成报表制作

 

         通过以上的过程可以清晰的看到,集算报表可以很好解决针对往期历史(+当期)数据进行查询时往往存在性能不高的问题,通过数据外置提升报表性能。

  • 大小: 31.2 KB
  • 大小: 38.5 KB
  • 大小: 80.3 KB
2
1
分享到:
评论
2 楼 ybj316 2015-02-07  
基本赞同1楼的看法。从博客内容可以看出,作者是个(java)前端开发人员。对于数据仓库,数据集市的建设基本没概念!
1 楼 james_lover 2015-02-07  
当发现OLTP系统开发做报表,而且报表查询很慢的时候,就应该着手考虑建设数据仓库了。
把在线数据导成文件(离线)正好是走回头路。随着需求增加,数据增加,你们以后会不得不再把数据Load到数据仓库里。
正确的做法是逐步的,一砖一瓦的建设数据仓库。
首先选择一款ETL工具,把生产环境的历史数据,定期(一小时,或者一天一次)的装载到数据仓库里。再逐渐的,不断的优化仓库的表结构。

相关推荐

    文件上传及数据导入数据库

    在IT领域,文件上传和数据导入数据库是常见的操作,尤其在数据分析、报表生成以及系统集成等场景中。这里我们将深入探讨如何实现Excel文件的上传以及如何将其中的数据有效导入到数据库中。 首先,我们需要理解文件...

    报表文件和数据库

    在企业运营和决策支持系统中,报表文件通常用于展示和总结从数据库中提取的数据,而数据库则是存储这些数据的系统。 数据库(如db1.mdb)是一种组织和存储大量结构化信息的方式,它允许高效的数据检索、更新和管理...

    库存管理系统数据库文件

    本压缩包提供的“库存管理系统数据库文件”是此类系统的基础,用于存储和检索与库存管理相关的大量数据。 数据库设计通常包括以下几个主要部分: 1. **产品表**:记录所有库存商品的信息,如产品ID、产品名称、...

    java连接数据库包、数据报表包

    在Java编程中,连接数据库和生成数据报表是两个核心任务,尤其在企业级应用开发中至关重要。本压缩包包含的资源旨在提供必要的库文件,帮助开发者实现这些功能。以下是相关知识点的详细介绍: 1. **Java数据库连接...

    会员管理系统之数据报表和数据库管理模块的设计与实现

    本文将深入探讨“会员管理系统之数据报表和数据库管理模块的设计与实现”,并着重介绍如何利用Crystal Report工具来创建报表以及如何进行数据库的管理和维护。 首先,会员信息报表的生成是系统的核心功能之一。报表...

    教务管理系统 源程序 数据库文件

    数据库文件则是存储系统中所有数据的地方,比如学生档案、课程信息、成绩记录等,通常使用关系型数据库管理系统(如MySQL、SQL Server或Oracle)进行存储。 在教务管理系统中,源程序的设计和实现涉及到多个关键...

    数据库性能测试报告-1.0.0.pdf

    通过数据库性能测试,我们可以评估数据库系统的响应时间、吞吐量、资源利用率等指标,从而提高数据库系统的整体性能和可靠性。 测试方法概述 ------------- 在这个报告中,我们将介绍基于Tpch、Jmeter和Nmon等工具...

    C#将数据导入excel和Excel数据导入数据库

    总之,C#结合NPOI或其他库,配合SQL Server,提供了强大的数据处理能力,可以从Excel文件中提取数据并将其存储到数据库中,这对数据迁移、数据分析以及报表生成等场景非常有用。在实际应用中,你还需要考虑数据的...

    数据库系统教程(施伯乐等)

    书中首先概述了数据库系统的发展阶段,从简单的文件系统到关系型数据库系统,再到更高级的数据库系统,如对象关系数据库和多维数据库系统。这一发展历程反映了数据管理技术的不断进步和完善,每个阶段都有其特定的...

    10 生产经验:如何为数据库的监控系统部署可视化报表系统.pdf

    在数据库监控领域,部署可视化报表系统是保障数据库性能和稳定性的关键环节。本文详细介绍了如何使用Grafana和Prometheus这两个工具为数据库监控系统部署可视化报表系统的过程。首先,文章着重讲述了Grafana的部署...

    把Excel或Dbf文件的数据导进数据库中(附报告)

    在IT领域,将Excel或DBF文件的数据导入到数据库是一个常见的任务,这通常涉及到数据迁移、数据分析或报表生成等操作。下面将详细讲解这个过程,包括相关知识点、步骤以及可能遇到的问题。 首先,我们需要理解Excel...

    数据库 医院管理系统

    11. 系统性能优化:考虑到医院业务的高并发性和实时性,数据库的索引优化、查询优化和数据库缓存策略等是提高系统响应速度的关键。 12. 数据备份与恢复:定期备份数据库,防止数据丢失,并具备快速恢复机制,确保...

    asp将本地excel数据上传到access数据库中,也可用与其它数据库

    10. 打包资源:提供的"ExcelToAccess"压缩包可能包含ASP脚本、Excel模板、Access数据库文件以及可能的配置文件,用户只需根据自己的实际情况进行适当的修改和配置,即可复用此解决方案。 总结,这个示例涉及了ASP...

    数据库文件——教务管理

    数据库文件在IT行业中扮演着至...总之,掌握数据库文件的使用和SQL语言,对于理解和管理教务管理系统至关重要。通过实践和学习,初学者能逐渐掌握这些知识,从而更好地利用这些数据库文件来服务于教育机构的日常运营。

    数据库 课程设计 工资管理系统 文件包

    6. **安全性与权限管理**:系统应有良好的权限控制,防止未授权访问或修改工资数据。理解如何设置用户角色,分配不同级别的访问权限是必要的。 7. **备份与恢复策略**:考虑到数据的重要性,备份和恢复策略也是设计...

    数据库 订餐系统

    以下将详细阐述数据库订餐系统的相关知识点: 1. **数据库设计**:在订餐系统中,数据库是核心组成部分,用于存储和管理所有信息。设计时需要考虑用户信息(如姓名、联系方式)、菜单项(菜品名称、价格、描述)、...

    数据库字典报表生成器

    总的来说,"数据库字典报表生成器"是一个实用的工具,它利用PowerBuilder 6.5的强大功能,简化了数据库文档的生成过程,提高了工作效率,对于任何需要管理或开发数据库的团队来说,都是一项宝贵的资源。

    大型停车场数据库系统

    本文将深入探讨一个基于VB(Visual Basic)编程语言和SQL Server 2000数据库系统的大型停车场管理系统,包括其核心功能、设计原理以及需求分析。 一、系统概述 大型停车场数据库系统是利用先进的信息技术,对停车...

    在水晶报表中使用Access数据库

    这通常通过“数据库专家”完成,选择“Microsoft OLE DB Provider for Microsoft Jet”或“Microsoft ODBC for Access Driver”,然后浏览并选择Access数据库文件(.mdb 或 .accdb)。 4. 查询设计: 连接建立后,...

    10个数据库管理系统 代码 报告

    数据库管理系统是IT领域中至关重要的组成部分,用于存储、管理和检索数据。这些系统提供了一种有效的方式来组织和操作大量信息,确保数据的安全性和一致性。在这个压缩包文件中,包含了一系列使用不同编程语言(如...

Global site tag (gtag.js) - Google Analytics