数据库订单表中每个用户的记录有15种状态(12种状态码代表在途状态,3种状态码代表终结状态)。
数据之间的状态可以进行流转。
要求同一个用户的在途状态只能有一条记录,终结状态可以有多条记录。
如何保证数据完整性
代码流程,在插入数据库之前进行数据查询,如果查询出当前用户没有在途状态的数据,则进行插入;如果查询出当前用户有在途状态的数据,则不插入。
但是在同一个用户并发高的情况下,会出现数据不严谨的情况,这个大家都知道。
如果是单节点的情况下,可以使用同步(synchronized)的方法解决数据完整性的问题,但是当同步的时候也阻塞了其他所有用户的操作,造成性能低下。
炎炎设计
相关分类