博客
关于我
千万级别的数据量如何设计导出
阅读量: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/

你可能感兴趣的文章
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>