增删改查引擎大赛

「数据库不就是增删改查一些数据吗?」——你说得对,一个文本文件就能做到。下面这个 data.txt 就是一个完整支持增删改查的「数据库」,你可以亲手玩它;然后我们把它和 MySQL、Caffeine 缓存、IndexedDB 放在同一条起跑线上,跑同一份数据,看谁先撑不住。

模块一 · 你的第一个数据库:data.txt 左边是文件本体,右边是操作台。每行一条「key|value」,这就是全部的数据结构
data.txt · 文件视图
8 行 352 B 累计写回 0 行
操作台 · 选一个操作
点「执行」看这个操作在文件上怎么跑
往文件里塞数据
文件越大,查询扫的行数越多、更新重写的行数越多
模块二 · 四引擎大赛 同一份数据、同一个操作,跑在不同引擎上。数字是真实计时,不是我编的
数据量
比什么操作
诚实说明:文本文件、MySQL、Caffeine 跑在服务器上(MySQL 还要跨一次网络,这是真实系统的真实成本);IndexedDB 跑在你浏览器里。所以这不是严格的实验室对比,但每个数字都是真实计时。「准备数据」的耗时单独统计,不算进比赛成绩。
所以,数据库难在哪?

增删改查是数据库的接口,不是它的难度。data.txt 十行代码就有全部四个功能,但数据量涨四个数量级、并发涌进来、机器写到一半断电之后,增删改查还要又快又稳——索引、缓冲池、事务日志、崩溃恢复,每一项都是在给「简单」支付利息。上面的曲线就是第一笔利息的账单。

想继续深挖:数据库怎么用 B 树把查询从「扫全表」变成「跳几步」,见下面的关联演示。