部署 SQLite
嵌入式 SQL 数据库,零配置、文件式,litestream 复制。
平台入门
为什么
SQLite 单文件数据库无服务器进程 — 零配置、ACID、10万+ 读/秒。Litestream 加 S3 复制做灾难恢复。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
小/中应用、边缘计算和读密集工作负载用 SQLite。高写并发(单写者)避免。
如何做
1. 文件 — sqlite3 mydb.sqlite,单文件
2. Schema — SQL 中 CREATE TABLE
3. WAL — PRAGMA journal_mode=WAL 并发读
4. Litestream — litestream replicate 到 S3
5. 恢复 — litestream restore 从 S3
6. 备份 — .backup 命令或复制文件
7. 客户端 — better-sqlite3(同步)或 sql.js(异步)
示例
import Database from "better-sqlite3";
const db = new Database("mydb.sqlite");
db.pragma("journal_mode = WAL"); // 并发读
db.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
const insert = db.prepare("INSERT INTO users (name) VALUES (?)");
insert.run("Alice");
# Litestream 配置 — litestream.yml
dbs:
- path: mydb.sqlite
replicas:
- url: s3://mybucket/mydb.sqlite
sync-interval: 1s
# 用 litestream 运行
litestream replicate -config litestream.yml
常见问题
- ⚠数据库锁定 — 单写者,用 WAL 模式并发读
- ⚠无复制 — 单文件,用 Litestream 做 S3 备份
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓启用 WAL 模式 — 写时并发读,大性能提升
- ✓复制用 Litestream — 持续 S3 备份,即时恢复
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求