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, 缓存数据。