不同系统或不同用户并发操作“脏读”的解决方案
以其中应聘者信息为例
原始数据为
此时管理员cdy想将数据更改为:
管理员zxr想将数据更改为:
但最终结果可能变为:
解決方案
1.给可能并发操作的表添加一个version字段,当其中的数据进行到更改时,对应version字段加一,要进行数据修改时,对比version字段是否匹配,不匹配终止该操作
缺点:每张表都要新增version字段,工作量太大,涉及到sql语句,DTO,PO,VO的更改
2.给后端的所有update接口进行绑定,每当有update操作时,将redis当中的data_version字段进行++,且将请求携带的version字段与redis当中的data_version字段进行比较,若不符合终止该操作。
缺点:由于对系统全局数据做出绑定,及时对应数据没有出现脏读的情况,也可能导致version不一致,导致无用的刷新页面操作
3.当后端进行update操作后,立刻用websocket 给正在进行数据更改的管理员,发出提示当前数据已更改