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

30年前一篇没人理的论文,为何成了疯狂写入数据库的标配?

0
分享至

今天几乎所有需要"疯狂写入"的数据库——Cassandra、HBase、RocksDB、LevelDB、InfluxDB,甚至 Kafka 的存储引擎思路——都绕不开一篇诞生于 1996 年、当年几乎没人注意的冷门论文。

它没有炫技的算法,也没有华丽的证明,作者甚至不是搞分布式系统出身的人。三十年后,它却几乎重新定义了"写多读少"系统的存储方式。它就是LSM Tree——Log-Structured Merge-Tree。


一个被写入压垮的时代

时间回到 1990 年代初。那是关系数据库如日中天的年代,Oracle、Sybase、Informix 这些厂商都在打磨同一件事:B 树索引。从 IBM 的 System R 到后来的 MySQL InnoDB,B 树统治了几乎所有磁盘数据库。

但有一类系统开始感到吃力:写入密集型系统。

90 年代的电信计费系统、银行流水记录、早期的传感器采集系统,特征高度一致:

  • 数据几乎只追加,很少更新;
  • 写入量巨大,且要求持续、稳定;
  • 读取相对较少,或者可以接受一点延迟;
  • 存储介质是机械硬盘,寻道是最贵的操作。

这里有一个当时工程师心知肚明、却很少被系统性解决的痛点:机械硬盘的随机写代价极高。磁头要在盘片上来回移动寻找目标扇区,一次随机 IO 可能是顺序 IO 的成百上千倍慢。

而 B 树的更新,恰恰天生是随机的——一条记录改了,就要去磁盘上对应的那个页面原地修改。

旧方案为什么绕不过去

数据库厂商当时的做法,是不断优化缓存、优化预读、优化磁盘调度算法,本质上是在"讨好"随机 IO,而不是"消灭"它。

真正提出问题的,是在贝尔实验室系统工作过、后来转向数据库研究的 Patrick O'Neil。他和合作者 Edward Cheng、Dieter Gawlick、Elizabeth O'Neil 注意到一个现象:如果一个系统的写入负载持续高企,那么无论 B 树怎么调优,它终究要为每一次写付出一次随机 IO 的代价。这不是实现问题,是结构性问题。

B 树的设计初衷,是让任意一条记录的查找都能在 O(log n) 的磁盘 IO 次数内完成。这个设计对读非常友好——树的每一层都对应固定的磁盘页面,随手一查就能定位。但代价是:每次插入或更新,都可能触发一次原地修改,甚至一次页分裂。在写入频繁的场景下,磁头要不停地在盘片各处"跳来跳去",效率断崖式下跌。

当年的工程师并非没意识到这一点,他们用了各种缓解手段:写缓冲区、延迟刷盘、批量提交。但这些都是在掩盖问题,而不是改变问题的本质——数据落盘的顺序,仍然由业务逻辑的写入顺序决定,而不是由磁盘最舒服的方式决定。

哈希表在内存里效率很高,但一旦涉及持久化到磁盘,同样面临"如何有序地、批量地落盘"这个老问题。跳表解决的是内存中有序结构的并发和实现简单性问题,本质上也没有回答"磁盘写入模式"这件事。

其实业内已经有"只追加写日志"的思路,用于崩溃恢复,也就是 WAL。日志文件写入是纯顺序的,磁盘友好。但日志天生的问题是:它只管写,不管查——你要查一条记录,理论上得从头到尾扫一遍日志,这在读多的场景下是灾难。

于是问题变成了:能不能让数据写入像日志一样顺序,同时又能像索引一样被高效查询?

把随机写移出关键路径

1996 年,Patrick O'Neil、Edward Cheng、Dieter Gawlick 和 Elizabeth O'Neil 在《Acta Informatica》发表了论文《The Log-Structured Merge-Tree (LSM-Tree)》。

他们的洞察非常朴素,却极具颠覆性:与其追求每一次写入都立刻组织成最终形态的索引结构,不如把写入攒起来,先顺序地扔到磁盘,再通过后台"合并"的方式,把这些零散的数据逐步整理成有序的整体。

