一次编辑大量数据设计总结
2023/8/22大约 2 分钟
记录记录
产品下来一个需求,是做一个价格策略功能,流程大概是建立一个策略,然后添加一批商品,对这些商品进行设置规则。
在分析的时候,发现一个问题,产品上需要对一批商品数据进行编辑,全部编辑完成之后才保存,编辑完成之后也可能丢弃。
问题是这一批数据有可能会很大,达到10几万的数据,不能让前端全部拉下来,编辑完成后,再一次传给后端保存。拉取全部数据,会对服务端造成很大压力,还可能造成内存问题,同时前端一次发送大量数据给后端保存也是有问题的,一是传输问题,大量数据网络传输慢,二是后端处理问题,需要处理大量数据,再一次性保存到数据库,整个流程下来是会占用了大量时间,接口请求很慢;从用户端体验来说,是功能卡顿。
只能再想想其他方案,按照以前的操作,编辑第一页数据,保存下来,接着对下一页进行编辑,再保存。这种方式一次请求和操作的数据量不多,请求和响应上是没有什么问题,但是编辑完一页就保存,达不到产品上的效果,一次编辑完所有的商品,编辑完后再保存。
所以,我在想如果一次请求少量数据,最后又是一次性保存编辑后的结果,那就达到我们的要求。
顺着这个思路,如果使用一个中间表把这些操作数据转移到服务端,先不保存,等全部编辑完成后再保存,是不是就可以达到这个效果,每一页修改的数据都暂存在这里,最后保存时再一起保存上去,在回显时,也优化回显编辑后的数据,这样就达到了可以一次编辑几百页,最后再一起保存,在性能上又没有什么问题。
当然,这样做还有一个问题,那就是在编辑时,会保存一个临时数据,如果我们每次都只是修改,没有进行保存,那表上的临时数据会产生很多,所以这里也需要做一个数据清理操作,也就是每天、或者每个小时清理一下没用的数据。