S
数据存储免费,公有领域更新 2026/10/24
SQLite
单文件的嵌入式数据库,不需要独立服务。用来记录批量任务状态、做去重和断点续跑,脚本换个目录就能继续跑。
适合什么
- 记录批量任务的状态:待处理、运行中、完成、失败。
- 用唯一主键做去重,避免重复处理同一条数据。
- 单机脚本、桌面工具、离线流程的本地存储。
- 需要一个能随时备份、复制、带走的数据文件。
不适合什么
- 多台服务器同时高频写入同一个库。
- 把大图片、视频等二进制文件当仓库使用。
- 需要复杂权限、账号体系和远程访问的场景。
常用命令
打开数据库:
sqlite3 jobs.db
查看表和结构:
.tables
.schema jobs
开启 WAL 模式,让读写互不阻塞:
PRAGMA journal_mode = WAL;
生成一份一致的备份快照:
sqlite3 jobs.db "VACUUM INTO 'jobs-backup.db';"
在脚本里用
Node 22.5 起提供内置模块 node:sqlite,不需要额外安装依赖:
import { DatabaseSync } from "node:sqlite";
const db = new DatabaseSync("jobs.db");
db.exec("PRAGMA journal_mode = WAL;");
版本较旧时可能需要加 --experimental-sqlite 参数。其它语言也有成熟的驱动,SQL 本身在各语言里是通用的。
注意
- 不要直接复制正在写入的数据库文件,WAL 模式下还有
-wal和-shm文件,用VACUUM INTO做快照更稳。 - 事务里不要做网络请求,先领任务、提交事务,再处理。
- 定期清理已完成任务里的敏感原文,保留状态和结果即可。
- 数据库变大后执行
VACUUM回收空间,但不要在任务高峰期做。