橙单微服务之批量导入

在这里插入图片描述
上面这些代码全部是自动生成的,批量导入
如果你配置了这个表单,支持批量导入,那么代码就会生成,否则不会。
在这里插入图片描述
出于性能考虑,这里可以存储在本地,当然也可以存储在minio等oss中
在这里插入图片描述
橙单会生成一部分需要忽略的字段,比如创建人,创建时间,更新人,更新时间,逻辑删除等。
这里也给出了注释,如果要忽略其他的字段,也可以直接在这里修改,一行即可。

在这里插入图片描述
如果excel中的顺序,不是字段中的顺序,可以在这里适当调整即可。

从这两点可以看出,修改就是非常简单的。二次橙单,刻意没有去考虑生成100%的代码,而是确实预留出一些二次开发的填空。这样就非常容易达成平衡。在代码质量,架构、业务和开发效率方面。非常平衡。

如果过度的追求代码生成占比,代码质量和运行时效率都会大幅度下降的。

在这里插入图片描述
这里生成的代码注释,解释的都很清楚,如果要做导入数据的字典翻译,只需给这个set添加字段名即可。非常简单。

比如,excel中存入的是gradeName,如“二年级”,这里就会翻译成为对应的id,比如:2,然后插入到原始业务表中,这个就是批量导入中的字典翻译能力
在这里插入图片描述
在实际导入的代码中,橙单没有简简单单的使用 普通的方式,而是采用了这种SAX的回调模式,这样可以在导入数据过多的时候,不仅可以加速导入效率,同时还能节省内存。
在这里插入图片描述
这里会对所有导入到内存中的数据,进行关联字段的验证
在这里插入图片描述
这里就是批量验证,这些都是橙单为生成的代码,如果有误生成的,可以直接修改,并移除。
在这里插入图片描述
这些都是基于常量字典的数据验证
在这里插入图片描述
这些都是字典表字典的验证,这些字典表都是物理的数据表,但是数据都在缓存中,因此效率更高。
在这里插入图片描述
这些是普通业务表之间的关联id的验证。
因此在橙单中,这三类id验证都是完整支持的。
常量类,缓存的字典数据,和数据表中的字典。

对于性能而言,如果有有10万条批量导入的数据,有4个这样需要验证的字段。

那么验证的次数就是40万次,这个性能开销是巨大的。

橙单通过两种方式优化了,第一就是有的字典是redis缓存,还有就是所有的验证都是批量验证,

比如一次验证1000条,那么对数据库的操作次数,就会降低一千倍
如果有的验证id是基于redis的,那么会折半对数据库的访问次数。
在这里插入图片描述
最后一步,就是批量插入了。即便这一步,橙单生成的代码也做了足够的优化,
第二个参数是-1,表缺省全部批量插入了,这个批量是真正的insert list那种批量,不是循环insert那种伪批量。
如果第二个参数不是-1,而是具体的数字。
比如10万条数据,不可能一个insert list全部插入,这个是有数据库语法限制的。而且也不能这样蛮干。

所以我们可以设置每个insert list的数据条数,比如2000,那么10万的数据,就会分为50次插入。并最终一次提交

这样可以有效地规避数据库的语法限制,同时也不会给数据库瞬时带来巨大的压力。

好了,批量导入分享到这里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值