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

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

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

         集算报表在内置集算引擎的帮助下可以基于库外文件做计算,支持的文件类型包括:文本、Excel、JSON格式文件等,还支持效率更高的二进制文件。将较大数据量的历史数据从数据库中剥离,这样除了可以满足历史查询类报表的性能需求外,还可以借助集算报表对混合数据源(文件+数据库)的支持,进行大数据量的实时数据查询,从文件系统中读取往期较大的历史数据,从数据库中读取当期较小的实时数据进行混合计算。这样的做法可以避免数据库的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、在集算报表中调用集算脚本,编辑报表表达式完成报表制作

 

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


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随与我联系,我会及为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随与我联系,我会及解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值