QzoneArchive 用 SQLite 存储归档数据——为什么选它
为什么选 SQLite
QzoneArchive 的后端用 Rust 语言的 rusqlite crate 操作 SQLite。选 SQLite 作为归档数据存储有几个明显优势:
| 优势 | 说明 |
|---|---|
| 零依赖 | 不需要安装数据库服务器,一个 .db 文件就是完整数据库 |
| 单文件 | 整个数据库就是一个文件,方便备份和迁移 |
| 跨平台 | Windows / macOS / Linux / Android 通用 |
| 轻量 | SQLite 核心库只有几百 KB,性能足够支撑个人归档场景 |
| 成熟 | 已被数十亿设备使用,稳定性极强 |
数据库里存了什么
SQLite 数据库里包含以下几类数据表(具体表结构以源码为准):
- 动态表:每条归档动态的正文、时间、发布者等基本信息
- 媒体表:图片和视频的元数据、原始 URL 和本地缓存路径
- 评论表:评论正文、评论者、回复关系、时间戳
- 点赞表:点赞用户列表、点赞时间戳
- 留言表:留言板内容和回复关系
- 任务状态表:归档进度记录(支持断点续传的关键)
所有这些表之间通过 ID 关联,比如"评论表"里的一条评论关联到"动态表"里的某条动态。这就是为什么归档能还原完整的互动关系。
能否直接用 SQLite 查看器打开
可以。归档数据库是标准 SQLite 格式,任何 SQLite 查看器都能打开:
- DB Browser for SQLite:跨平台 GUI 查看器
- DBBeaver:多数据库支持的通用客户端
- sqlite3 CLI:命令行查看工具(Linux/macOS 自带,Windows 需单独装)
不过不建议直接修改数据库——应用下次启动时可能因为数据不一致而出错。只读看看没问题。
数据库体积
归档完成后,数据库文件本身通常不会很大(几 MB 到几十 MB),因为文字和元数据都很紧凑。真正占空间的是媒体缓存目录里的图片和视频——一个有大量高清配图和视频的账号,媒体缓存可能超过 10GB。