我对 DOOMQL 的判断很简单:数据库天生就是多人游戏引擎。这个名字,像把 DOOM(老牌射击游戏)和 QL(查询语言)焊在一起;它不像档案室,更像凌晨两点的网吧包间:四个人同时扑向地上一把枪,都说是自己先捡到,系统必须当场裁定,不能等天亮再查监控。

多数人一提数据库,脑子里出来的是“存”。这正是误会的起点。存储只是遗照,冲突才是活人。真正的数据库工作,不是把事实摆进抽屉,而是在互相打断的动作里,决定哪一个动作算数,哪一个动作作废,哪一个动作得等一等。社会不是由事实构成的,是由被同时承认的事实构成的。数据库干的,正是这件脏活。

反常识的地方在这儿:多人游戏不是从头像、聊天框、实时光标开始的,而是从两个人同时想改同一个数字开始的。屏幕上角色抖一抖,顶多难看;库存被卖两次、床位被占两次、退款退了又发货,那才叫见血。

所谓并发,不过是几只手同时伸进同一只口袋,还要求口袋别破。

DOOMQL 这个名字好,就好在它不装。它提醒你:查询语言不是秘书,不是在柜子里替你翻档案;它更像战场电台。一句“还剩 1 个名额”,不是中性描述,那是发令枪。多人系统里,读不是旁观,读是鸣枪。

早上八点五十九,海淀一位母亲站在电梯口,给孩子抢游泳班最后一个名额。她手机上“提交成功”的蓝条刚闪出来,丈夫公司电脑还在转圈,教务老师在后台把名额从 1 改成 0,财务系统又要确认付款有没有落账。这里如果只是“把数据存好”,每个人都能拿着自己的屏幕说自己没错;可系统必须只认一个现实:到底谁进了班,谁的钱该退,谁的页面该变灰。那一刻,数据库不是柜子,是裁判,是记分牌,也是子弹命中后的判定器。

图形决定世界好不好看,数据库决定世界算不算数。

中午十二点十七,写字楼下的轻食店炸开了锅。前台打印机吐出一张凯撒鸡肉沙拉,店员点了“开始制作”,骑手两分钟后提前点了“已取餐”,顾客又因为会议取消点了“申请退款”,平台的补偿规则同时准备发券。四个人摸的是同一份午饭,却各有各的理由、各有各的权限、各有各的时间差。你要让谁能改状态,让谁只能看见结果,让谁的操作晚一步就失效,这些不是“数据管理”,这是多人游戏里的职业分工、战争迷雾和回合优先级。

单机软件处理逻辑,多人系统处理欲望。

凌晨一点十三,县医院急诊大厅的大屏在闪。分诊台把 37 号改成优先,收费窗口刚刚完成缴费,药房库存扣了一次,值班医生又把床位从“可用”点成“占用”。如果这些动作各说各话,医生拿到的不是病历,是彩票;病人排的不是队,是命。事务,就是把一串动作捆成同一次命运;锁,就是先把门闩上,免得两个人同时改写历史;日志,就是给世界留案底,出事以后还能回放哪一枪先响。你看见的是白底黑字,系统里跑的是秩序、优先级和生死时序。

事务不是技术洁癖,它是现实世界的止血带。

这就是我对 DOOMQL 的判断:它真正新鲜的地方,不是把数据库说得更酷,而是把数据库说得更诚实。所谓表,不只是表格,它是共享世界里的对象清单;所谓权限,不只是谁能点按钮,它是谁能开门、谁能开火、谁只能旁观;所谓复制,不只是多备一份数据,它是把同一个世界分发给不同的人看,还得尽量别让世界裂开。

从人类学上看,长老、账房、祠堂、法院,干的其实是一件事:决定什么算发生过。数据库不过是把这套古老权力塞进了机房。程序员后来把它叫“数据层”,好像给战壕刷一层米白色乳胶漆,它就真成了档案室。可战壕还是战壕,冲突也还在那里。

数据库不是仓库,它是裁判。
在多人系统里,读不是旁观,读是鸣枪。
谁把数据库只当存储,谁迟早把社会系统写成碰碰车。

DOOMQL 这四个字,像是在技术会议上突然把窗户砸开。风一进来,大家才看清:我们天天写的,不是冷冰冰的数据层,而是一座共享世界的物理引擎。只不过这个世界没有血包和火箭筒,它有库存、床位、退款、排队、权限、账户余额。名字不同,问题一样:一群人同时扑上来,系统凭什么只认一个现实?

我的答案不改:数据库天生就是多人游戏引擎。谁先承认这件事,谁才配设计下一个世界。


别人聊 AI,我们测 AI——每个结论都能下载原始数据自己复算。 🔗 官网 👉 https://crawdpad.com