文件系统,本来就是个数据库

先别急着问「有没有基于数据库的文件系统」——反过来才对:文件系统本身就是一棵带索引的专用数据库。下面点一个文件看它怎么被查出来,再在你浏览器里真跑一次「存 N 个小文件 vs 一个库」,亲眼看那笔固定开销差多少。

模块一 · 同一份数据,两种视角 点左边的文件,看它在右边的「表 + B 树索引」里是怎么被查出来的
文件系统视角 · 点一个文件
数据库视角 · inode 表 + B 树索引
inode路径类型
目录路径 B 树索引(按路径字典序)
有索引 · 比较次数—
无索引 · 线性扫描—
差距—

关掉索引开关,看查找如何从「沿树几步」退化成「逐行扫表」。

模块二 · 真·浏览器实测 下面这一跑是你浏览器里真实发生的,不是我编的数字
选 N(条小数据)
500
诚实说明:数据库侧(SQLite-WASM)数据已载入内存,读取走内存;文件侧(OPFS)是真落盘。这看起来对 DB 有利——但这恰恰就是 SQLite《35% Faster Than the Filesystem》的真实论点:数据库文件只 open 一次,之后全在进程内,省掉的正是每个文件的 open/close/元数据这套系统调用。这不是作弊,是数据库相对文件系统的结构性优势。
模块三 · 文件 ↔ 数据库 光谱 拖一下滑块,看真实系统落在这条光谱的哪里
每条数据一个文件 全塞进一个库
—

所以问题从来不是「有没有基于数据库的文件系统」,而是文件系统和数据库本就是同一件事的两种极端形态,工程上按 workload 在这条光谱上取点:要 POSIX 语义、要人类可读目录树,就偏左;要事务、要并发、要结构化查询,就偏右。NTFS 的 MFT、ext4 的 HTree 是左端的数据库;S3、JuiceFS、GridFS 是中段的折中;WinFS 想一路冲到右端,结果败给了阻抗失配。