个人EXCEL报表的开发经验

2017年在谷沃信息科技有接触过EXCEL文件报表的导入开发工作,建设银行 建信人寿保险公司的系统的数据量的更新级别都在百万级别之上。每隔一段时间都要定时的往系统的数据库里面批量的更新数据。使用的解决方案是使用SPRINGBATCH批处理框架,其它的技术前端使用BOOTSTRAP,后端数据库是ORACLE, 控制器层是SPRINGMVC, 操作数据库层使用原始的JDBC.

SPRINGBATCH 批处理框架的特点是

分作业步骤

分区

分库

分节点服务器(多服务器部署)

分线程(多线程异步执行)

分线程具体是把EXCEL文件才分成为较小的CSV格式的文件,当时测试的时候是把一百万的数据量EXCEL报表拆分成为16个小CSV格式的文件,分配16个线程进行处理,每个线程处理一个文件的数据读写操作。

在配置文件上面配置数据库写事务的提交间隔,基础配置是10000条数据一次。使用单节点机器进行报表文件导入测试,执行分线程这一种框架的处理数据机制,测试结果是耗费时间除以6.SPRINGBATCH技术框架处理海量的报表文件读写比较专业,而且还有多服务器节点部署处理等机制。EXCEL数据量级别在百万 MILLION 以上推荐使用该专业的技术公司开发的数据报表批处理系统。

2020年在平安银行也是接触报表的导入校验开发工作。当时项目组使用的技术架构是DUBBO, PJ, ES , VUE, MYSQL, SPRINGBOOT, MYBATIS. 这个项目的突出特点查询性能较好,使用ES索引库进行数据查询。使用FUTURETASK , 线程池的方式提高数据处理效率。

2021年在广州祺源的EXCEL报表导入校验开发任务使用

多线程异步机制

线程池

数据库事务提交间隔10000

该开发任务的重点在于检验信息的处理

去年在OPPO MYEHR 人力资源管理系统中导入校验工作,提高性能的方式是体现在代码层面。

检验信息分为三种类型

前端配置检验信息 配置灵活,注重业务逻辑

后端的校验信息是通用检验信息的抽象层面,体现较多的校验信息

数据库层面的检验方式使用存储过程

存储过程的代码运行性能较高。

项目组提出使用中间件REDIS提高文件的加载效率性能。

2022年五月份在深圳易联盟公司接触到的报表EXCEL数据更新,要读取较多的EXCEL 报表文件。硬件文件中的数据加载到计算机的运行内存中的读写IO,磁盘IO, CPU IO 都是需要时间。批量的读取报表文件是一个费时费力的过程。

推荐使用中间件REDIS. 批量定时的把数据加载的中间件REDIS 之中,然后批量的处理文件中的数据。

对于多张数据报表的文件的前三列和前三行可能发生变化。

使用定时排程,监控报表文件,心跳检测。

发现文件数据有修改,处理这种变化的方式

文件数据一旦发生改变

及时更新:数据报表文件一旦发生改变,加载文件,处理之后更新到数据库或者是写到数据集合之中,打印出报表。

定时更新:定时排程的编写,CRON 表达式,定时任务处理

手动更新:使用用户手动的点击按钮巡检报表文件有没有数据修改,然后做相应的处理操作。

综上所述

读取报表文件提升性能的方式

使用线程池FUTURETASK

多线程异步处理

数据库提交间隔灵活配置

中间件REDIS, 缓存数据。

你可能感兴趣的:(解决方案,excel)