博客
关于我
千万级别的数据量如何设计导出
阅读量:143 次
发布时间:2019-02-28

本文共 743 字,大约阅读时间需要 2 分钟。

我们平台最近有个需求需要查询每天的业务日志,然后也有导出功能。

每天业务量数据很大。每天都好几千万的数据。

 

 

问题分析

首先你这日志存哪里呀?文件系统还是数据库表,还是 NoSQL,存的位置不一样处理方式不一样。

另外你的数据结构是怎么样的,是简单的数据结构,还是复杂结构,字段是不是很多。

假设你数据就在数据库中,查询的结果返回多少的数据?如果就返回几万,可以考虑转换为 CSV 文件,CSV 文件 Excel 是可以打开的,而且 Excel 也有打开限制,记录太多了 Excel 也会被拖死。

参考解决方案

针对你现在的数据库,千万级别的,不管采取什么方案,什么 POI 工具在线导出方案都会超时。

原因有:

  1. 数据处理时间会很长,生成的文件会很大,网络传输回来肯定会超时。
  2. 其次 Excel 建议的数据量一般是不超过 5 万,全部导入到一个文件中,客户的电脑是根本打不开的,Excel 早就会被拖死了。这样的数据给你们业务毫无意义。就算勉强打开了, Excel 的搜索功能根本用不了。
  3. 你这还是一个用户导出的情况,如果 10 个用户同时导出,你试试看?

所以,你需要和业务商量你们到底要这些数据干什么。但是放一个文件中肯定是没有任何意义的。

正常来说针对这种数据量的通常处理方案是 Spring Batch 做批量。根据数据库的时间或者 ID 来进行批量处理后生成文件。然后将生成的文件放到某一个存储位置,通常可以是云存储。

前端用户只提交请求,在导出界面可以这样设计,当用户导出数据量超过 2 万后,前台页面提示说:您的导出请求已经被后台批量程序处理,请检查邮件获得下载地址。

处理策略可以使用 API 调用或者消息。

正常的系统设计是针对这种数据量肯定不会做基于网页的数据导出的。

转载地址:http://lgld.baihongyu.com/

你可能感兴趣的文章
Moment.js常见用法总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
MongoDB学习笔记(8)--索引及优化索引
查看>>
ms sql server 2008 sp2更新异常
查看>>
MS UC 2013-0-Prepare Tool
查看>>
msbuild发布web应用程序
查看>>
MSCRM调用外部JS文件
查看>>
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
msf
查看>>
MSSQL数据库查询优化(一)
查看>>
MSSQL日期格式转换函数(使用CONVERT)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>
Mstsc 远程桌面链接 And 网络映射
查看>>
Myeclipse常用快捷键
查看>>
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>