一直以来,SQLite 被当作嵌入式数据库,普遍用在 Mobile App 里。现在,貌似开始流行在服务端使用 SQLite,乍看可能是一种反模式。
我觉得吹这阵风可能有以下三方面原因。
第一是 Serverless 和 Edge Computing 逐渐成熟,催生了
Vercel、
Cloudflare Pages 等体验较好的产品。传统数据库(Postgres、MySQL等)通常是单地区部署,不同地区访问单点数据库的时延肯定是有差距,虽然现在有分布式数据库的解决方案(CockroachDB、TiDB等),不过考虑到成本高、维护难等特点,不适合大部分中小应用。所以在这种场景下,使用 SQLite 这类嵌入式数据库是个看起来比较合理的选择。当然,不是所有的场景都适用,可能比较适合读多写少的场景。
其次是应用的全球化趋势。得益于全球网络的完善,全球化是个不可避免的趋势,只做单地区的应用天花板实在有限。想起之前 CEO 面对面上一鸣提到的“火星视角”,意思是要站在更大的视野看问题。做应用也是一样,局限于全国只会导致最终的内卷,全球化才是星辰大海。
最后是 SQLite 的生态在变好。SQLite3 本身好用了很多,支持 Upsert、CTE、存储 JSON、全文搜索、WAL 等常见功能。此外,Fly 收购了流式复制 SQLite 工具
Litestream,Cloudflare 发布了基于 SQLite 的
D1 数据库,这些事件都在推动 SQLite 生态稳中向好。
回首技术潮流里,有些技术真的改变了时代进程,比如 Docker 和 Kubernetes 开启了云原生浪潮,也有些技术在历史的长河里只是昙花一现,溅起一阵浪花。SQLite 的复兴是巨浪还是浪花?目前我认为场景有限,不足以掀起巨浪,仍需要大规模的应用来证明,不过我很乐意在业余项目里探索 SQLite 结合 Serverless 的创新玩法。