过去一直在变:把个人健康追踪器迁移到时序数据库的真实原因
来源:dev.to — 2026-08-17
📋 概述
作者这个月把个人健康追踪器迁到了时序数据库(TimescaleDB),69,000 行数据只占 30MB——他自己都坦承这不是使用时序库的正当理由,也什么都没有变快。真正的原因是他发现自己几个月来一直在悄悄丢失数据,而旧 schema 的构建方式让他根本察觉不到。旧系统用 iCloud 文件夹 + launchd 轮询写入 840KB 的 SQLite,Mac 一旦合盖,基础设施就停摆;150 行代码纯粹是为了在 iCloud 的怪癖下存活而存在。
🔑 核心要点
- 迁移的真正理由不是性能——69,000 行 30MB 的数据什么都没变快,而是作者在悄悄丢失数据而旧 schema 让他无法察觉。
- 旧系统由 iCloud 自动导出 + launchd 每小时轮询解析写入 SQLite 组成,Mac 是唯一的「基础设施」,合盖即停摆。
- 约有 150 行代码只为在 iCloud 的坑里存活:元数据占位符文件导致 EDEADLK,四天训练数据凭空消失。
- 两条自动化向不同文件夹写入同一数据,最终胜负取决于字母排序而非时间戳,谁后写谁赢。
- 整个仓库公开(不含个人数据),所有查询都针对线上库运行,文中每个数字都可被读者亲自验证。
💡 金句
过去(数据)一直在被改写——如果 schema 让你察觉不到丢失,就等于没有丢失这件事。
👍 0
👎 0
← 返回 dev.to 首页