SQLite 适用一切场景

在 Dr. Raphael A. Bauer 发表《PostgreSQL for Everything》之后,JoeCode 发表了一篇《SQLite for Everything》调侃式回应(作者强调自己同样喜欢 PostgreSQL,但认为 SQLite 被严重低估)。
参考:PostgreSQL 适用一切场景

作者的核心观点:很多团队为了"看起来像生产系统"而引入的一整排基础设施(搜索、队列、缓存、向量库、图库、微服务……),在大多数项目里其实一个 SQLite 单文件就能顶替。
开发新项目的时候,先判断"它能跑在单机+单文件上吗"——能就先上 SQLite,真撞到写并发或分布式天花板再换重的。大多数业务比开发者以为的更晚才会撞墙,而期间你省掉的是大量运维工作。

SQLite 三大底层优势

  • 坚如磐石:2000 年发布,公有领域(public domain,不是普通开源),MC/DC 100% 分支覆盖、测试代码是库代码的约 500 倍,官方支持承诺到 2050 年;手机/浏览器/汽车/飞机里都在跑,部署量超过其他数据库总和。
  • 零运行成本:没有 daemon、没有端口、没有 Docker。已绑定在 Linux/Python/Go/Rust/.NET/Android/iOS 里;测试用 :memory: 微秒级拉起,和生产同库同二进制。
  • 极大简化 IT 拓扑:它不止是 RDBMS,还能当全文搜索引擎、文档库、队列、时序库、向量索引、缓存、文件格式、图存储——"少装一个服务"就是少一个要监控/升级/背锅的系统。

"SQLite 替代 X" 对照表

原本的组件 SQLite 怎么顶 关键机制
Solr / Elastic 全文搜索 FTS5(BM25、短语、NEAR、高亮),索引与数据同事务,不会"索引是旧的"
MongoDB JSON 文档存 jsonb、生成列、严格表
Kafka / RabbitMQ 任务队列 一张表 + BEGIN IMMEDIATE + UPDATE…RETURNING 抢单条作业,WAL 下读写不互锁
ClickHouse 时序数据 按时间分区单文件,中等体量够用
向量数据库 AI 检索 sqlite-vec 扩展做 embedding 相似度
Redis 非持久/高性能缓存 进程内点查 ~1µs,比 localhost 跑 Redis 的 ~100µs 快约 100 倍
文件系统 存小文件/BLOB 官方基准:<100KB blob 比裸文件系统更快、省空间
图数据库 关系遍历 递归 CTE
微服务 跨函数调用 直接同进程函数调用 + 本地事务
(彩蛋)PlayStation 5 纯玩笑章节

SQLite 的天花板

  • 不支持并发写入:高并发写入(每秒几万条以上)会卡在写锁;多机多写、跨机房分布式写不适合原生 SQLite。
  • 规模边界:超 TB 级数据、百万点/秒时序、需要用户/角色级 ACL 的多租户 SaaS,应换 Postgres/MySQL/ClickHouse 等。
  • 扩展方案:Litestream(WAL 流式备份到 S3)、LiteFS(分布式读)、Turso / Cloudflare D1 / rqlite(托管 SQLite)可缓解部分限制,但不改变单写本质。
如果你有魔法,你可以看到一个评论框~