专业人士来告诉你“150岁老人领社保”是什么笑话
福克斯台报道截图。马斯克声称有150岁的老人在享受社安保险。
资深IT人员告诉你,为什么DOGE总是闹笑话
本文为非营利调查新闻编辑室“Information Justice(信息正义)”原创作品,与“美国华人杂谈”联合发表。欢迎转载、分享、转发
撰文:溪边愚人编辑:新约客,溪边愚人
自马斯克和他领导的“政府效率部”(DOGE)在各个联邦政府机构开始查账后,他们公布了不少让人惊掉下巴的各种腐败/浪费信息。虽然一次次被媒体的事实核查打脸,他们还是不断发布新的耸人听闻的信息。
最近几天传得比较疯的一条消息是,美国有很多 150 岁的人还在拿社保。马斯克也拿这个事大说特说,在 X 上用推文说,在白宫椭圆办公室里对着记者的镜头说。只是,又很快被打脸。PolitiFact 说,这是电脑编程造成的数据假象,并非真有其事。
用大白话说就是,向系统输入数据时,如果在生日一栏不输入任何数值,系统就会自动填充为 1875 年 5 月 20 日。那么,这些人今年就是 150 岁!
这件事好笑吗?似乎很好笑。但我笑不出来。作为一个参与了四次大型数据迁移(data migration)的前资深数据库 IT 从业人员,我想说的是:不是专业人员,数据库后台是不能进去的,一是有造成危害的可能,二是你看不懂,会误读数据。
任何一个数据库都有自己的特殊性,有自己独一无二的“故事”。要读懂数据,不仅要有关于数据库的 IT 常识,还必须具体了解这一个数据库的“故事”,有时甚至需要了解其前世今生。像 DOGE 那样去读数据库,他们读出来的东西毫无价值。
为什么非专业人员不该进数据库后台
数据库后台只是给数据库 IT 专业人员用的。任何非专业人员需要看数据,都是通过应用程序,就是我们平时说的 app,或者请专业人员提供报告。从专业角度来说,有千千万万个理由不允许非专业人员进入后台,这里只从常识角度说几点。
第一,你读不懂后台数据。从 app 上看见的数据是经过一定条件的组合与过滤的。这个我后面会展开说。
第二,app 里面的内置规则后台未必有。比如,某个名单的输入规定生日不能空缺,输入空缺数据 app 会不接受。但后台如果没有做同样的设置,就有可能接受这样的数据,于是就产生了“坏”数据,隐患无穷,严重的话可能会使系统崩溃。也有自己的系统不崩溃,但数据打包出售后,把买家系统搞崩溃的。
第三,app 里面往往都是处理单笔数据,而数据库后台却可以“全体”数据一起处理。如果有后台删除的权限,不小心就把数据都删光了。
为什么非专业人员会看不懂后台数据?
回答很简单,数据库的后台本来就不是给非专业人员看的。其实这就好像程序只是给程序员看的一样。问题是,一般人都看不懂程序,所以不会去看。而数据库的后台似乎像一个个 Excel 表格,让人产生可以“看”的感觉,其实不然。数据库后台的表格与 Excel 表格完全不是一回事,你要当作 Excel 表格来读,大错特错。
举个例子,一个公司的员工表,其中有一栏是“是否在职”,里面分别有 0,1,2,3,4 等近十个不同数值。首先,你不能简单地认为表格里所有人都是在职员工。其次,你不能简单地认为 0 代表离职,1 代表还在职。很可能不同数值分别代表了退休,离开该公司后又回来重新入职,在休产假,或者休长病假等等。如果没有系统说明书,这些都需要从知情者那里了解。
这还是栏目名字有直观意思的。有的时候你根本不可能从名称上猜出真正的意思。有时是名称本身看不出意思,更多时候是,一个栏目的功能已经“进化”,超出了原来名称的意义。
记得 2020 年大选时,网上盛传某个州选民数据库里很多选民生日是 1800 年 1 月 1 日或 1900 年 1 月 1 日。于是有人说,这还了得,200 多岁的人还在投票!
说实话,我当时一看就明白,这一定是一个派特别用途的特定数值。果然,后来听见 CNN 电台里解释说这是个占位符(placeholder),说是用这个日子代表已经投过票的人。当时我也对人说,我猜是个特定值。但马上有人说,从来没见过设计数据库时,生日栏不输入生日信息,却派这样的用途。不可能!
我只能说,这样说话的人不懂得数据库前台与后台的区别。这种实践在数据库应用里非常普遍。你没听说过是因为你只看得见前台,而做后台的人不需要告诉你这些“肮脏”的东西。
没有人会在设计数据库的时候就决定把生日栏派这个用场。这样的“设计”都是慢慢演变出来的。任何企业或机构,业务范围或运作方式随时会发生变化,于是对数据库就会有新的要求。一个数据库投入应用后,结构不能随便改。即便现在数据库已经越来越机动灵活了,改变的空间也有限,这就必须在现有条件下发挥创造性来满足业务要求。
我不知道上面例子的真实情况是怎样的,但我可以从专业角度猜测。下面就是几种数据库应用中经常发生的只有在后台才看得见的“不寻常”现象(其中包括但不限于针对上面例子的情况)。
1)数据库后台有不止一个生日栏,分布在不同的表格里。
这就有了机动性,可以保留一个生日栏作为真正的生日,其他派别的用途。上面例子就很可能是这种情况,凡是已经投过票的,就在这个多余的生日栏输入特定的日子,如果这个选民再次来投票,系统就会拒绝。
别问我为什么会有一个以上生日栏。这个世界稀奇古怪的事情很多,包括数据库的设计或数据库里的数据。大概率是从不同地方数据迁移过来汇总的结果,为了某种原因——比如同一个人不同来源的数据给出不同的生日——不得不给两个、三个生日栏,把不同来源的生日存在不同地方,日后慢慢清理,最后全部输入一个地方。
2)有一种可能,以前对搬离本州或故世的选民,都是采用删除的做法。后来业务要求变了,需要保留记录,只是将这些人标为不能投票。
为了满足新的业务要求,做后台设计的人决定用生日栏来做标记,凡是搬离的选民,就把生日改为 1800 年 1 月 1 日;凡是去世的,就输入 1800 年 1 月 2 日;凡是犯罪被剥夺投票权的,生日一律是 1800 年 1 月 3 日......关键是选择一个“不可能”的日子,这样就不会与真实的日子混淆。
这里就再现了我前面说的非专业人员看不懂后台数据的情况。要从后台调出今年的合格选民,你必须知道选择条件,必须排除那些生日是特殊日子的人。不知道的人直接去后台看数据,就以为自己发现了惊人的秘密。事实上,那些选民是不会获得投票资格的。如果是从 app 里看,你根本不会看见不合格选民,因为被系统过滤掉了。在 app 上,可能只有有特别权限的人才能看见不合格选民。
3)也有可能,数据库原先的设计是,投票记录表格只记录最近一次选举的投票。系统也不保留历史投票记录,每次选举就抹去以前的记录,重新开始。但是,后来又要求保留所有投票记录。于是,名称为“最近一次选举投票记录”的那个表格里,一个选民会有很多记录。让事情更糟糕的是,那个表格没有投票日这一栏,也没有其他可以用作类似用途的内容,这样的话,要调出最近一次投票记录就必须通过与其他表格中的记录相连,甚至可能需要利用系统内在的“时间戳”(timestamp)才能调出正确的内容。当限制条件在另外的表格里时,仅仅看一个表格,就不可能知道这一笔记录是不是“有效”。至于需要利用系统时间戳的,这是“不可见”的东西,外行在后台绝对看不出名堂,相反还会“发现”,居然有那么多人在一次选举中多次投票!
数据库是个特别的东西
数据库有其特殊性,也有自己特殊的难度,特别是做系统的改朝换代。我做过好几个大型数据迁移项目,深知把数据从旧系统迁移到一个结构完全不同的新系统是一个非常挑战的工作。稍有不慎就会犯毁灭性的错误。
以显示员工名单为例,如果一个应用程序忘记考虑“在职与否”那个栏目,把不该包括的名单都显示了出来,只需要在程序里加一个条件就改正了。这样的错误,除了面子不好看,不会有大伤害。但如果是数据迁移把这一栏漏了,就再也没办法区分员工的在职状态了。
当然,不会有人犯这样低级的错误,我只是举例说明数据迁移很容易遗漏关键的数据信息。如果事后才发现,数据的修复极其挑战,甚至会有不可能修复的情况。有的链接一旦失去就连不回去了。
说这么多,一是为了说明数据库任何“小”错误都可以有严重后果,二是想说,联邦社保数据库中的数据从 1935 年至今,一定是经历过多次数据迁移,每次迁移都是一番脱胎换骨,再加上平时免不了的大小“补丁”,一定有很多“故事”,因而读数据时会需要很多“窍门”。
总之一句话:数据库不仅需要专业的人来维持,还需要专业的人来用。
DOGE 成员绝对不该被允许进入数据库
二十多年前,这个行业的管理都还不那么正规,我们做数据库的人都有上生产环境服务器的权限(后来都被拿掉了,只有专人才有)。平时需要做什么,先在开发环境服务器上测试,没有问题了就自己直接上生产环境服务器做。我每次上生产环境服务器都会紧张。我以为是自己菜,才会紧张,后来一位很“老”的同事告诉我,他每次上生产环境服务器手都会发抖,我才知道,并不只是我。因为责任的确是太大了,而且后果严重。这也是为什么会有那么多人,不惜辞职也不肯给 DOGE 的人进入数据库的权限。
我见过几乎是最好的数据库,但也见过让人哭笑不得的数据库。一个严肃的数据库,设计合格的话,任何一个操作应该都可以还原,哪怕在后台操作也会留下完整的审核记录,包括谁做了改动,什么时候改的,改动之前和之后的内容分别是什么等等。
我不知道联邦政府的数据库质量如何,但我一直记得,川普第一任时曾经搞过让无证移民孩子与父母“骨肉分离”的事情。我非常吃惊的是,纽约时报记者说,当某个记录从数据库中被删除后,就再也找不到孩子与父母之间的那个联系了,结果后来有相当一部分孩子再也没有能与父母团圆。由此可见,至少不是所有联邦政府的数据库都是高质量的。
我听说马斯克手下几个毛孩子获得进入后台的权限,真的有遭了电击的感觉。那些人很可能是我们称为码农的人,自以为编程本事了得。而且码农往往因为数据库工程技术成分低,看不起数据库的活。但正是这个看不起会要人命——不懂得数据库的特殊性,还轻敌,最容易闯祸。
说实话,他们闹了那么多笑话一点也不奇怪。我只希望,他们没有对数据库造成不可逆的伤害。
当然,还有一个需要担心的因素是,他们会不会随便泄露不该公开的信息。毕竟他们中的一个曾经有过这方面的劣迹。
这还只是说有没有对数据库造成技术上的伤害。至于他们满天飞的谣言极坏的政治影响,都不知该从何说起了。不过,那也不是本文的话题。这里我只说一点:数据库里有个名字没有任何意义。只有查到具体人,而且证明真的拿了钱,才可以作为证据。
参考资料
https://www.fox5dc.com/news/elon-musk-claims-150-year-olds-social-securityhttps://www.politifact.com/article/2025/feb/17/are-150-year-old-americans-receiving-social-securi
版权声明:
作者:zhangchen
链接:https://www.techfm.club/p/192899.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论