Rust 惊天压缩:将 10GB 的 RATP 公共交通数据压缩至 530KB
2025-03-03
这个周末项目始于浏览巴黎公共交通网络的开放数据存储库,该存储库包含各种 API,用于查询实时出发、当前中断等。作者注意到数据重用部分,其中包含使用此开放数据的外部项目。特别是 RATP 状态网站提供了一个非常好的界面来可视化地铁、RER/火车和电车线路的历史中断情况。作者发现 ratpstatus.fr 的 GitHub 存储库包含从开放数据 API 查询到的所有 JSON 文件,几乎一年来每 2 分钟查询一次。这个存储库有 188K 次提交,仅在最后一次提交时就积累了超过 10GB 的数据。作者好奇能否通过合理的投入(周末项目)来更好地压缩这些数据。本文深入探讨了作者如何使用 Rust 中的驻留设计模式将此数据集压缩了两千倍!文中研究了如何最好地构建驻留器本身,如何调整数据模式以使其与驻留器良好配合,以及序列化如何最好地利用驻留。最终,作者成功地将 1.1GB 的 JSON 文件压缩到只有 530KB,实现了惊人的压缩效果。
开发
驻留