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

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

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

       起因:

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

       追查:

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

       思考:

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章