晚上十一点半。电梯门“咔哒”合上,手机屏幕的光在走廊里倏地暗了。白天攒了一肚子的工单消息,总算歇了。我站在玄关换鞋,玻璃门里晃出张脸,看着就透着股倦。不是那种累得骨头架子散架的虚脱,是长期把自己往“紧凑”里塞,塞到最后,心里头空落落的。咱们现在不都爱把自己收拾得板板正正吗?跟清理电脑桌面一个德行,能删的删,只留最顶用的快捷方式。说实话,这事儿看着利索,其实挺耗神。真累。

前阵子逛旧书摊,鬼使神差翻出一本《Oracle数据库技术实验教程》。纸页都黄透了,封面还是那种老派的工程制图风,一看就是十年前的老物件。里头教的倒是实在,手把手带计算机专业的学生建表、敲主键外键,把一堆乱麻似的数据拆成模块,最后硬凑出个“第三范式”。书里反反复复就盯着一件事:消冗余。多存一份数据,更新时就容易扯皮;关系没理顺,查起来就卡壳。一切都得给系统的稳定和效率让道。Oracle现在早被云原生取代了,但这道理嘛,还真就在那个理儿上转不出圈。

我把书合上,忽然觉得这套路,跟咱们这些年折腾生活的劲儿简直一模一样。社交列表分分组,没用的往来直接删。周末排得跟阅兵似的,连情绪都得按“重要性”和“紧急性”分门别类。咱们给自己搭的逻辑,严丝合缝。主键是搞事业,外键是扛责任,索引嘛,是日复一日的老习惯。总以为只要规范化做到位,人生这台机器就不会宕机,顶多跑慢点。可转念一想,真能这么干吗?也就刚毕业那会儿信这个。现在回头看,把自己拧得太紧,反而容易断。真的。

数据库是死物,人是活的。教程里写得明明白白,冗余是万恶之源,不赶紧清掉,插入异常、删除异常准找上门。但我在现实里摸爬滚打久了,倒觉得那些被咱们划为“冗余”的零碎,偏偏是托住日常的硬骨头。下班路上突然绕了八百米,拎回的那束不贵但带着水珠的洋桔梗。明知道对方纯粹在倒苦水,还是耐着性子听完了半小时废话。明明回个“收到”最省事,偏要多敲一行“今天辛苦了,早点休息”的笨功夫。数据库管这叫“数据重复”,过日子的人管这叫“余地”。

以前我特怕失控。做项目非得画满甘特图,过日子清单列得比说明书还细,连看电影都得挑评分最高、时长最短的。总以为把生活按规范排好版,就能躲开所有“异常”。直到去年秋天,手头的项目临时砍掉,我凭空多出一整天时间。我就那么坐在工位上,啥也没干,光瞅着窗外梧桐叶子一片接一片往下砸。那一瞬间我突然通了:人哪是靠精准运行活下来的。咱们靠的是那些看着挺废的停顿,靠的是关系里那点不算账的黏糊劲儿,靠的是允许自己偶尔“跑偏”的脾气。喘口气。就一会儿。

说句掏心窝子的话,我以前也贼烦“浪费时间”。总觉得没产出就是亏本。后来慢慢咂摸出味儿来,生活里不少事儿本来就没法给明确返回值。就像那本实验教程里教的,表跟表得靠外键绑着,可人跟人之间,靠的往往是那些连键值都套不进来的闲聊。你不用向对方交差,也不用急着要反馈。这种模模糊糊、效率低下、甚至带点“冗余”的瞎扯,反倒成了挡住生活粗粝感的一层软垫。当然,这话也得看时候。你要是正处在生存线上挣扎,那冗余确实是奢侈品,只能先保命。等日子稳当了,才配谈这点“不务正业”。

教程最后一页,压着一张完整的系统架构图,线条笔直,节点分得清清楚楚。我随手把它夹进一本旧诗集里,塞到书架最靠墙的那层。系统得讲规矩,这没毛病。只是偶尔,我也乐意当一回“异常数据”。不更新,不删除,就在那儿耗着。毕竟,要是连发呆和闲谈都得被优化干净,那剩下的,恐怕就只剩下一串冷冰冰的代码了。