网易首页 > 网易号 > 正文 申请入驻

我用AI开发数据库,没想到被狠狠地教育了......

0
分享至

我在之前的文章中介绍过SQLite,这是个嵌入式数据库,也是世界上最流行的数据库。


(详情参见这篇文章:)

有一天我突发奇想:既然是嵌入式数据库,那应该不复杂,能不能用AI写一个?

说干就干,我把SQLite的架构文档发给了AI,让它根据现有架构来实现。

你别说,AI实现得相当不错,把Tokenizer,Parser,Code Generator,Bytecode Engine这些核心的概念都考虑到了,代码写得也不错,着实是让我吃惊。


但是,当我看到SQLite的测试的时候,我就知道,现在的AI,想写出SQLite级别的代码,恐怕是做梦。

因为SQLite简直不是一个软件,而是个怪物

截至 3.42.0 版本(2023-05-16),SQLite 库本身大约包含15.58万行C代码。

而测试代码和测试脚本脚本加起来一共有9205万行,是核心代码的 590 倍!

不是5倍,50倍,而是590倍

测试的目标不但要覆盖“功能”,还要覆盖分支,覆盖异常,覆盖现实世界的灾难。

SQLite设立了4套“互不信任”的测试体系,避免同一思路的盲区。

0 1

“保命”测试

首先,它用TCL写了一套“日常保命测试”,测试脚本有1390个文件,一共23.2M,包含了51,445 个不同的测试用例,参数化执行,会跑出数百万测试。

开发者日常主要依赖一个非常快的、几分钟就能跑完的子集,用于每次提交前自己检查。

0 2

“彻底”测试

SQLite有一套私有的C语言测试系统(名称为TH3),为 SQLite 核心库提供 100% 分支覆盖率。

这个数字是非常恐怖的,大家都知道覆盖所有分支很麻烦,例如这行代码:

}

想要达到100%分支覆盖,至少需要3个测试用例:

(1) a<=b

(2) a>b 且 c==25

(3) a>b 且 c!=25

除了分支覆盖,SQLite还是是实现了100% MC/DC 覆盖率。

MC/DC(Modified Condition/Decision Coverage)是航空、核工业级别的测试标准。也就是说SQLite 把一个嵌入式数据库,按飞控软件的标准来测。

TH3有个非常重要的特点,就是不靠“后门”,只是用SQLite公开的API接口,完全模拟用户的行为。

TH3 包含大约 76.9MB、100万行C 代码,实现了 50,362 个不同测试用例。

在发布之前的一个长时间压力测试中,会执行2.485亿次测试。

0 3

对标测试

这是一个裁判性测试,它将大量 SQL 语句同时运行在 SQLite 和其他4个数据库引擎(PostgreSQL、MySQL、SQL Server、Oracle 10g )上,并比较结果是否一致。


换句话说,SQLite 不只要自洽,还要和“行业共识”对齐。

这个测试共运行 720 万条查询,测试数据总量 1.12GB。

0 4

模糊测试

模糊测试通过向SQLite提供无效、意外或者随机数据来测试它的健壮性。

例如这样的SQL语言:

  CAST('999999999999999999999999' AS INTEGER) < 0;

它完全符合SQL语法,但是几乎不可能是人写的,因为它精准命中了“超大内存申请”,“整数溢出”,“负索引”等极端情况。

更残酷的是,模糊测试还会破坏数据库文件(.db),对它做随机位翻转、截断、重复、拼接。

例如,这是原始的数据文件(简化):

[Header][Page1][Page2][Page3]

模糊测试工具把它改成:

[Header][Page1][Page1][乱码][Page3][Page3]

然后尝试去打开它:

sqlite3_open("mutated.db", &db);

SQLite要做到不崩溃,不越界,不死循环,要么报错,要么优雅失败。

最后,模糊测试还会开关所有的宏定义,对不同的编译器设置不同的编译优化级别,让同一条SQL在不同的情况下疯狂运行,疯狂地鞭打SQLite,折磨SQLite,直到它漏出所有的破绽。

由于SQLite在嵌入式领域非常流行,手机、路由器、车载、工业设备等在大量使用它,所以它特别注重对异常情况的处理。

内存不足测试

