天天看点

报表工具评测 | 数据量大的清单报表哪家强?

作者:明月说数据

在生产环境中,我们常常面对数据量庞大的报表需求,尤其是在金融领域中。比如清单列表,需要列出一段时间的交易清单,这种报表的特点是数据量特别大,可能会有几千上万页。不过,由于计算比较简单,经常只是罗列,最多有些按页按组的汇总。

如果仅仅是数据量特别庞大,没有特别的报表数据计算需求,我们需要根据运行速度指标结合自己项目的需求来确定合适的报表工具。为此,我们评估了国内的一些报表工具,并进行了报表打开所消耗时间性能测试比较。

本次选择了FineReport和Spreadsheet两款产品进行测试。在测试过程中,我们主要考察了这两款产品在报表生成速度方面的表现。我们将以客观的态度,通过数据和对比分析,为大家提供参考。我们相信,经过本次评测,对于选择适合自己项目的报表工具,能够提供一定的帮助。

本次示例以9千八百万的数据,做清单分页报表,来比较其报表打开消耗时间。

报表选取六个字段,每页显示2000行、1000行两个对比示例,示例的效果如下图:

报表工具评测 | 数据量大的清单报表哪家强?

示例一:选取6个字段,每页显示2000行

发现finereport服务完全卡住,等待了几分钟都无法返回数据,无奈放弃了:

报表工具评测 | 数据量大的清单报表哪家强?

另一边,Spreadsheet的打开情况乐观,9千8百万的数据,清单分页显示,每页显示2000行,服务器总耗时225ms:

报表工具评测 | 数据量大的清单报表哪家强?

示例二:9千8百万的数据,选取6个字段,每页显示1000行

finereport的服务器总耗时1400ms:

报表工具评测 | 数据量大的清单报表哪家强?

补充说明:这个实现需要进行配置,使用新计算引擎,让报表的数据分页显示是基于一下设置,设置分页显示,每页显示1000行。

报表工具评测 | 数据量大的清单报表哪家强?

接下来,看一下Spreadsheet的报表打开耗时情况,每页显示1000行,服务器耗时214ms:

报表工具评测 | 数据量大的清单报表哪家强?

综合对比,亿级数据情况下,每页显示1000行,finereport的服务器总耗时1400ms,Spreadsheet的服务器耗时214ms,显然Spreadsheet在此场景下,性能更佳是Finereport的6倍多。

后续查看了这两个产品的资料,大概了解到finereport最大能支持百万级的数据,超过百万级就会有性能问题,卡顿或宕机。其原因:finereport的报表取数不直接从数据库取数,其报表需要将数据从数据库拉数先存储到服务器后台内存里,报表再从内存里面读取数据,隐藏性能上面会慢一点。

而Spreadsheet,在清单表分页的情况下,数据无需返回服务器内存,当报表进行翻页并超过已查询的数据量时,后端会请求下1000行数据,以此类推,由于清单表的策略是每次只查询一部分数据,因此不必担心大数据分析场景下的内存溢出等性能问题。按照每页显示行数按照需要去数据库进行取数,从而不会给服务器带来负担。

业界的常见做法是边读取边呈现,每次只展示一页,以免溢出;读满一页后立即展示,避免用户过度等待。最好在数据准备阶段就需解决这个问题。可以使用两个异步线程:一个用于从数据库中取数并缓存到性能较好中间库;另一个则接受前端请求从缓存中按页(行)取出数据并返回。

总的来说,finefeport和Spreadsheet两款产品都有其优势和劣势。在选择合适的报表工具时,我们需要根据自身项目的需求进行权衡和选择。若数据量较小,可以考虑finereport;若需要处理大量数据,则Spreadsheet可能是更合适的选择。

继续阅读