具体来说,LSM Tree 把存储分成了层级:

  • 最新写入的数据先进入内存中的一个有序结构,后来的实现常用跳表或红黑树,这部分叫MemTable
  • 当内存结构长到一定大小,就整体、顺序地刷写到磁盘上,形成一个不可变的有序文件,这部分叫SSTable
  • 磁盘上会积累越来越多的 SSTable,后台有一个合并进程,持续地把多个 SSTable 合并成更大、更有序的文件,顺便清理掉过期或被覆盖的数据。

这个设计的精妙之处在于:所有对磁盘的写操作,无论是刷写 MemTable 还是合并 SSTable,都是顺序写。随机写被彻底移出了关键路径,取而代之的是查询时可能需要多查几个文件——但这个代价可以通过布隆过滤器、索引块等手段大幅压低。

这篇论文在发表当年几乎没有激起太大水花。它更像是一篇工程笔记式的理论总结,而不是一鸣惊人的突破。

十年后,工业界独立走到了同一个结论

真正让它被全世界知道的,是十年后的两篇工业界论文:Google 的 Bigtable(2006)和随后的 LevelDB,以及 Amazon 的 Dynamo(2007)。

Google 的工程师们在设计 Bigtable 时,独立地走向了与 O'Neil 几乎一致的结论,并第一次把 LSM Tree 的思想在超大规模系统中验证成功。

不需要贴太多代码,只看一件事:为什么查询一条记录,要按照"内存 → 最新 SSTable → 更老的 SSTable"的顺序去找?

以 LevelDB / RocksDB 的思路举例,一次 Get(key) 的核心逻辑大致是:

  1. 先查 MemTable,也就是最新写入、还没落盘的数据;
  2. 再查 Immutable MemTable,也就是正在被刷盘的旧内存表;
  3. 再依次查磁盘上各层 SSTable,从最新的层开始。

为什么是这个顺序?因为 LSM Tree 允许同一个 key 出现在多个地方——你更新一条记录,并不是去磁盘上找到它原地覆盖,而是简单地把新版本追加写入。所以,"最新的数据在哪里,就先查哪里",一旦找到就立刻返回,这样保证了正确性,也保证了大多数情况下不需要扫描全部层级。

从 1996 年那篇无人问津的论文,到今天写入密集型系统的默认选择,LSM Tree 走的是一条很典型的路:先被结构性问题逼出来,再被工业界的大规模实践验证,最后成为基础设施里那个没人提起、却处处都在的名字。

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

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-18 09:08:00
热搜上令人窒息的“母女吃牛肉面一幕”,精神穷人可怕的三观

热搜上令人窒息的“母女吃牛肉面一幕”,精神穷人可怕的三观

蝴蝶花雨话教育
2026-08-18 09:57:05
烟草系统拉响警报:再这样下去,中国烟草真要出大问题

烟草系统拉响警报:再这样下去,中国烟草真要出大问题

阿振观点
2026-08-25 05:56:32
李贤重:不会过多考虑与母亲一起夺金,但我们的目标就是拿下冠军

李贤重:不会过多考虑与母亲一起夺金,但我们的目标就是拿下冠军

新杀猪的秀才
2026-09-17 21:57:29
冠军17.5万镑!国锦赛已开杆,丁俊晖 吴宜泽同区, 赵心童孤军冲冠

冠军17.5万镑!国锦赛已开杆,丁俊晖 吴宜泽同区, 赵心童孤军冲冠

宝哥精彩赛事
2026-09-18 10:03:46
剧本杀恋陪乱象调查:主持人压在女玩家身上,贴胸亲吻;还有人现场解皮带……有商家称可直接沟通“SM虐待倾向”要求

剧本杀恋陪乱象调查:主持人压在女玩家身上,贴胸亲吻;还有人现场解皮带……有商家称可直接沟通“SM虐待倾向”要求

南方都市报
2026-09-17 18:49:03
彻底凉凉!以为社保“瞒天过海”能养老,十年旧账全被扒干净

彻底凉凉!以为社保“瞒天过海”能养老,十年旧账全被扒干净

你在偷看谁
2026-08-19 21:00:31
惊现"复制粘贴"!前四位号码与上期一模一样

惊现"复制粘贴"!前四位号码与上期一模一样

