📢 转载信息
原文链接:https://simonwillison.net/2025/Oct/3/litestream/#atom-everything
原文作者:Simon Willison’s Weblog
Litestream 0.5.0 重磅发布:SQLite 备份迎来架构革新
最近,Litestream 0.5.0 版本正式发布(来自 HN)。我已经在生产环境中无故障地使用 Litestream 为 SQLite 数据库进行备份两年多了。这个新版本的发布可谓是“千呼万唤始出来”——Ben Johnson 曾一度转向开发基于 FUSE 的 LiteFS,但最终发现单二进制的 Litestream 方案更受欢迎。如今,Litestream 0.5 终于发布,并附带了详细的博客文章,描述了其改进后的架构。
SQLite 备份的核心挑战与 LTX 格式的引入
SQLite 默认以 4096 字节为单位将数据存储在“页”(Pages)中。Litestream 的核心工作是将这些发生修改的页面复制到备份位置,通常是 S3 这样的对象存储。
对于大多数使用自增主键的 SQLite 表而言,顺序插入操作会导致数据被写入到同一页中。这在旧版本的 Litestream 中会引发一个问题:连续的备份会生成许多内容仅有微小差异的页面副本,造成备份效率低下。
新的 LTX 格式(借鉴自 LiteFS)通过引入“压缩”(Compaction)机制解决了这个问题。Ben 解释如下:
我们可以利用 LTX 压缩功能,将多个 LTX 文件合并成一个没有重复页面的文件。Litestream 现在利用这一能力创建了一个压缩层级结构:
- 在 Level 1,我们压缩 30 秒时间窗口内的所有变更。
- 在 Level 2,压缩所有 Level 1 文件(时间跨度为 5 分钟)。
- 在 Level 3,压缩所有 Level 2 的文件(时间跨度为 1 小时)。
最终结果是:我们现在可以在任意时间点恢复 SQLite 数据库,而且平均只需要使用十几个文件。
未来展望:即时读副本
我个人最期待的功能是尚未完全落地的“读副本”(Read Replicas)功能,该功能将通过 SQLite 的 VFS 扩展实现:
我们正在构建的下一个主要功能是 Litestream VFS 用于读副本。这将允许你即时启动数据库副本,并立即从 S3 中读取页面,而数据库的其余部分则在后台进行同步。
这篇文章发布于 2025 年 10 月 3 日。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,小白也可以简单操作。
评论区