本文共 743 字,大约阅读时间需要 2 分钟。
我们平台最近有个需求需要查询每天的业务日志,然后也有导出功能。
每天业务量数据很大。每天都好几千万的数据。
首先你这日志存哪里呀?文件系统还是数据库表,还是 NoSQL,存的位置不一样处理方式不一样。
另外你的数据结构是怎么样的,是简单的数据结构,还是复杂结构,字段是不是很多。
假设你数据就在数据库中,查询的结果返回多少的数据?如果就返回几万,可以考虑转换为 CSV 文件,CSV 文件 Excel 是可以打开的,而且 Excel 也有打开限制,记录太多了 Excel 也会被拖死。
针对你现在的数据库,千万级别的,不管采取什么方案,什么 POI 工具在线导出方案都会超时。
原因有:
所以,你需要和业务商量你们到底要这些数据干什么。但是放一个文件中肯定是没有任何意义的。
正常来说针对这种数据量的通常处理方案是 Spring Batch 做批量。根据数据库的时间或者 ID 来进行批量处理后生成文件。然后将生成的文件放到某一个存储位置,通常可以是云存储。
前端用户只提交请求,在导出界面可以这样设计,当用户导出数据量超过 2 万后,前台页面提示说:您的导出请求已经被后台批量程序处理,请检查邮件获得下载地址。
处理策略可以使用 API 调用或者消息。
正常的系统设计是针对这种数据量肯定不会做基于网页的数据导出的。
转载地址:http://lgld.baihongyu.com/