被高估的分布式与单机系统的尊严:记一次向 SQLite 的迁徙
在过去的几年里,我们似乎养成了一种条件反射:哪怕只是做一个日活几千的内部工具或个人项目,也要先拉起一套容器编排、外部缓存与独立的数据库集群。上个月,我花了一个周末把运行了三年的四个微服务彻底拆掉,合并进一个 18MB 的单文件二进制程序与开启了 WAL 模式的 SQLite 数据库里。当跨网络的序列化开销归零后,系统展现出了一种久违的安静与诚实。
在过去的几年里,我们似乎养成了一种条件反射:哪怕只是做一个日活几千的内部工具或个人项目,也要先拉起一套容器编排、外部缓存与独立的数据库集群。上个月,我花了一个周末把运行了三年的四个微服务彻底拆掉,合并进一个 18MB 的单文件二进制程序与开启了 WAL 模式的 SQLite 数据库里。当跨网络的序列化开销归零后,系统展现出了一种久违的安静与诚实。
探讨为什么在中低并发与个人工程场景下,进程内数据库(SQLite WAL)加上流式增量备份,往往比维护一套容器化的主从关系型数据库更具韧性。内含真实的读写压测数据与配置清单。
九月下旬的一场秋雨过后,溪水漫过石步桥。带着一台纯机械的 Nikon FM2 和一卷保存良好的过期柯达金 200 从杨梅岭一路向下走到钱塘江边,在阴天散射光里重新练习“先观察阴影,再举起相机”。
从 2016 年第一篇以日期命名的 .md 文件算起,我的个人笔记库已经平稳度过了十个年头。期间无数双链笔记与云端协同工具兴起又停服,而一个只包含四个顶层目录的本地文件夹,依然能在三秒内检索出十年前的读书摘录。
程序员冲咖啡最容易陷入“参数教条主义”,拿着电子秤精确到 0.1 克却忽略了水质硬度与滤杯热容。记录过去半年对镁离子浓度、磨豆机细粉筛除以及陶瓷滤杯预热温降的几次朴素实验。
当商业软件为了讨好每一个潜在用户而不断堆砌功能时,写一段只有两百行、刚好贴合自己工作流的命令行小脚本,反而成了一种奢侈的自由。关于“私人定制软件(Home-cooked Software)”的实践。
大寒刚过,预报说傍晚有雨夹雪。趁着游人稀少走进杭州植物园的灵峰笼月楼,区分素心蜡梅与磬口蜡梅的花被片纹理,在清冽的冷空气里捕捉早春之前的幽微暗香。