dev.to | 📄 原文链接 | 2026-09-07 收录

不让 pip install 任何东西?我用零依赖从零造了个防崩溃数据库

来源:dev.to — 2026-09-05

📋 概述

为了参加 Zero Dependency 挑战(依赖清单必须为空),作者不得不放弃惯用的 TinyDB,仅靠 Python 标准库从零实现了 ChronicleKV——一个带真实写前日志(WAL)、崩溃恢复与时间点历史的内嵌键值存储。深入后他发现 TinyDB 之所以「简单」是因为它只是把 JSON 文件dump到磁盘:没有 WAL、没有校验和,写入在错误时机被打断就可能得到无法解析的 JSON,且毫无恢复路径。ChronicleKV 的核心是 WAL:每条写都追加为带 CRC32 校验和与固定头部的二进制记录,启动时从头重放,遇到校验和失配处即认定是进程死于半写、截断丢弃——「恢复停在最后一次好写入」而非损坏的数据库。

🔑 核心要点

💡 金句

不要把「零依赖」当成要绕开的限制——它逼着你去真正理解那个依赖当初是为什么存在的。我一直知道 TinyDB 很「简单」,但直到我不得不亲手写 fsync 调用,才真正想清楚它在静默地不给我哪些持久性保证。
← 返回 dev.to 首页