牵出萝卜带出泥,对于随意的删除数据库数据的惨痛教训,我已经历过不止一次了。但是自己却总是不长记性,一次次的在这个事情上犯错。
去年的时候,有一次甲方催促我删除一些测试数据,我当时非常清楚这样做是不可靠的,更加稳妥的做法是花一些时间对项目进行调整,将需要删除的数据增加“逻辑删除”机制,此功能实现之后再进行数据的删除。
但当时因为着急,所以我就又一次的“没长记性”的直接将数据删除了(也可能是自己实在太懒、轻视了这么做可能引发的后果)。这个操作执行的那一瞬间,我就知道接下来的恶果将无穷无尽。
因为需要删除的测试数据是最基础的数据,而由这些数据向上关联,购物车、订单、短消息通知、统计……一连串的上层数据表中全部出现了“脏数据”,导致整个项目大面积的报错。
为了让程序不再报错,我唯一能做的事情就是不断地添加各个地方的异常处理,或者继续进行连带数据的删除工作……就这样一层一层的向上进行数据的删除,一直删除到今天,还没有将系统中的脏数据清理完全。
有几次我甚至想将系统的数据库彻底归零,但是那样做的话恐怕工作量也不会比我现在手动的删除数据轻松多少。真可谓“自作孽,不可活”。
关于“数据库彻底归零”这个事情,还有一些其他的相关故事要说,那就是我遇到过不止一次、不止一个的甲方要求我数据条目的Id必须连续、必须从1开始。这个事情其实也非常令我头痛,我将这些人称作有心里洁癖的人。
为了不让他们继续有心理洁癖,我曾经尝试过使用HashId代替自增,但是结果并不理想,对方认为一连串的随机数毫无规律,更加无法接受。对于这个事情,我可能也要花些时间来想想该如何是好。
既然开始在“简书”上面写自己的专栏,那么就先随意的抛出一些自己遇到的问题,然后等到空闲的时候在对上面的这些问题进行整理,一点点的将专栏文章写出来,顺便也是整理一下自己的头脑和思路,说不能能够通过写作,找到一些解决方案呢。