会飞的小小鱼654
2026-09-18 09:36:42
“他能上小学都算祖坟冒青烟!”一家五口颠覆认知:黄毛的爷爷,满背的奶奶

“他能上小学都算祖坟冒青烟!”一家五口颠覆认知:黄毛的爷爷,满背的奶奶

妍妍教育日记
2026-09-09 18:05:48
这个海航空姐,因为在飞机上帮乘客带娃火了

这个海航空姐,因为在飞机上帮乘客带娃火了

毒舌八卦
2026-09-12 17:51:49
日本当红AV女优绝望自杀,生前遭男友殴打,被精神金钱双控制

日本当红AV女优绝望自杀,生前遭男友殴打,被精神金钱双控制

这里是东京
2026-09-16 07:58:54
美国军火商不装了:如果中国歼-35真装了涡扇19,将是F-35的噩梦

美国军火商不装了:如果中国歼-35真装了涡扇19,将是F-35的噩梦

乐享人生风雨
2026-09-16 00:09:40
钱再多有什么用?敬一丹走后,73岁丈夫的处境给所有夫妻敲响警钟

钱再多有什么用?敬一丹走后,73岁丈夫的处境给所有夫妻敲响警钟

旧史新谭
2026-09-15 20:04:52
WTT支线赛:大爆冷!国乒16人参赛,15人被淘汰,仅剩1人晋级4强

WTT支线赛:大爆冷!国乒16人参赛,15人被淘汰,仅剩1人晋级4强

国乒二三事
2026-09-18 06:48:44
iPhone Duo不支持平板微信:网友被劝退

iPhone Duo不支持平板微信:网友被劝退

快科技
2026-09-17 00:17:44
红薯正大量上市!研究发现:糖尿病吃一次红薯,等于给血糖添堵?

红薯正大量上市!研究发现:糖尿病吃一次红薯,等于给血糖添堵?

高中医健康说
2026-09-18 10:14:08
CBA快讯,徐杰迎来新身份,王骁辉因打假球,遭篮协禁赛一年!

CBA快讯,徐杰迎来新身份,王骁辉因打假球,遭篮协禁赛一年!

体坛小快灵
2026-09-18 10:08:24
深夜,歹徒闯入家中对她施暴近两个小时,她咬紧牙关一声不吭,只为保护楼上熟睡的女儿。当警察破门而入时,才发现这位母亲早已浑身是血

深夜,歹徒闯入家中对她施暴近两个小时,她咬紧牙关一声不吭,只为保护楼上熟睡的女儿。当警察破门而入时,才发现这位母亲早已浑身是血

人生录
2026-07-30 00:05:11
西方专家表示中国工业太可怕!中国没攻克的顶尖工业只剩最后一项

西方专家表示中国工业太可怕!中国没攻克的顶尖工业只剩最后一项

离离言几许
2026-09-18 05:27:45
沙坪坝楼市有多惨?9小区集体跳水,文旅城跌52%无人接盘

沙坪坝楼市有多惨?9小区集体跳水,文旅城跌52%无人接盘

童童聊娱乐啊
2026-09-18 07:39:29
2026-09-18 11:28:49
像素与芯片
像素与芯片
有态度网友ytd
269文章数 75关注度
往期回顾 全部

科技要闻

何小鹏:9系旗舰新车23.18万起

头条要闻

2岁幼童18楼坠亡:仅孩子母亲可向丈夫追究民事责任

头条要闻

2岁幼童18楼坠亡:仅孩子母亲可向丈夫追究民事责任

体育要闻

逆转朝鲜,国足亚运队“啃老”过关

娱乐要闻

敬一丹逝世 央视送别,女儿成“心病”

财经要闻

中国汽车:尾大不掉,必须出清

汽车要闻

小鹏G9L限时售23.18万 旗舰级的配置/诱人的价格

态度原创

健康
艺术
本地
公开课
军事航空

剧烈头痛伴呕吐,警惕脑动脉瘤破裂

艺术要闻

韦启美 81岁时画的这幅瓶花,28.75万!

本地新闻

不止胖东来!许昌藏着半部三国史

公开课

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

军事要闻

中方反对在安理会强推恢复对伊朗制裁

无障碍浏览 进入关怀版