在服务器和工作站上,内存分配malloc()几乎不会失败,在嵌入式设备上,OOM就太常见了,SQLite必须得能优雅的处理OOM错误。

SQLite的测试框架(自己写的)可以插入自定义的可控的malloc函数,设置成在调用一定次数后内存分配失败,这样就可以在循环中执行SQLite操作,确保能处理OOM错误。

I/O错误测试

磁盘空间不足、磁盘硬件故障、网络中断、SQL操作过程中发生的系统配置或权限更改,或其他硬件或操作系统故障......无论原因如何,SQLite 必须能够正确响应这些错误。

测试的方法和OOM测试类似,都是模拟I/O错误,然后检查SQLite能否正确响应

崩溃测试

应用系统崩溃,操作系统崩溃,数据库更新过程中断电,SQLite都不能发生故障。

这也是SQLite“原子提交”能被信任的原因。

复合失效测试

先发生I/O错误,然后出现OOM,再搞一个崩溃..... 保证程序还能正常运行。

SQLite的这些测试,它的数量、完善程度和复杂程度,看起来真是让人脊背发凉。

这得付出多年的努力,经历多少事故才能写出来啊!

被这样测试保护的软件,代码质量可以说是固若金汤了。

AI能写出这样高质量的SQLite吗?

写个玩具版是可以的,但是想要复刻是万万不行的。

SQLite这种“高质量”不是体现在代码本身,而是体现在几十年积累的测试体系、失败经验和工程纪律上。

AI 可以帮助我们写实现、补测试、找 bug,但无法凭空生成那些来自真实事故、长期演化出来的异常场景和验证策略。

换句话说,AI 能参与写 SQLite,但还不能“独立孕育”一个 SQLite。

SQLite只是一个嵌入式数据库,就已经恐怖如斯了,那些更加复杂的数据库会怎么样呢?

欢迎了解详情的朋友在评论区留言!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
扎哈罗娃犀利回应高市早苗:“无异于要求太阳停止照耀”

扎哈罗娃犀利回应高市早苗:“无异于要求太阳停止照耀”

扬子晚报
2026-09-06 22:37:59
网约车每天只跑8小时,现实到底行不行?司机晒出流水

网约车每天只跑8小时,现实到底行不行?司机晒出流水

用车指南
2026-09-06 10:01:58
山东考生512分考入铁道职业技术学院,摆酒席庆祝却发现被录成高铁乘务

山东考生512分考入铁道职业技术学院,摆酒席庆祝却发现被录成高铁乘务

呼呼历史论
2026-09-06 12:21:49
我发现,大部分普通家庭,已经陷入到“失业、争吵、离婚、分财产”的死循环当中

我发现,大部分普通家庭,已经陷入到“失业、争吵、离婚、分财产”的死循环当中

舒山有鹿
2026-08-26 15:10:52
炖肉20年的老师傅:猪肉只配这3种香料,别再瞎放了

炖肉20年的老师傅:猪肉只配这3种香料,别再瞎放了

阿莱美食汇
2026-09-04 13:34:16
明日白露“凶日”, 提醒中老年: 1要戴, 2要坐, 忌3样,4多吃,别大意

明日白露“凶日”, 提醒中老年: 1要戴, 2要坐, 忌3样,4多吃,别大意

一口娱乐
2026-09-06 05:56:28
德国乒协早已看透!国乒真正王牌并不是王楚钦,这张底牌藏得太深

德国乒协早已看透!国乒真正王牌并不是王楚钦,这张底牌藏得太深

甜菊汽水
2026-09-06 16:53:51
昨天呼吁立法杜绝告洋状,今天呼吁要踢出英语,某些人的目的很明显了

昨天呼吁立法杜绝告洋状,今天呼吁要踢出英语,某些人的目的很明显了

走读新生
2026-09-06 14:14:23
助特朗普入局委内瑞拉的亿万富豪:从委石油公司侵吞超10亿美元;出卖马杜罗,给美方传递信息封锁自己的祖国;公司美国不投一分钱占股35%

助特朗普入局委内瑞拉的亿万富豪:从委石油公司侵吞超10亿美元;出卖马杜罗,给美方传递信息封锁自己的祖国;公司美国不投一分钱占股35%

