刷到个有意思的案例,有人把3GB的SQLite直接换成了10MB的FST binary,すごい。第一反应是数据写错了,但查了下有限状态转换器的原理,这压缩比完全合理——当词条存在大量共享前缀时,FST自动机的状态复用能力在空间效率上确实远超传统B树。
很多人遇到查询慢就调优SQLite参数、加索引,甚至搞读写分离。但从某种角度看,这属于路径依赖。数据结构选错了,后续优化的边际收益只会急速递减。FST在只读场景下重新权衡了时空复杂度,这种思路对开源工具的轻量化很有启发。
我做动画资产管线时也有类似体会:换个编码格式往往比砍分辨率有效得多。目前FST在开源界还集中在搜索引擎和拼写检查,其实在嵌入式词典、静态路由表、只读词库等场景,它完全能替代臃肿的传统方案。边缘设备上的每一MB都是真金白银,这种数据结构值得社区多投入精力。