与梦师讨论心得:软件设计要保护业务发生现场,通过数据可以最大程度的还原业务发生现场

        梦师作为“后浪”,在某园区(唉 说我是广告。。。)跟他一番讨论让我受益颇深,必须记录下来。

        从我学习软件开发技术开始,基本都是技术思维。特别喜欢ER、3NF、OO,对于存储冗余的理解也往往停留在执行效率方面。长期以来都认为,数据冗余就是为了解决查询的效率的问题。而数据冗余没有处理好,还会带来数据不一致的问题。所以,在设计时,能不用冗余都不会去用。而在一个招标记录复制编辑后再招标的功能测试时,我突然有所醒悟。

       起因:

       客户复制以前的招标记录,修改了标的物后就发出招标,系统自动发出短信通知投标方参与报价。投标方却事后说没有收到短信。我查了一下,发出去的短信并不是投标方的联系电话,只是投标方很早以前的一个电话。

       追查:

       招标记录主要记录了招标起止时间、标的物、投标方、投标过程、开标结果。其中标的物需要根据估价购买保险,投标方有名称、联系电话。看到别人的设计,记录下了标的物的id、名称、估价,也记录下了投标方的id、名称、联系人、联系电话。我感觉这个冗余存的真的是个大坑。按照以往,我可能就会存一个标的物估价的id和投标方id就可以了。这样发送短信就不会取到投标方老的联系电话了。可转念一想,这样是解决了发送短信的问题,但招标记录的意义就失去了。因为当时投标人参与那次投标时的联系电话是多少没有存储下来(当然这里先不考虑存储结构的问题)就不能完整的记录当时业务发生的现场情况,对于后续追查、追溯都不利。

       思考:

       设计上就建议产品修改为复制招标记录时,投标方联系电话不取招标记录中存储的冗余,而取投标方最新的联系电话。就这个业务而言,投标方的电话可能发生变化,标的物价格也会发生变化。存储的冗余数据主要目的并不是为了查询性能,而是完整的记录下业务发生时的现场情况。这样的设计为后续通过数据逆向还原业务发生现场,提供了数据支撑。此次跟梦师的沟通,让我总结出了一个软件设计的原则,数据存储设计要考虑保护业务发生的现场情况,通过数据可以最大程度的还原业务发生现场。

============

感谢某园区(唉 说我是广告)门岗、一体机设计师梦师。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值