扬子晚报
2026-09-06 08:41:19
27岁博主去世引关注,发病到死亡仅1天多!妻子痛悔"全家都被误导了""两个女儿还太年幼"……

27岁博主去世引关注,发病到死亡仅1天多!妻子痛悔"全家都被误导了""两个女儿还太年幼"……

鲁中晨报
2026-09-05 16:50:05
5-0,西甲惨案,血洗瓦伦西亚,巴萨领跑西甲积分榜,罗德里撞翻自己队友

5-0,西甲惨案,血洗瓦伦西亚,巴萨领跑西甲积分榜,罗德里撞翻自己队友

赵或是个热血青年
2026-09-07 01:24:33
被立案调查才24天,53岁郭德纲再迎噩耗!

被立案调查才24天,53岁郭德纲再迎噩耗!

叨唠
2026-09-04 07:00:20
不出意外,接下来,这3样东西要大涨价,老百姓要早做准备

不出意外,接下来,这3样东西要大涨价,老百姓要早做准备

三农雷哥
2026-09-04 11:17:11
扔掉12斤水果,赔掉10万元,中国式自我感动有多可怕!

扔掉12斤水果,赔掉10万元,中国式自我感动有多可怕!

夜深爱杂谈
2026-09-05 21:28:52
绍兴葫芦娃全剧终!大爷连夜收走葫芦娃,砸向当地的泼天富贵戛然而止,原因让人唏嘘

绍兴葫芦娃全剧终!大爷连夜收走葫芦娃,砸向当地的泼天富贵戛然而止,原因让人唏嘘

火山詩话
2026-09-06 07:41:37
比亚迪、理想、长安等超50家企业预祝小米新车上市成功,雷军向所有品牌表达感谢

比亚迪、理想、长安等超50家企业预祝小米新车上市成功,雷军向所有品牌表达感谢

极目新闻
2026-09-06 22:14:04
“葫芦娃爷爷”把7个葫芦摘掉了,来年不会种了:来打卡的人太多,不安全都惊动消防了

“葫芦娃爷爷”把7个葫芦摘掉了,来年不会种了:来打卡的人太多,不安全都惊动消防了

江山挥笔
2026-09-06 16:38:15
妻子去世3年后,我娶了小姨子,新婚夜她说:你果然没让我失望

妻子去世3年后,我娶了小姨子,新婚夜她说:你果然没让我失望

千秋文化
2026-08-26 20:14:48
阿里前高管移民美国意外身亡!舆论升级,网友:美国消费非常贵,尤其是加州,1家4口带两孩一年差不多要1百万人民币

阿里前高管移民美国意外身亡!舆论升级,网友:美国消费非常贵,尤其是加州,1家4口带两孩一年差不多要1百万人民币

火山詩话
2026-09-06 08:57:53
特朗普特使及女婿已乘火车抵达乌克兰首都基辅,泽连斯基明确乌方核心诉求;此前俄乌均作出临时停火3天安排

特朗普特使及女婿已乘火车抵达乌克兰首都基辅,泽连斯基明确乌方核心诉求;此前俄乌均作出临时停火3天安排

扬子晚报
2026-09-06 22:32:41
2026-09-07 04:11:00
码农翻身 incentive-icons
码农翻身
有趣且硬核的技术文章
306文章数 670关注度
往期回顾 全部

科技要闻

DeepSeek被曝将采购16万颗华为昇腾950DT

头条要闻

中尼两国遇难失联人数为何相差如此大 专家解读

头条要闻

中尼两国遇难失联人数为何相差如此大 专家解读

体育要闻

3.9秒绝平!杨舒予18+5成女篮救世主

娱乐要闻

杨紫获白玉兰影后!爸爸:累了就回家

财经要闻

亏损高达200亿,昔日彩电霸主走下巅峰!

汽车要闻

带升降立标MPV 岚图梦想家9预售价42.99万起

态度原创

亲子
旅游
本地
家居
公开课

亲子要闻

冲上热搜!这种鞋子不要给孩子天天穿

旅游要闻

浙江绍兴葫芦娃爷爷,游客太多影响休息:狠心剪掉7个葫芦娃

本地新闻

扒完小作文,富豪们私藏的度假胜地有多绝

家居要闻

2026建博会(广州) 公装联探展交流活动

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版