原子性、唯一性的软件架构问题

昨天遇到一个软件架构的问题:好说歹说楞是没表述明白,说不到点上,今天总结一下,让我的思路更清晰一点,不至于因为表达不清晰而导致问题被留下了。


假设有一张表,这张表无与伦比的重要,那么这张表的每一条记录都必须要保证原子性、唯一性!如果有例外,将意味着这条记录很难查找,很可能会出现相同的两行数据,导致你无法定位每一行记录。当你对这张表做定位操作时,有可能导致出错。这也就是为什么我一直担心的,必须要把这个主键补齐,因为它让所有依赖它的程序都充满不确定性。

可能你仍然有以下疑惑?

(1)这张表里添加的无主键数据我统一不做处理,完全由别人创建、别人使用,这样的话,每一次执行都需要做创建、使用操作,而且在使用过程中很难确保程序不出错,无论谁操作这样的数据都是不安全的,墨菲定律里有句话说:会出错的事总会出错。留下一个易出错的漏洞,保不齐它以后会被人放大出错。

(2)你确信用组合主键也能确定一条记录,它也满足原子性、唯一性,这是允许的。只要你真的确信它能保证唯一性,而且大家都用这个原则做唯一性处理,如果这张表你弄了两套唯一性,那也是有问题的。在处理这种组合主键的时候,后台怎么将它存到Map里面来标记每行记录?可以将组合主键字段全转成String类型,然后加起来做主键,如果你做缓存、做Map、做快速匹配,这样也是可以的。

(3)今后如果做纠错、调试、检查处理等等操作的时候,这个例外会让人头疼无比。


记得以前我们在设计前后端数据交互的时候,曾经就遇到过这类事情。当前端要保存一条数据的时候,记得一定要将数据的性质描述准确、完善,这就是一条重要交互数据的原子性问题,关键字段必须保留。比如添加、修改、删除,这个操作类型前端是知道的,你不标记这条数据,扔到后台,后台就分辨不出它是什么操作类型。今后做出错调试、定位数据、检查处理、纠错处理,因为你不能唯一定位一条数据,都将让这类工作变的更难完成。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值