深入了解数据导入的一些解决方案
0x02:异步导入
如果数据量比较大的话,同步导入显然不合适,可以采用异步导入数据的方案。主要设计两个接口。
第一个接口:该接口负责上传Execl电子表格;然后在Redis设置一个未完成的标识,同时开启一个线程执行解析Execl电子表格数据;最后执行业务操作把数据导入到数据,完成后把在Redis设置的标识标志成完成;
第二个接口:用做轮询,获取导入数据完成的情况
同理,如果需要记录记录行的验证情况,可以把验证的记录行情况记录到数据库,然后再设计一个接口导出记录行的导入情况。
0x03:导入服务
前面两种方案,都没有把上传的Execl电子表格文件、导入时间、导入人的相关信息记录下来。如果出现一些意向不到的问题的话,非常不方便排查错误。所以有时需要设计一个库表,把这些信息记录下来,方便在出现问题时,进行排查。设计的记录表的字段可以大致如下:
id:主键id
file_path:上传的文件的路径
file_type:文件类型
module: 所属业务模块
opr_state:导入的总体状态,0成功,1失败
upload_time:上传时间
upload_user:上传人
这个方案再结合第一种或者第二种方案,就可以完成一个导入服务功能。
总体来说设计一个比较好的导入功能需要两张表和三个接口
两张表:导入信息记录表、Execl记录行数据验证状态及该行导入情况表
三个接口:上传Execl电子表格与异步数据导入功能接口、轮询是否导入成功状态接口、下载导入Execl记录行数据验证状态及该行导入情况接口
喜欢,在看
评论