今天给大家讲一件职场小事。数据库有个同步数据的功能,会把数据表A里所有数据同步到数据表B里,但是同步的时候不是一次性同步完,为了提升性能使用了unlogged table的表在数据表B里。
"unlogged table":在数据库中,"unlogged table" 是指一种特殊类型的表,其数据存储在内存中,而不会写入到磁盘中的日志文件中。这种表通常用于需要高性能读取操作的数据存储,因为它们可以提供更快的读取速度。然而,这种表在数据库崩溃或服务器崩溃时可能会丢失数据。
异常重启后,数据表里B的数据直接都丢失了。当时在做该需求的时候,测试识别出异常重启后,数据表里所有数据都丢失了。测试人员希望解决该问题。因为客户确实会因为丢失数据而感到不安全。
但是某个开发组成员为了上线,就没有处理该问题。当测试问如果客户碰到该问题该怎么办。开发组成员就建议让客户把触发同步数据从表A到表B的动作重新做一遍。
精彩的地方来了,客户真的在几个月之后碰到了异常重启的场景,运维人员就按照当时某开发组成员把解决方案写到客户提的问题单里了。
然后运维被批评了,因为该解决方案虽然能解决问题但非常繁琐,而且要触发的操作太多了。找1-2个人,1-2天都不一定能完成。如果客户按照该解决方案执行,那么就操作麻烦,如果不按照该解决方案,客户就阻塞了。
这个问题最精彩的地方就是书面化当时解决方案被批评的事情。如果你不想让客户知晓该解决方案,那么为什么当时不解决该问题。
阿萨想说,如果你不想你的客户知晓该解决方案,那么一开始就不应该放任该问题到客户现场,还不解决。
这让我想起之前看到的关于不道德的解释:不能见报,不能告诉母亲的事情都是不道德的。
“在我个人看来,不管你是属于哪一个阶级的,有的东西是有共同的原则的。有人说,只要自己的良心感到安宁,就不涉及‘不道德’,这个我倒有点异议,因为每个人的良心的承受力不同,同样的事情,也许你的良心会不安,而他的良心未必不安——我个人以为,如果你知道你做的某件事情,明天要合法地见报,你会因此感到不安,那么这件事情就是‘不道德’的;如果你做的某件事情,你的母亲知道了会感到羞耻,那这件事情就是‘不道德’。
套用上述结论:不敢书面化的解决方案以及不想让客户知晓的解决方案就不是好的解决方案。
你觉得呢?