← 返回博客

SQLite 够用了:单文件部署笔记

夜航的目标很明确:让人在一台最便宜的小服务器上,一条命令就跑起来一个 RSS 阅读器。不要 Redis,不要 Postgres,不要消息队列。所以从第一天起我就选了 SQLite。

几个必开的设置

SQLite 默认配置不适合 Web 服务,下面这几行几乎是标配:

PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA busy_timeout = 5000;
PRAGMA foreign_keys = ON;

WAL 模式让读写互不阻塞,这是它能撑住“抓取任务在后台写、用户在前台读”的关键。

备份其实很简单

很多人担心单文件不安全。夜航内置了一个定时任务,用 VACUUM INTO 每天生成一份一致性的备份,保留最近七天。恢复就是把文件拷回去。比起运维一套数据库,这个方案出错的地方少太多了。

它的边界

我给自己划了线:单用户或几十人的小团体,写入并发不高。真有一天需要多实例横向扩展,那说明夜航已经不是现在的夜航了,到时候再换也不晚。

不到 40MB 的内存占用,一年没出过一次数据问题。对一个个人项目来说,这就是够用。