F-Droid 更新索引格式,数据量降低 100 倍


Android 足够开放的特性诞生了很多可以替代 Google Play Store 的商店,F-Droid 就是其中一个知名的 Android 应用商店和软件库,F-Droid 的一大特点是主库只包含免费和开源的应用程序,用户无需注册账户就可以通过 F-Droid 的网站或客户端浏览、下载和安装应用。应用中如果包含广告、用户跟踪或对非自由软件的依赖,也都会在描述中一一标明。

该网站还提供其托管的应用程序的源代码,以及运行 F-Droid 服务器的软件,允许任何人构建自己的应用程序库。

随着越来越多的应用程序进入 F-Droid,其仓库规模也在不断增长,那么包含所有应用程序及其元数据的官方仓库索引同样在不断增长。为了节省带宽,并且改善用户体验,近日 F-Droid 带来了 “重磅” 更新,大幅减少了仓库索引的空间占用,最高可达 100 倍。

目前,压缩后的索引大小为8 MB,未压缩的为33 MB。当更新资源库索引时,每个 F-Droid 客户端应用程序都必须一次又一次地下载和处理 8MB。随着此次调整,F-Droid 将只更新有变化的内容,而不是像之前一样完整更新一遍。

具体来说,F-Droid 的仓库索引采用的是 JSON 格式,更新后将利用 RFC 7396 JSON Merge Patch 来创建更小的 JSON 文件,其中只包含自 F-Droid 应用上次更新以来的变化。通过下载一个新的entry.json文件,而不是完整的索引,实现节省带宽、加快更新索引的速度,需要下载和存储的数据也变得更小。

这个 entry.json 文件指向完整的索引,以防应用程序之前从未更新过,或者需要所有的应用程序元数据。entry.json 也包含指向各种较小的 diff 文件的指针。应用程序会自动选择正确的 diff,并且只下载那个小得多的文件。

根据 F-Droid 的计算,最新的 diff 在压缩后只有 80 KB,未压缩的大小则是241 KB(原本这两个数字分别为8 MB33 MB),对照完整索引的话只占其 1%。目前 F-Droid 最新的客户端应用程序已经支持这种新的仓库格式。

开发者可以通过升级到最新版本的 fdroidserver 来启用新的格式,此外 F-Droid 依然保留了旧的格式以支持旧的客户端应用程序。

截止 2021 年 2 月的数据,F-Droid 网站托管的应用程序超过 3800 个,同期 Google Play Store 中的应用则大约有 300 万个,从规模来看,两者还不是一个数量级的对手。


相關推薦

2023-03-03

fluxDB称之为Tag,Prometheus称之为Label)通常会对其生成倒排索引,但在实际使用中,Tag的基数在不同的场景中是不一样的 ———— 在某些场景下,Tag的基数非常高(这种场景下的数据,我们称之为分析型数据),而基于倒排索引

2023-12-19

态。在每次导入事务提交后,Apache Doris 会记录导入事务更新的表信息,并估算表统计信息的健康度。当健康度低于配置参数时,Doris 将自动触发统计信息收集作业。为了降低统计信息作业的资源开销,Apache Doris 会自动采取采样

2023-03-17

ts-store:统一数据管理 将原始数据按时序优化的数据格式进行统一组织和存储,查询时,按指定时间范围和时间线 ID 查询数据,并根据过滤条件,返回目标数据 openGemini 的核心竞争力 openGemini 开源后持续版本迭代

2021-12-22

2021 年 11 月 29 日 ,Dominic Szablewski 创建一种新的图像文件格式规范 “QOI”,QOI 的全称是 Quite OK Image Format,直译为“相当棒的图像格式”。QOI 可以用于将 RGB 和 RGBA 图像无损地压缩为与 PNG 类似的大小,相同的文件大小下,QO

2023-10-10

的功能,例如一致哈希索引支持、支持Flink 1.17 以及支持更新和删除语句。此外此版本还升级了Hudi表版本,提示用户查阅下面提供的迁移指南。我们鼓励用户在采用 0.14.0 版本之前查看重大特性、重大变化和行为变更。 迁移指

2023-04-02

,在内核能力、工具链、兼容性方面全面增强。 具体更新内容包括: 一、内核能力增强 1 企业级特性 SQL PATCH 当业务语句出现由于数据等因素变化引起执行计划跳变,且出现严重的性能劣化,用户可通过SQL PATCH机制在线实

2022-11-04

部署。这意味着,业内首个兼容MySQL的单机分布式一体化数据库正式上线。 OceanBase 4.0降低了数据库使用门槛,打破了分布式数据库的边界,让分布式数据库走向通用。8月10日,在2022 OceanBase年度发布会上, OceanBase 4.0(小鱼Paet

2022-12-16

添加数组 kallsyms_seqs_of_names[],以排序后的 names 序号为索引,对应的内容为排序后的地址序号。例如:假设 NameX 在数组 kallsyms_seqs_of_names[] 中的索引为 'i',kallsyms_seqs_of_names[i] 的内容为'k',则 NameX 对应的地址为 kallsyms_addresses[k

2023-07-05

频写入的同时保证用户的查询稳定; 如何在上游数据更新及表结构变更的同时保证在线服务的连续性; 如何实现结构化与半结构化数据的统一存储与高效分析; 如何同时应对点查询、报表分析、即席查询、ETL/ELT 等不

2022-11-05

,继 2021 年 10 月 20 号云栖大会正式开源后的第一次版本更新,更新内容包括新增集群扩缩容、以及binlog生态兼容等特性,兼容 maxwell 和 debezium 增量日志订阅,以及新增其他众多新特性和修复若干问题。 2022年3月,PolarDB-X 正式

2021-11-22

日志详情存储于压缩更好的Hbase,仅将查询时需要的一些索引字段放在了ES。 以上作为一个常用的方案,为什么会成本高昂呢。 我们来简单计算一下,京东App某个模块(是一个模块,非整个App累计),单次用户请求,用

2024-03-19

录中进行聚合的查询,AQUMV 能显著减少查询时间。 频繁更新的大表:在数据频繁更新的环境中,使用 IMV 可以确保查询结果的实时性和准确性。 集群管理​ 支持以单计算节点部署集群。 在 v1.5.0 以前,用户部署一套 Cl

2023-02-17

种常用的 C/C++ 部署管理器,使向边缘和物联网设备交付更新更容易。 容器为王: Docker 加上 OCI 容器和 Helm Charts 的使用在过去两年中急剧增加,这表明越来越多的组织正在采用云原生方法并设计更大、更复杂的工件供 Metave

2023-04-15

erretDB 现在支持createIndexes命令。这将使你能够指定你想要索引的字段,以及要使用的索引类型(例如,升序、降序等)。 例如,假设你有一个 users 集合,包含几个字段,包括 "age"、"name"和 "email",你想为 "age" 字段创建一个索引