当前位置: 首页 > 科技观察

我们真的用好SQL数据库了吗?

时间:2023-03-15 22:34:27 科技观察

本文转载自微信公众号《关于SQL》,作者Lenis。转载本文,有关SQL公众号请联系。CRUD,其实也很难。早年在电子厂的时候,在开发MES的时候,经常自以为是的修改王师傅的代码。王师傅,真姓王,(不是隔壁老王笑话里的老王)老王,55岁,35岁上大学,自学计算机编程。在我的印象中,印象最深的就是BOM结构和工艺路线。这两个元素可以说是整个MES和ERP中最复杂的数据结构。可能外人,比如隔壁开发UI的朋友,觉得这没什么。不就是增删改查吗,能不能比angular的双向绑定更难适配IE/Chrome浏览器?儿子。开个玩笑,但每当老板笑眯眯地过来跟你谈一些需求,你肯定会拍着胸脯说,今天下班前就搞定!作为技术的朋友,你就是没心没肺,太直了。既然我拍着胸口说了,我就得加班不是吗?好吧,我经常在这种拍胸脯的场景下修改老王的代码,认为老王这种过度设计工艺路线的做法简直拖延了开发进度,近乎刻薄。在这里,我想解释一下两个名词:一是MES,ManufacturingExecutionSystem。MES是一个庞大而成熟的行业应用软件。例如,制造iPhone的所有过程、工人、机器、场地、材料和费用都将由MES收集。通过分析这些数据,我们可以提高质量、控制成本和扩大产能。因此,对于制造企业来说,要想实施数字化战略,MES必须先行一步。二是工艺路线,即部件制造工艺。下图是我在硅材料加工厂做晶圆制造时的一个常见的制造工艺流程图。程序员能懂芯片制作多少?人们想当然地认为它的产生是一个有序的事件流,步骤1、2、3、4……一步一步。所以我设计了一个表格来记录产品的生产进度。每个生产记录都有一个过程字段。当流程完成后,会自动进入已设计好的下一个流程。也就是你在图中看到的黑线流程图。我以为它无缝和自动化到了极致,但实际上,它并没有我想的那么简单。图中,还有红色箭头部分。因为每个过程都可以被挑出来并为其生产力做出贡献。有些进程之间甚至还有来回处理。所以,真正在线上运行的时候,会出现很多情况。当我指定黑色箭头的过程时,我编写了响应程序。正式投入使用的时候,果不其然,没过多久,厂里负责数据录入的操作员就来书记办公室投诉了。“小黄你写的程序,为什么到了抛光检查(又一道硅料工序)还没有清洗(又一道硅料工序)?”继续清洁。我还以为是一步步往下走呢。”“都这么久了,你不知道流程是可以互相回流的吗?没去生产车间检查过吗?”彻底被带进了沟里。我以为的程序并没有像我想象的那样跑起来。这些计件工人愤怒的眼神仿佛冲上来,狠狠地砸在我身上。“你这小子坐在办公室里吹着空调写这些狗屁东西,白白浪费我妈的时间。”就这样,除了给数据打补丁,我还修改了程序配置路由模式一夜之间,震惊了好几天!后来在组队的时候跟老王提起这件事,老王忍不住笑说,我就知道你要推翻这件事。流程路线,我写的那样的话,就是让操作者有更大的灵活性,记录不同流程的优劣,写死了,只能填坑,最后记录数据,自然就成了你的事了,蒋还是老辣。多年以后,当我再看回到下午和老王聊天的时候,依然觉得数据库schema设计的魅力深深打动了我。一个好的设计值得数百小时的错误修复。我做的项目越多,我就越害怕设计数据库结构。设计有缺陷,我就是人口中的“猪队友”。设计得好,大家都觉得理所当然。打开一个新项目就像医生接诊一个新病人。明知苦乐,明知风险大,还是继续前行。那么有没有可以一招吃遍全世界的设计呢?显然没有。电商、社交、租赁,甚至问卷调查,都各有难处。但任何想占便宜、急于上进的念头,最终都会让你在某个时候跌入万丈深渊,措手不及。再看看kimball的维度建模,虽然他总结出了每个行业最好的设计,但是行业总是在变化,模型设计还是要日新月异。他的思想,对我启发最大的,不是那20多个经典的设计思想,而是千万不要墨守成规,要谨小慎微,大胆创新。